diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace-tmp/.keep b/dot_config/spicetify/CustomApps/spicetify-marketplace-tmp/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/CONTRIBUTING.md b/dot_config/spicetify/CustomApps/spicetify-marketplace/CONTRIBUTING.md new file mode 100644 index 0000000..22b3b19 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/CONTRIBUTING.md @@ -0,0 +1,151 @@ + +# Contributing to Spicetify-Marketplace + +First off, thanks for taking the time to contribute! ❤️ + +All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉 + +> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about: +> - Star the project +> - Tweet about it +> - Refer this project in your project's readme +> - Mention the project at local meetups and tell your friends/colleagues + + +## Table of Contents + +- [I Have a Question](#i-have-a-question) +- [I Want To Contribute](#i-want-to-contribute) + - [Reporting Bugs](#reporting-bugs) + - [Suggesting Enhancements](#suggesting-enhancements) + - [Your First Code Contribution](#your-first-code-contribution) + - [Improving The Documentation](#improving-the-documentation) +- [Styleguides](#styleguides) + - [Commit Messages](#commit-messages) +- [Join The Project Team](#join-the-project-team) + + + +## I Have a Question + +> If you want to ask a question, we assume that you have read the available [Documentation](). + +Before you ask a question, it is best to search for existing [Issues](https://github.com/CharlieS1103/spicetify-marketplaceissues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first. + +If you then still feel the need to ask a question and need clarification, we recommend the following: + +- Open an [Issue](https://github.com/CharlieS1103/spicetify-marketplaceissues/new). +- Provide as much context as you can about what you're running into. +- Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. + +We will then take care of the issue as soon as possible. + + + +## I Want To Contribute + +> ### Legal Notice +> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license. + +### Reporting Bugs + + +#### Before Submitting a Bug Report + +A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible. + +- Make sure that you are using the latest version. +- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](). If you are looking for support, you might want to check [this section](#i-have-a-question)). +- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](https://github.com/CharlieS1103/spicetify-marketplaceissues?q=label%3Abug). +- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue. +- Collect information about the bug: + - Stack trace (Traceback) + - OS, Platform and Version (Windows, Linux, macOS, x86, ARM) + - Version of the interpreter, compiler, SDK, runtime environment, package manager, depending on what seems relevant. + - Possibly your input and the output + - Can you reliably reproduce the issue? And can you also reproduce it with older versions? + + +#### How Do I Submit a Good Bug Report? + +> You must never report security related issues, vulnerabilities or bugs to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to . + + +We use GitHub issues to track bugs and errors. If you run into an issue with the project: + +- Open an [Issue](https://github.com/CharlieS1103/spicetify-marketplaceissues/new). (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.) +- Explain the behavior you would expect and the actual behavior. +- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case. +- Provide the information you collected in the previous section. + +Once it's filed: + +- The project team will label the issue accordingly. +- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. +- If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#your-first-code-contribution). + + + + +### Suggesting Enhancements + +This section guides you through submitting an enhancement suggestion for Spicetify-Marketplace, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions. + + +#### Before Submitting an Enhancement + +- Make sure that you are using the latest version. +- Read the [documentation]() carefully and find out if the functionality is already covered, maybe by an individual configuration. +- Perform a [search](https://github.com/CharlieS1103/spicetify-marketplaceissues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. +- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library. + + +#### How Do I Submit a Good Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://github.com/CharlieS1103/spicetify-marketplaceissues). + +- Use a **clear and descriptive title** for the issue to identify the suggestion. +- Provide a **step-by-step description of the suggested enhancement** in as many details as possible. +- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you. +- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. +- **Explain why this enhancement would be useful** to most Spicetify-Marketplace users. You may also want to point out the other projects that solved it better and which could serve as inspiration. + + + +### Your First Code Contribution + + +### Improving The Documentation + + +## Styleguides +### Commit Messages + + +## Join The Project Team + + + +## Attribution +This guide is based on the **contributing-gen**. [Make your own](https://github.com/bttger/contributing-gen)! \ No newline at end of file diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/LICENSE b/dot_config/spicetify/CustomApps/spicetify-marketplace/LICENSE new file mode 100644 index 0000000..26c9e9b --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 CharlieS1103 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/README.md b/dot_config/spicetify/CustomApps/spicetify-marketplace/README.md new file mode 100644 index 0000000..1d0b6a4 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/README.md @@ -0,0 +1,178 @@ +# spicetify-marketplace + +Download extensions and themes directly from within [Spicetify](https://github.com/khanhas/spicetify-cli). + +Made by [@theRealpadster](https://github.com/theRealPadster) and [@CharlieS1103](https://github.com/CharlieS1103). + +Based on the [reddit Custom App](https://github.com/khanhas/spicetify-cli/wiki/Custom-Apps#reddit) + +

+ + + + + + + + + + +

+ +## Disclaimer +All extensions are from community. They might contain unwanted code. Be careful what you install, or review the code before use. We hold no responsibility for these extensions or anything installed via this custom app. If you find a malicious extension, please [submit an issue](https://github.com/CharlieS1103/spicetify-marketplace/issues/new?template=malicious-extension-report.md) and we can add it to the [blacklist](blacklist.json). + +## Notes: +This project is a work-in-progress and is not finished, polished, or guaranteed to work. Use at your own risk. + +## Install + +### Auto Install (Windows) +Open Powershell and paste the following: + +```powershell +Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/CharlieS1103/spicetify-marketplace/master/install.ps1" | Invoke-Expression +``` +### Auto Install (MacOS and Linux) +Open a terminal and paste the following: + +```shell +curl -fsSL https://raw.githubusercontent.com/CharlieS1103/spicetify-marketplace/main/install.sh | sh +``` + +### Manual Install (recommended) + +Copy the `spicetify-marketplace` folder into your [Spicetify](https://github.com/khanhas/spicetify-cli) custom apps directory: +| **Platform** | **Path** | +|------------|------------------------------------------------------------------------------------------| +| **Linux** | `~/.config/spicetify/CustomApps/` or `$XDG_CONFIG_HOME/.config/spicetify/CustomApps/`| +| **MacOS** | `~/.config/spicetify/CustomApps/` or `$SPICETIFY_CONFIG/CustomApps/` | +| **Windows** | `%userprofile%/.spicetify/CustomApps/` | + +After putting the marketplace folder into the correct custom apps folder, run the following command to enable it: +``` +spicetify config custom_apps spicetify-marketplace +spicetify apply +``` +Note: Using the `config` command to add the custom app will always append the file name to the existing custom apps list. It does not replace the whole key's value. + +Or you can manually edit your `config-xpui.ini` file. Add your desired custom apps folder names in the `custom_apps` key, separated them by the | character. +Example: + +```ini +[AdditionalOptions] +... +custom_apps = reddit | spicetify-marketplace +``` + +Then run: + +``` +spicetify apply +``` +## Manual reset +If you lose access to the marketplace page, and therefore cannot access the setting, follow these steps: +- First ensure you have dev-tools enabled by running ``spicetify enable-devtool apply`` +- Open up console by right clicking anywhere on Spotify (that isn't an element), and clicking inspect element. +- Click the console tab in the devtools window that appears, and run the following command(in console) +- ``Marketplace.reset()`` +## Getting your extension/theme on Marketplace +In order to show up in the custom app, you'll need to make a public GitHub repo that meets these requirements: +* Have the matching **GitHub topic tag** ("**spicetify-extensions**" or "**spicetify-themes**") +* Have a valid **`manifest.json`** in the root folder (format outlined below) + +### Extension manifests +* `name`: Your extension name +* `description`: Description for your extension +* `preview`: A path to your preview image. Must be relative to your project root. +* `main`: The filename for your extension's main js file. Must be relative to your project root. +* `readme`: The filename for your extension's README file. Must be relative to your project root. +* `branch`: Optional branch to specify. Will use default branch if none. +* `authors`: Optional array of authors with names and urls. Will use repo owner if none. +* `tags`: Optional array of tags to show along with the card. + +e.g. +```json +[ + { + "name": "Spicetify-Hide-Podcasts", + "description": "Spicetify extension to hide podcasts.", + "preview": "screenshot.png", + "main": "hidePodcasts.js", + "readme": "README.md", + "authors": [ + { "name": "theRealPadster", "url": "https://github.com/theRealPadster" } + ], + "tags": ["podcasts"] + }, + { + "name": "extensionName(No .js included)", + "description": "Another Spicetify extension to show how to make a manifest.", + "preview": "https://i.imgur.com/foo.png", + "main": "filepathFromGitRepo/myExt.js", + "readme": "filepathFromGitRepo/README.md", + "branch": "my-branch" + }, +] +``` + +### Theme manifests +* `name`: Your theme name +* `description`: Description for your theme +* `preview`: A path to your preview image. Must be relative to your project root. +* `usercss`: A path to your user.css file. Must be relative to your project root. +* `schemes`: A path to your color.ini file. Must be relative to your project root. +* `readme`: The filename for your extension's README file. Must be relative to your project root. +* `branch`: Optional branch to specify. Will use default branch if none. +* `authors`: Optional array of authors with names and urls. Will use repo owner if none. +* `tags`: Optional array of tags to show along with the card. + +e.g. +```json +{ + "name": "Theme Name", + "description": "Theme description", + "preview": "filepathFromGitRepo/theme.png", + "readme": "README.md", + "usercss": "filepathFromGitRepo/user.css", + "schemes": "filepathFromGitRepo/color.ini", + "branch": "beta-release", + "authors": [ + { "name": "theRealPadster", "url": "https://github.com/theRealPadster" }, + { "name": "CharlieS1103", "url": "https://github.com/CharlieS1103" } + ], + "tags": ["dark", "minimal"] +} +``` + +### Further manifest notes +* If you have multiple extensions in the same repo (such as using subfolders), you can make your `manifest.json` an array, and include them all. +* Most fields also support http/https URLs (`preview`, `main`, `readme`, `usercss`, `schemes`) +* If all your extensions/themes are in the root folder, you don't need to include an absolute file path. + + +## Snippets +CSS snippets are rather basic to implement. We fetch them from this repo, so you'll need to submit a [pull request](https://github.com/CharlieS1103/spicetify-marketplace/compare). In order to be valid JSON, the CSS needs to be in one line. You can use [this website](https://tools.knowledgewalls.com/online-multiline-to-single-line-converter) to make the css snippet single line. Once you have your code segment ready, edit snippets.json and add the following, before submitting your PR. +```json +{ + "title": "Title", + "description": "description", + "code": "The single line css you have" +} +``` + +## Basic card loading functionality outline +1. `componentDidMount` triggers `newRequest`, which triggers `loadAmount(30)` +2. `loadAmount` calls `loadPage` in a loop until it has the requested amount of cards or runs out of results +3. `loadPage` calls `getRepos(page)` to get the next page of extensions. It queries the GitHub API for any repos with the "spicetify-extensions" topic. We'll likely add our own tag in the future, like "spicetify-marketplace". +4. The it loops through all the results and runs `fetchRepoExtensions()` or `getThemeRepos()`, which fetches a `manifest.json` file from the repo's root folder. If it finds one, we generate a card based on the info. +* Or if the active tab is "Installed", `loadPage` calls `getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedSnippets)` to get the extensions from the localstorage and generate the cards from there. +* Or if the active tab is "Snippets", `loadPage` calls `fetchCssSnippets()` and generates cards from the most recent `snippets.json` on GitHub. + +## Styling + Build Process +- The stylesheet is built using Sass (scss) with the [Parcel](https://parceljs.org/) bundler +- The main stylesheet is style/style.scss, which builds all the components, and compiles into style.css +- For development, you can run `npm run watch` to live update the files as you save them +- For building, you can run `npm run build` to just build the style.css file once + + diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/blacklist.json b/dot_config/spicetify/CustomApps/spicetify-marketplace/blacklist.json new file mode 100644 index 0000000..b9bdbe8 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/blacklist.json @@ -0,0 +1,5 @@ +{ + "repos": [ + "https://github.com/Darkempire78/Spotify-Customizer" + ] +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_eslintrc.json b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_eslintrc.json new file mode 100644 index 0000000..0255d8d --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_eslintrc.json @@ -0,0 +1,102 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended" + ], + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": 12 + }, + "plugins": [ + "react" + ], + "rules": { + "indent": [ + "error", + 4 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "double", + { "allowTemplateLiterals": true } + ], + "semi": [ + "error", + "always" + ], + "comma-dangle": [ + "error", + "always-multiline" + ], + "no-var": "error", + "space-before-blocks": "error", + "comma-spacing": [ + "error", { "before": false, "after": true } + ], + "no-trailing-spaces": "error", + "keyword-spacing": "error", + "no-multiple-empty-lines": [ + "error", { "max": 1 } + ], + "object-curly-spacing": [ + "error", "always" + ], + "key-spacing": [ + "error", { "beforeColon": false, "afterColon": true } + ] + }, + "settings": { + "react": { + "version": "detect" + } + }, + "globals": { + "Card": "readonly", + "OptionsMenu": "readonly", + "ReadmePage": "readonly", + "SortBox": "readonly", + "TopBarContent": "readonly", + + "react": "readonly", + "reactDOM": "readonly", + "Spicetify": "readonly", + "useEffect": "readonly", + "useState": "readonly", + + "LOCALSTORAGE_KEYS": "writable", + "ALL_TABS": "readonly", + "CONFIG": "writable", + "gridUpdateTabs": "writable", + "gridUpdatePostsVisual": "writable", + "openConfig": "writable", + "openReloadModal": "writable", + "openAddSnippetModal": "writable", + "sortConfig": "writable", + + "hexToRGB": "readonly", + "parseIni": "readonly", + "initializeSnippets": "writable", + "getLocalStorageDataFromKey": "writable", + "processAuthors": "readonly", + "generateSchemesOptions": "readonly", + "getBlacklist": "readonly", + "fetchCssSnippets": "readonly", + "resetMarketplace": "readonly", + + "LoadingIcon": "readonly", + "LoadMoreIcon": "readonly", + "DOWNLOAD_ICON": "readonly", + "SETTINGS_ICON": "readonly", + "TRASH_ICON": "readonly" + } +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/bug_report.yml b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..d73e4e8 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,36 @@ +name: 🐛 Bug report +description: Report errors or unexpected behavior +labels: [🐛 bug] +body: + - type: checkboxes + attributes: + label: 🔍 Is there already an issue for your problem? + description: Please make sure you are not creating an already submitted Issue. Check closed issues as well, because your issue may have already been fixed. + options: + - label: I have checked older issues, open and closed + required: true + - type: textarea + attributes: + label: ℹ Environment / Computer Info + description: Please provide the details of the system Spicetify is running on. + value: | + - Spotify version: + - Spicetify version: + placeholder: | + - Spotify version: Spotify for macOS (Apple Silicon) 1.1.77.643.g3c4c6fc6 + - Spicetify version: 2.8.5 + render: Markdown + validations: + required: true + - type: textarea + attributes: + label: 📝 Description + description: List steps to reproduce the error and details on what happens and what you expected to happen. + validations: + required: true + - type: textarea + attributes: + label: 📸 Screenshots + description: Place any screenshots of the issue here if needed + validations: + required: false diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/config.yml b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..38c3e2e --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: ✏️ Spicetify Docs + url: https://spicetify.app/ + about: Check out our documentation here. diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/feature_request.yml b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..e5661b9 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,21 @@ +name: ✨ Feature Request +description: Request a new feature or enhancement +labels: [✨ feature] +body: + - type: textarea + id: description + attributes: + label: 📝 Provide a description of the new feature + description: What is the expected behavior of the proposed feature? What is the scenario this would be used? + validations: + required: true + + - type: textarea + id: additional-information + attributes: + label: ➕ Additional Information + description: Give us some additional information on the feature request like proposed solutions, links, screenshots, etc. + + - type: markdown + attributes: + value: If you'd like to see this feature implemented, add a 👍 reaction to this post. diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/malicious_extension_report.yml b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/malicious_extension_report.yml new file mode 100644 index 0000000..1d7c420 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/ISSUE_TEMPLATE/malicious_extension_report.yml @@ -0,0 +1,24 @@ +name: 🦠 Malicious extension report +description: Submit any malicious extensions and we can add them to the denylist. +labels: [🦠 malicious extension] +body: + - type: input + id: extension-link + attributes: + label: 🔗 Extension Link + description: A link to the GitHub repo of the extension in question. + validations: + required: true + - type: textarea + id: extension-description + attributes: + label: 📝 Describe the Issue + description: What does the extension do that is unsafe/malicious? + validations: + required: true + - type: textarea + attributes: + label: 📸 Screenshots + description: If applicable, add screenshots to help explain your problem. + validations: + required: false diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/dependabot.yml b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/dependabot.yml new file mode 100644 index 0000000..8b5b8d0 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + ignore: + # ignore all patch updates + - dependency-name: "*" + update-types: ["version-update:semver-patch"] diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/workflows/lint.yml b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/workflows/lint.yml new file mode 100644 index 0000000..43b3143 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_github/workflows/lint.yml @@ -0,0 +1,34 @@ +name: Lint + +on: + # Trigger the workflow on push or pull request, + # but only for the main branch + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + run-linters: + name: Run linters + runs-on: ubuntu-latest + + steps: + - name: Check out Git repository + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: 16 + + # ESLint must be in `package.json` + - name: Install Node.js dependencies + run: npm ci + + - name: Run linters + uses: wearerequired/lint-action@v1 + with: + eslint: true diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_gitignore b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_gitignore new file mode 100644 index 0000000..1e37c21 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_gitignore @@ -0,0 +1,5 @@ +node_modules/ +dump.rdb +.DS_Store +.parcel-cache/ +*.map diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_nvmrc b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_nvmrc new file mode 100644 index 0000000..3027af3 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/dot_nvmrc @@ -0,0 +1 @@ +16.10.0 diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/executable_install.sh b/dot_config/spicetify/CustomApps/spicetify-marketplace/executable_install.sh new file mode 100644 index 0000000..81f2a95 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/executable_install.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# Copyright 2019 khanhas. GPL license. +# Edited from project Denoland install script (https://github.com/denoland/deno_install) + +set -e + + latest_release_uri="https://github.com/CharlieS1103/spicetify-marketplace/archive/refs/heads/main.zip" + echo "DOWNLOADING $latest_release_uri" + + download_uri="https://github.com/CharlieS1103/spicetify-marketplace/archive/refs/heads/main.zip" + +SPICETIFY_CONFIG_DIR="${SPICETIFY_CONFIG:-$HOME/.config/spicetify}" +INSTALL_DIR="$SPICETIFY_CONFIG_DIR/CustomApps" + +if [ ! -d "$INSTALL_DIR" ]; then + echo "MAKING FOLDER $INSTALL_DIR"; + mkdir -p "$INSTALL_DIR" +fi + +TAR_FILE="$INSTALL_DIR/spicetify-marketplace-main.zip" + +echo "DOWNLOADING $download_uri" +curl --fail --location --progress-bar --output "$TAR_FILE" "$download_uri" +cd "$INSTALL_DIR" + +echo "EXTRACTING" +unzip -q -d "$INSTALL_DIR/spicetify-marketplace-tmp" -o "$TAR_FILE" + +echo "REMOVING" +rm "$TAR_FILE" + +cd "$INSTALL_DIR/spicetify-marketplace-tmp" +# Check ~\.spicetify.\CustomApps directory already exists +# sp_dot_dir="$(dirname "$(../../spicetify -c)")/CustomApps/spicetify-marketplace" +# if [ ! -d "$sp_dot_dir" ]; then +# echo "MAKING FOLDER $sp_dot_dir"; +# mkdir -p "$sp_dot_dir" +# fi +echo "COPYING" +# echo "$sp_dot_dir" +rm -rf "$INSTALL_DIR/spicetify-marketplace/" +mv "$INSTALL_DIR/spicetify-marketplace-tmp/spicetify-marketplace-main" "$INSTALL_DIR/spicetify-marketplace" +# cp -rf "$INSTALL_DIR/spicetify-marketplace/." "$sp_dot_dir" +echo "INSTALLING" +cd "$INSTALL_DIR/spicetify-marketplace" + +if spicetify config custom_apps spicetify-marketplace ; then + echo "Added to config!" + echo "APPLYING" + spicetify apply +else + echo "Command failed" + echo "Please run \`spicetify config custom_apps spicetify-marketplace\` manually " + echo "Next run \`spicetify apply\`" +fi diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/extension.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/extension.js new file mode 100644 index 0000000..70611af --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/extension.js @@ -0,0 +1,496 @@ +// @ts-check + +// NAME: Spicetify Marketplace Extension +// AUTHOR: theRealPadster, CharlieS1103 +// DESCRIPTION: Companion extension for Spicetify Marketplace + +/// + +// Reset any Marketplace localStorage keys (effectively resetting it completely) +// eslint-disable-next-line no-redeclare +const resetMarketplace = () => { + console.log("Resetting Marketplace"); + + // Loop through and reset marketplace keys + Object.keys(localStorage).forEach((key) => { + if (key.startsWith("marketplace:")) { + localStorage.removeItem(key); + console.log(`Removed ${key}`); + } + }); + + console.log("Marketplace has been reset"); + location.reload(); +}; + +// Expose useful methods in global context +// @ts-ignore +window.Marketplace = { + // Should allow you to reset Marketplace from the dev console if it's b0rked + reset: resetMarketplace, +}; + +// eslint-disable-next-line no-redeclare +const hexToRGB = (hex) => { + if (hex.length === 3) { + hex = hex.split("").map((char) => char + char).join(""); + } else if (hex.length != 6) { + throw "Only 3- or 6-digit hex colours are allowed."; + } else if (hex.match(/[^0-9a-f]/i)) { + throw "Only hex colours are allowed."; + } + + const aRgbHex = hex.match(/.{1,2}/g); + const aRgb = [ + parseInt(aRgbHex[0], 16), + parseInt(aRgbHex[1], 16), + parseInt(aRgbHex[2], 16), + ]; + return aRgb; +}; + +/** + * Get user, repo, and branch from a GitHub raw URL + * @param {string} url Github Raw URL + * @returns { { user: string, repo: string, branch: string, filePath: string } } + */ +const getParamsFromGithubRaw = (url) => { + // eslint-disable-next-line no-useless-escape + const regex_result = url.match(/https:\/\/raw\.githubusercontent\.com\/(?[^\/]+)\/(?[^\/]+)\/(?[^\/]+)\/(?.+$)/); + // e.g. https://raw.githubusercontent.com/CharlieS1103/spicetify-extensions/main/featureshuffle/featureshuffle.js + + const obj = { + user: regex_result ? regex_result.groups.user : null, + repo: regex_result ? regex_result.groups.repo : null, + branch: regex_result ? regex_result.groups.branch : null, + filePath: regex_result ? regex_result.groups.filePath : null, + }; + + return obj; +}; + +(async function MarketplaceExtension() { + const { LocalStorage } = Spicetify; + if (!(LocalStorage)) { + // console.log('Not ready, waiting...'); + setTimeout(MarketplaceExtension, 1000); + return; + } + + // TODO: can we reference/require/import common files between extension and custom app? + const LOCALSTORAGE_KEYS = { + "installedExtensions": "marketplace:installed-extensions", + "installedSnippets": "marketplace:installed-snippets", + "installedThemes": "marketplace:installed-themes", + "activeTab": "marketplace:active-tab", + "tabs": "marketplace:tabs", + // Theme installed store the localsorage key of the theme (e.g. marketplace:installed:NYRI4/Comfy-spicetify/user.css) + "themeInstalled": "marketplace:theme-installed", + "colorShift": "marketplace:colorShift", + }; + + const getLocalStorageDataFromKey = (key, fallback) => { + return JSON.parse(localStorage.getItem(key)) ?? fallback; + }; + + const initializeExtension = (extensionKey) => { + const extensionManifest = getLocalStorageDataFromKey(extensionKey); + // Abort if no manifest found or no extension URL (i.e. a theme) + if (!extensionManifest || !extensionManifest.extensionURL) return; + + console.log("Initializing extension: ", extensionManifest); + + const script = document.createElement("script"); + script.defer = true; + script.src = extensionManifest.extensionURL; + + // If it's a github raw script, use jsdelivr + if (script.src.indexOf("raw.githubusercontent.com") > -1) { + const { user, repo, branch, filePath } = getParamsFromGithubRaw(extensionManifest.extensionURL); + if (!user || !repo || !branch || !filePath) return; + script.src = `https://cdn.jsdelivr.net/gh/${user}/${repo}@${branch}/${filePath}`; + } + + script.src = `${script.src}?time=${Date.now()}`; + + document.body.appendChild(script); + }; + + /** + * Loop through the snippets and add the contents of the code as a style tag in the DOM + * @param { { title: string; description: string; code: string;}[] } snippets The snippets to initialize + */ + // TODO: keep this in sync with the index.js file + const initializeSnippets = (snippets) => { + // Remove any existing marketplace snippets + const existingSnippets = document.querySelector("style.marketplaceSnippets"); + if (existingSnippets) existingSnippets.remove(); + + const style = document.createElement("style"); + const styleContent = snippets.reduce((accum, snippet) => { + accum += `/* ${snippet.title} - ${snippet.description} */\n`; + accum += `${snippet.code}\n`; + return accum; + }, ""); + + style.innerHTML = styleContent; + style.classList.add("marketplaceSnippets"); + document.head.appendChild(style); + }; + + // NOTE: Keep in sync with index.js + const injectColourScheme = (scheme) => { + try { + // Remove any existing Spicetify scheme + const existingColorsCSS = document.querySelector("link[href='colors.css']"); + if (existingColorsCSS) existingColorsCSS.remove(); + + // Remove any existing marketplace scheme + const existingMarketplaceSchemeCSS = document.querySelector("style.marketplaceCSS.marketplaceScheme"); + if (existingMarketplaceSchemeCSS) existingMarketplaceSchemeCSS.remove(); + + // Add new marketplace scheme + const schemeTag = document.createElement("style"); + schemeTag.classList.add("marketplaceCSS"); + schemeTag.classList.add("marketplaceScheme"); + // const theme = document.querySelector('#theme'); + let injectStr = ":root {"; + + const themeIniKeys = Object.keys(scheme); + themeIniKeys.forEach((key) => { + injectStr += `--spice-${key}: #${scheme[key]};`; + injectStr += `--spice-rgb-${key}: ${hexToRGB(scheme[key])};`; + }); + injectStr += "}"; + schemeTag.innerHTML = injectStr; + document.head.appendChild(schemeTag); + } catch (error) { + console.warn(error); + } + }; + + /** + * Update the user.css in the DOM + * @param {string} userCSS The contents of the new user.css + */ + const injectUserCSS = (userCSS) => { + try { + // Remove any existing Spicetify user.css + const existingUserThemeCSS = document.querySelector("link[href='user.css']"); + if (existingUserThemeCSS) existingUserThemeCSS.remove(); + + // Remove any existing marketplace scheme + const existingMarketplaceUserCSS = document.querySelector("style.marketplaceCSS.marketplaceUserCSS"); + if (existingMarketplaceUserCSS) existingMarketplaceUserCSS.remove(); + + // Add new marketplace scheme + const userCssTag = document.createElement("style"); + userCssTag.classList.add("marketplaceCSS"); + userCssTag.classList.add("marketplaceUserCSS"); + userCssTag.innerHTML = userCSS; + document.head.appendChild(userCssTag); + } catch (error) { + console.warn(error); + } + }; + + // I guess this is okay to not have an end condition on the interval + // because if they turn the setting on or off, + // closing the settings modal will reload the page + const initColorShiftLoop = (schemes) => { + let i = 0; + const NUM_SCHEMES = Object.keys(schemes).length; + setInterval(() => { + // Resets to zero when passes the last scheme + i = i % NUM_SCHEMES; + const style = document.createElement("style"); + style.className = "colorShift-style"; + style.innerHTML = `* { + transition-duration: 400ms; + } + main-type-bass { + transition-duration: unset !important; + }`; + + document.body.appendChild(style); + injectColourScheme(Object.values(schemes)[i]); + i++; + style.remove(); + }, 60 * 1000); + }; + + const parseCSS = async (themeManifest) => { + + const userCssUrl = themeManifest.cssURL.indexOf("raw.githubusercontent.com") > -1 + // TODO: this should probably be the URL stored in localstorage actually (i.e. put this url in localstorage) + ? `https://cdn.jsdelivr.net/gh/${themeManifest.user}/${themeManifest.repo}@${themeManifest.branch}/${themeManifest.manifest.usercss}` + : themeManifest.cssURL; + // TODO: Make this more versatile + const assetsUrl = userCssUrl.replace("/user.css", "/assets/"); + + console.log("Parsing CSS: ", userCssUrl); + let css = await fetch(`${userCssUrl}?time=${Date.now()}`).then(res => res.text()); + // console.log("Parsed CSS: ", css); + + let urls = css.matchAll(/url\(['|"](?.+?)['|"]\)/gm) || []; + + for (const match of urls) { + const url = match.groups.path; + // console.log(url); + // If it's a relative URL, transform it to HTTP URL + if (!url.startsWith("http") && !url.startsWith("data")) { + const newUrl = assetsUrl + url.replace(/\.\//g, ""); + css = css.replace(url, newUrl); + } + } + + // console.log("New CSS: ", css); + + return css; + }; + + const initializeTheme = async (themeKey) => { + const themeManifest = getLocalStorageDataFromKey(themeKey); + // Abort if no manifest found + if (!themeManifest) { + console.log("No theme manifest found"); + return; + } + + console.log("Initializing theme: ", themeManifest); + + // Inject colour scheme if found + if (themeManifest.schemes) { + const activeScheme = themeManifest.schemes[themeManifest.activeScheme]; + injectColourScheme(activeScheme); + + if (localStorage.getItem(LOCALSTORAGE_KEYS.colorShift) === "true") { + initColorShiftLoop(themeManifest.schemes); + } + } else { + console.warn("No schemes found for theme"); + } + + // Remove default css + // TODO: what about if we remove the theme? Should we re-add the user.css/colors.css? + // const existingUserThemeCSS = document.querySelector("link[href='user.css']"); + // if (existingUserThemeCSS) existingUserThemeCSS.remove(); + + // Remove any existing marketplace theme + const existingMarketplaceThemeCSS = document.querySelector("link.marketplaceCSS"); + if (existingMarketplaceThemeCSS) existingMarketplaceThemeCSS.remove(); + + // Add theme css + const userCSS = await parseCSS(themeManifest); + injectUserCSS(userCSS); + + // Inject any included js + if (themeManifest.include && themeManifest.include.length) { + // console.log("Including js", installedThemeData.include); + + themeManifest.include.forEach((script) => { + const newScript = document.createElement("script"); + let src = script; + + // If it's a github raw script, use jsdelivr + if (script.indexOf("raw.githubusercontent.com") > -1) { + const { user, repo, branch, filePath } = getParamsFromGithubRaw(script); + src = `https://cdn.jsdelivr.net/gh/${user}/${repo}@${branch}/${filePath}`; + } + // console.log({src}); + newScript.src = `${src}?time=${Date.now()}`; + newScript.classList.add("marketplaceScript"); + document.body.appendChild(newScript); + }); + } + }; + + console.log("Loaded Marketplace extension"); + + const installedThemeKey = LocalStorage.get(LOCALSTORAGE_KEYS.themeInstalled); + if (installedThemeKey) initializeTheme(installedThemeKey); + + const installedSnippetKeys = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedSnippets, []); + const installedSnippets = installedSnippetKeys.map((key) => getLocalStorageDataFromKey(key)); + initializeSnippets(installedSnippets); + + const installedExtensions = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedExtensions, []); + installedExtensions.forEach((extensionKey) => initializeExtension(extensionKey)); +})(); + +const ITEMS_PER_REQUEST = 100; + +async function Blacklist() { + const url = "https://raw.githubusercontent.com/CharlieS1103/spicetify-marketplace/main/blacklist.json"; + const jsonReturned = await fetch(url).then(res => res.json()).catch(() => {}); + return jsonReturned.repos; +} + +/** + * TODO + * @param {"theme"|"extension"} type The repo type + * @param {number} pageNum The page number + * @returns TODO + */ +async function queryRepos(type, pageNum = 1) { + const BLACKLIST = window.sessionStorage.getItem("marketplace:blacklist"); + + let url = `https://api.github.com/search/repositories?per_page=${ITEMS_PER_REQUEST}`; + if (type === "extension") url += `&q=${encodeURIComponent("topic:spicetify-extensions")}`; + else if (type === "theme") url += `&q=${encodeURIComponent("topic:spicetify-themes")}`; + if (pageNum) url += `&page=${pageNum}`; + + const allRepos = await fetch(url).then(res => res.json()).catch(() => []); + if (!allRepos.items) { + Spicetify.showNotification("Too Many Requests, Cool Down."); + } + + const filteredResults = { + ...allRepos, + page_count: allRepos.items.length, + items: allRepos.items.filter(item => !BLACKLIST.includes(item.html_url)), + }; + + return filteredResults; +} + +/** + * TODO + * @param {"theme"|"extension"} type The repo type + * @param {number} pageNum The page number + * @returns TODO + */ +async function loadPageRecursive(type, pageNum) { + const pageOfRepos = await queryRepos(type, pageNum); + appendInformationToLocalStorage(pageOfRepos, type); + + // Sets the amount of items that have thus been fetched + const soFarResults = ITEMS_PER_REQUEST * (pageNum - 1) + pageOfRepos.page_count; + console.log({ pageOfRepos }); + const remainingResults = pageOfRepos.total_count - soFarResults; + + // If still have more results, recursively fetch next page + console.log(`Parsed ${soFarResults}/${pageOfRepos.total_count} ${type}s`); + if (remainingResults > 0) return await loadPageRecursive(type, pageNum + 1); // There are more results. currentPage + 1 is the next page to fetch. + else console.log(`No more ${type} results`); +} + +(async function initializePreload() { + console.log("Preloading extensions and themes..."); + window.sessionStorage.clear(); + const BLACKLIST = await Blacklist(); + window.sessionStorage.setItem("marketplace:blacklist", JSON.stringify(BLACKLIST)); + + // TODO: does this work? + // The recursion isn't super clean... + + // Begin by getting the themes and extensions from github + // const [extensionReposArray, themeReposArray] = await Promise.all([ + await Promise.all([ + loadPageRecursive("extension", 1), + loadPageRecursive("theme", 1), + ]); + + // let extensionsNextPage = 1; + // let themesNextPage = 1; + // do { + // extensionReposArray = await loadPage("extension", extensionsNextPage); + // appendInformationToLocalStorage(extensionReposArray, "extension"); + // } while (extensionsNextPage); + + // do { + // themeReposArray = await loadPage("theme", themesNextPage); + // appendInformationToLocalStorage(themeReposArray, "theme"); + // } while (themesNextPage); +})(); + +async function appendInformationToLocalStorage(array, type) { + // This system should make it so themes and extensions are stored concurrently + for (const repo of array.items) { + const data = (type === "theme") + ? await fetchThemeManifest(repo.contents_url, repo.default_branch) + : await fetchExtensionManifest(repo.contents_url, repo.default_branch); + if (data) { + addToSessionStorage(data); + await sleep(5000); + } + } +} + +// This function is used to fetch manifest of a theme and return it +async function fetchThemeManifest(contents_url, branch) { + try { + const regex_result = contents_url.match(/https:\/\/api\.github\.com\/repos\/(?.+)\/(?.+)\/contents/); + // TODO: err handling? + if (!regex_result || !regex_result.groups) return null; + let { user, repo } = regex_result.groups; + let manifests = await getRepoManifest(user, repo, branch); + // If the manifest returned is not an array, initialize it as one + if (!Array.isArray(manifests)) manifests = [manifests]; + manifests.user = user; + manifests.repo = repo; + if (manifests[0] && manifests[0].name && manifests[0].usercss && manifests[0].description) { + return manifests; + } + return null; + } + catch (err) { + // console.warn(contents_url, err); + return null; + } +} + +// This function is used to fetch manifest of an extension and return it +async function fetchExtensionManifest(contents_url, branch) { + try { + // TODO: use the original search full_name ("theRealPadster/spicetify-hide-podcasts") or something to get the url better? + const regex_result = contents_url.match(/https:\/\/api\.github\.com\/repos\/(?.+)\/(?.+)\/contents/); + // TODO: err handling? + if (!regex_result || !regex_result.groups) return null; + const { user, repo } = regex_result.groups; + let manifests = await getRepoManifest(user, repo, branch); + // If the manifest returned is not an array, initialize it as one + if (!Array.isArray(manifests)) manifests = [manifests]; + manifests.user = user; + manifests.repo = repo; + if (manifests[0] && manifests[0].name && manifests[0].description && manifests[0].main) { + return manifests; + } + return null; + } + catch (err) { + // console.warn(contents_url, err); + return null; + } +} + +async function getRepoManifest(user, repo, branch) { + const sessionStorageItem = window.sessionStorage.getItem(`${user}-${repo}`); + const failedSessionStorageItems = window.sessionStorage.getItem("noManifests"); + if (sessionStorageItem) { + return null; + } + const url = `https://raw.githubusercontent.com/${user}/${repo}/${branch}/manifest.json`; + if (failedSessionStorageItems?.includes(url)) { + return null; + } + return await fetch(url).then(res => res.json()).catch(() => addToSessionStorage([url], "noManifests")); +} + +// This function appends an array to session storage +function addToSessionStorage(items, key) { + if (!items || items == null) return; + items.forEach(item => { + if (!key) key = `${items.user}-${items.repo}`; + // If the key already exists, it will append to it instead of overwriting it + const existing = window.sessionStorage.getItem(key); + const parsed = existing ? JSON.parse(existing) : []; + parsed.push(item); + window.sessionStorage.setItem(key, JSON.stringify(parsed)); + }); +} + +// This function is used to sleep for a certain amount of time +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/index.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/index.js new file mode 100644 index 0000000..d3e1777 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/index.js @@ -0,0 +1,838 @@ +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// + +/* eslint-disable no-redeclare, no-unused-vars */ +/** @type {React} */ +const react = Spicetify.React; +/** @type {import("react-dom")} */ +const reactDOM = Spicetify.ReactDOM; +const { + URI, + React: { useState, useEffect, useCallback }, + // @ts-ignore + Platform: { History }, +} = Spicetify; +/* eslint-enable no-redeclare, no-unused-vars */ + +// eslint-disable-next-line no-redeclare +const LOCALSTORAGE_KEYS = { + "installedExtensions": "marketplace:installed-extensions", + "installedSnippets": "marketplace:installed-snippets", + "installedThemes": "marketplace:installed-themes", + "activeTab": "marketplace:active-tab", + "tabs": "marketplace:tabs", + "sortBy": "marketplace:sort-by", + // Theme installed store the localsorage key of the theme (e.g. marketplace:installed:NYRI4/Comfy-spicetify/user.css) + "themeInstalled": "marketplace:theme-installed", +}; + +// Define a function called "render" to specify app entry point +// This function will be used to mount app to main view. +// eslint-disable-next-line no-unused-vars +function render() { + const { location } = Spicetify.Platform.History; + + // If page state set to display readme, render it + // (This location state data comes from Card.openReadme()) + if (location.pathname === "/spicetify-marketplace/readme") { + return react.createElement(ReadmePage, { + title: "Spicetify Marketplace - Readme", + data: location.state.data, + }); + } // Otherwise, render the main Grid + else { + return react.createElement(Grid, { title: "Spicetify Marketplace" }); + } +} + +// Initalize topbar tabs +// Data initalized in TabBar.js +// eslint-disable-next-line no-redeclare +const ALL_TABS = [ + { name: "Extensions", enabled: true }, + { name: "Themes", enabled: true }, + { name: "Snippets", enabled: true }, + { name: "Installed", enabled: true }, +]; +let tabsString = localStorage.getItem(LOCALSTORAGE_KEYS.tabs); +let tabs = []; +try { + tabs = JSON.parse(tabsString); + if (!Array.isArray(tabs)) { + throw new Error("Could not parse marketplace tabs key"); + } else if (tabs.length === 0) { + throw new Error("Empty marketplace tabs key"); + } else if (tabs.filter(tab => !tab).length > 0) { + throw new Error("Falsey marketplace tabs key"); + } +} catch { + tabs = ALL_TABS; + localStorage.setItem(LOCALSTORAGE_KEYS.tabs, JSON.stringify(tabs)); +} + +// Get active theme +let schemes = []; +let activeScheme = null; +try { + const installedThemeKey = localStorage.getItem(LOCALSTORAGE_KEYS.themeInstalled); + if (installedThemeKey) { + const installedThemeDataStr = localStorage.getItem(installedThemeKey); + if (!installedThemeDataStr) throw new Error("No installed theme data"); + + const installedTheme = JSON.parse(installedThemeDataStr); + schemes = installedTheme.schemes; + activeScheme = installedTheme.activeScheme; + } else { + console.log("No theme set as installed"); + } +} catch (err) { + console.error(err); +} + +// eslint-disable-next-line no-redeclare +const CONFIG = { + // Fetch the settings and set defaults. Used in Settings.js + visual: { + stars: JSON.parse(localStorage.getItem("marketplace:stars")) ?? true, + tags: JSON.parse(localStorage.getItem("marketplace:tags")) ?? true, + hideInstalled: JSON.parse(localStorage.getItem("marketplace:hideInstalled")) ?? false, + colorShift: JSON.parse(localStorage.getItem("marketplace:colorShift")) ?? false, + // Legacy from reddit app... + type: JSON.parse(localStorage.getItem("marketplace:type")) ?? false, + // I was considering adding watchers as "followers" but it looks like the value is a duplicate + // of stargazers, and the subscribers_count isn't returned in the main API call we make + // https://github.community/t/bug-watchers-count-is-the-duplicate-of-stargazers-count/140865/4 + followers: JSON.parse(localStorage.getItem("marketplace:followers")) ?? false, + }, + tabs, + activeTab: localStorage.getItem(LOCALSTORAGE_KEYS.activeTab), + theme: { + activeThemeKey: localStorage.getItem(LOCALSTORAGE_KEYS.themeInstalled) || null, + schemes, + activeScheme, + }, +}; + +if (!CONFIG.activeTab || !CONFIG.tabs.filter(tab => tab.name === CONFIG.activeTab).length) { + CONFIG.activeTab = CONFIG.tabs[0].name; +} + +// Fetches the sorting options, fetched from SortBox.js +// eslint-disable-next-line no-redeclare +let sortConfig = { + by: localStorage.getItem(LOCALSTORAGE_KEYS.sortBy) || "top", +}; +let cardList = []; +let endOfList = false; +let lastScroll = 0; +let requestQueue = []; +let requestPage = null; +// Max GitHub API items per page +// https://docs.github.com/en/rest/reference/search#search-repositories +const ITEMS_PER_REQUEST = 100; + +let BLACKLIST = []; + +// eslint-disable-next-line no-redeclare, no-unused-vars +let gridUpdateTabs, gridUpdatePostsVisual; + +class Grid extends react.Component { + constructor(props) { + super(props); + Object.assign(this, props); + this.state = { + cards: [], + tabs: CONFIG.tabs, + rest: true, + endOfList: endOfList, + schemes: CONFIG.theme.schemes, + activeScheme: CONFIG.theme.activeScheme, + activeThemeKey: CONFIG.theme.activeThemeKey, + }; + } + + // TODO: should I put this in Grid state? + getInstalledTheme() { + const installedThemeKey = localStorage.getItem(LOCALSTORAGE_KEYS.themeInstalled); + if (!installedThemeKey) return null; + + const installedThemeDataStr = localStorage.getItem(installedThemeKey); + if (!installedThemeDataStr) return null; + + const installedTheme = JSON.parse(installedThemeDataStr); + return installedTheme; + } + + newRequest(amount) { + cardList = []; + const queue = []; + requestQueue.unshift(queue); + this.loadAmount(queue, amount); + } + + /** + * @param {Object} item + * @param {"extension" | "theme" | "snippet"} type The type of card + */ + appendCard(item, type) { + item.visual = CONFIG.visual; + // Set key prop so items don't get stuck when switching tabs + item.key = `${CONFIG.activeTab}:${item.title}`; + item.type = type; + // Pass along the functions to update Grid state on apply + item.updateColourSchemes = this.updateColourSchemes.bind(this); + item.updateActiveTheme = this.setActiveTheme.bind(this); + // This isn't used other than to trigger a re-render + item.activeThemeKey = this.state.activeThemeKey; + cardList.push(react.createElement(Card, item)); + this.setState({ cards: cardList }); + } + + // TODO: this isn't currently used, but it will be used for sorting (based on the SortBox component) + updateSort(sortByValue) { + if (sortByValue) { + sortConfig.by = sortByValue; + localStorage.setItem(LOCALSTORAGE_KEYS.sortBy, sortByValue); + } + + requestPage = null; + cardList = []; + this.setState({ + cards: [], + rest: false, + endOfList: false, + }); + endOfList = false; + + this.newRequest(ITEMS_PER_REQUEST); + } + + updateTabs() { + this.setState({ + tabs: [...CONFIG.tabs], + }); + } + + updatePostsVisual() { + cardList = cardList.map(card => { + return react.createElement(Card, card.props); + }); + this.setState({ cards: [...cardList] }); + } + + switchTo(value) { + CONFIG.activeTab = value; + localStorage.setItem(LOCALSTORAGE_KEYS.activeTab, value); + cardList = []; + requestPage = null; + this.setState({ + cards: [], + rest: false, + endOfList: false, + }); + endOfList = false; + + this.newRequest(ITEMS_PER_REQUEST); + } + + // This is called from loadAmount in a loop until it has the requested amount of cards or runs out of results + // Returns the next page number to fetch, or null if at end + // TODO: maybe we should rename `loadPage()`, since it's slightly confusing when we have github pages as well + async loadPage(queue) { + if (CONFIG.activeTab === "Extensions") { + let pageOfRepos = await getExtensionRepos(requestPage); + for (const repo of pageOfRepos.items) { + let extensions = await fetchExtensionManifest(repo.contents_url, repo.default_branch, repo.stargazers_count); + + // I believe this stops the requests when switching tabs? + if (requestQueue.length > 1 && queue !== requestQueue[0]) { + // Stop this queue from continuing to fetch and append to cards list + return -1; + } + + if (extensions && extensions.length) { + // console.log(`${repo.name} has ${extensions.length} extensions:`, extensions); + extensions.forEach((extension) => this.appendCard(extension, "extension")); + } + } + + // First result is null or -1 so it coerces to 1 + const currentPage = requestPage > -1 && requestPage ? requestPage : 1; + // Sets the amount of items that have thus been fetched + const soFarResults = ITEMS_PER_REQUEST * (currentPage - 1) + pageOfRepos.page_count; + const remainingResults = pageOfRepos.total_count - soFarResults; + + // If still have more results, return next page number to fetch + console.log(`Parsed ${soFarResults}/${pageOfRepos.total_count} extensions`); + if (remainingResults > 0) return currentPage + 1; + else console.log("No more extension results"); + } else if (CONFIG.activeTab === "Installed") { + const installedStuff = { + theme: getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedThemes, []), + extension: getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedExtensions, []), + snippet: getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedSnippets, []), + }; + + for (const type in installedStuff) { + if (installedStuff[type].length) { + installedStuff[type].forEach(async (itemKey) => { + // TODO: err handling + const extension = JSON.parse(localStorage.getItem(itemKey)); + // I believe this stops the requests when switching tabs? + if (requestQueue.length > 1 && queue !== requestQueue[0]) { + // Stop this queue from continuing to fetch and append to cards list + return -1; + } + + // @ts-ignore + this.appendCard(extension, type); + }); + } + } + + // Don't need to return a page number because + // installed extension do them all in one go, since it's local + } else if (CONFIG.activeTab == "Themes") { + let pageOfRepos = await getThemeRepos(requestPage); + for (const repo of pageOfRepos.items) { + + let themes = await fetchThemeManifest(repo.contents_url, repo.default_branch, repo.stargazers_count); + // I believe this stops the requests when switching tabs? + if (requestQueue.length > 1 && queue !== requestQueue[0]) { + // Stop this queue from continuing to fetch and append to cards list + return -1; + } + + if (themes && themes.length) { + themes.forEach((theme) => this.appendCard(theme, "theme")); + } + } + + // First request is null, so coerces to 1 + const currentPage = requestPage > -1 && requestPage ? requestPage : 1; + // -1 because the page number is 1-indexed + const soFarResults = ITEMS_PER_REQUEST * (currentPage - 1) + pageOfRepos.page_count; + const remainingResults = pageOfRepos.total_count - soFarResults; + + console.log(`Parsed ${soFarResults}/${pageOfRepos.total_count} themes`); + if (remainingResults > 0) return currentPage + 1; + else console.log("No more theme results"); + } else if (CONFIG.activeTab == "Snippets") { + let snippets = await fetchCssSnippets(); + + if (requestQueue.length > 1 && queue !== requestQueue[0]) { + // Stop this queue from continuing to fetch and append to cards list + return -1; + } + if (snippets && snippets.length) { + snippets.forEach((snippet) => this.appendCard(snippet, "snippet")); + } + + } + + this.setState({ rest: true, endOfList: true }); + endOfList = true; + return null; + } + /** + * Load a new set of extensions + * @param {any} queue An array of the extensions to be loaded + * @param {number} [quantity] Amount of extensions to be loaded per page. (Defaults to ITEMS_PER_REQUEST constant) + */ + async loadAmount(queue, quantity = ITEMS_PER_REQUEST) { + this.setState({ rest: false }); + quantity += cardList.length; + + requestPage = await this.loadPage(queue); + + while ( + requestPage && + requestPage !== -1 && + cardList.length < quantity && + !this.state.endOfList + ) { + requestPage = await this.loadPage(queue); + } + + if (requestPage === -1) { + requestQueue = requestQueue.filter(a => a !== queue); + return; + } + + // Remove this queue from queue list + requestQueue.shift(); + this.setState({ rest: true }); + } + + /** + * Load more items if there are more items to load. + * @returns {void} + */ + loadMore() { + if (this.state.rest && !endOfList) { + this.loadAmount(requestQueue[0], ITEMS_PER_REQUEST); + } + } + + /** + * Update the colour schemes in the state + dropdown, and inject the active one + * @param {any} schemes Object with the colour schemes + * @param {string} activeScheme The name of the active colour scheme (a key in the schemes object) + */ + updateColourSchemes(schemes, activeScheme) { + console.log("updateColourSchemes", schemes, activeScheme); + CONFIG.theme.schemes = schemes; + CONFIG.theme.activeScheme = activeScheme; + + if (schemes && schemes[activeScheme]) { + this.injectColourScheme(CONFIG.theme.schemes[activeScheme]); + } else { + // Reset schemes if none sent + this.injectColourScheme(null); + } + + // Save to localstorage + const installedThemeKey = localStorage.getItem(LOCALSTORAGE_KEYS.themeInstalled); + const installedThemeDataStr = localStorage.getItem(installedThemeKey); + const installedThemeData = JSON.parse(installedThemeDataStr); + installedThemeData.activeScheme = activeScheme; + localStorage.setItem(installedThemeKey, JSON.stringify(installedThemeData)); + + this.setState({ + schemes, + activeScheme, + }); + } + + // NOTE: Keep in sync with extension.js + injectColourScheme (scheme) { + // Remove any existing Spicetify scheme + const existingColorsCSS = document.querySelector("link[href='colors.css']"); + if (existingColorsCSS) existingColorsCSS.remove(); + + // Remove any existing marketplace scheme + const existingMarketplaceSchemeCSS = document.querySelector("style.marketplaceCSS.marketplaceScheme"); + if (existingMarketplaceSchemeCSS) existingMarketplaceSchemeCSS.remove(); + + if (scheme) { + // Add new marketplace scheme + const schemeTag = document.createElement("style"); + schemeTag.classList.add("marketplaceCSS"); + schemeTag.classList.add("marketplaceScheme"); + + let injectStr = ":root {"; + const themeIniKeys = Object.keys(scheme); + themeIniKeys.forEach((key) => { + injectStr += `--spice-${key}: #${scheme[key]};`; + injectStr += `--spice-rgb-${key}: ${hexToRGB(scheme[key])};`; + }); + injectStr += "}"; + schemeTag.innerHTML = injectStr; + document.head.appendChild(schemeTag); + } else { + // Re-add default user.css + let originalColorsCSS = document.createElement("link"); + originalColorsCSS.setAttribute("rel", "stylesheet"); + originalColorsCSS.setAttribute("href", "colors.css"); + originalColorsCSS.classList.add("userCSS"); + document.head.appendChild(originalColorsCSS); + } + } + + /** + * The componentDidMount() method is called when the component is first loaded. + * It checks if the cardList is already loaded. If it is, it checks if the lastScroll value is + greater than 0. + * If it is, it scrolls to the lastScroll value. If it isn't, it scrolls to the top of the page. + * If the cardList isn't loaded, it loads the cardList. + */ + async componentDidMount() { + gridUpdateTabs = this.updateTabs.bind(this); + gridUpdatePostsVisual = this.updatePostsVisual.bind(this); + + const viewPort = document.querySelector(".os-viewport"); + this.checkScroll = this.isScrolledBottom.bind(this); + viewPort.addEventListener("scroll", this.checkScroll); + + if (cardList.length) { // Already loaded + if (lastScroll > 0) { + viewPort.scrollTo(0, lastScroll); + } + return; + } + + // Load blacklist + BLACKLIST = await getBlacklist(); + this.newRequest(ITEMS_PER_REQUEST); + } + + /** + * When the component is unmounted, remove the scroll event listener. + * @returns {void} + */ + componentWillUnmount() { + gridUpdateTabs = gridUpdatePostsVisual = null; + const viewPort = document.querySelector(".os-viewport"); + lastScroll = viewPort.scrollTop; + viewPort.removeEventListener("scroll", this.checkScroll); + } + + /** + * If the user has scrolled to the bottom of the page, load more posts. + * @param event - The event object that is passed to the callback function. + * @returns {void} + */ + isScrolledBottom(event) { + const viewPort = event.target; + if ((viewPort.scrollTop + viewPort.clientHeight) >= viewPort.scrollHeight) { + // At bottom, load more posts + this.loadMore(); + } + } + + setActiveTheme(themeKey) { + CONFIG.theme.activeThemeKey = themeKey; + this.setState({ activeThemeKey: themeKey }); + } + + // TODO: clean this up. It worked when I was using state, but state seems like pointless overhead. + getActiveScheme() { + return this.state.activeScheme; + } + + render() { + return react.createElement("section", { + className: "contentSpacing", + }, + react.createElement("div", { + className: "marketplace-header", + }, react.createElement("h1", null, this.props.title), + // Start of marketplace-header__right + react.createElement("div", { + className: "marketplace-header__right", + }, + // Show colour scheme dropdown if there is a theme with schemes installed + this.state.activeScheme ? react.createElement(SortBox, { + onChange: (value) => this.updateColourSchemes(this.state.schemes, value), + // TODO: Make this compatible with the changes to the theme install process: need to create a method to update the scheme options without a full reload. + sortBoxOptions: generateSchemesOptions(this.state.schemes), + // It doesn't work when I directly use CONFIG.theme.activeScheme in the sortBySelectedFn + // because it hardcodes the value into the fn + sortBySelectedFn: (a) => a.key === this.getActiveScheme(), + }) : null, + react.createElement("button", { + className: "marketplace-settings-button", + id: "marketplace-settings-button", + + onClick: openConfig, + }, SETTINGS_ICON), + // End of marketplace-header__right + ), + // TODO: Add search bar and sort functionality + // react.createElement("div", { + // className: "searchbar--bar__wrapper", + // }, react.createElement("input", { + // className: "searchbar-bar", + // type: "text", + // placeholder: "Search for Extensions?", + // })), + ), + [ // Add a header and grid for each card type if it has any cards + { handle: "extension", name: "Extensions" }, + { handle: "theme", name: "Themes" }, + { handle: "snippet", name: "Snippets" }, + ].map((cardType) => { + const cardsOfType = cardList.filter((card) => card.props.type === cardType.handle) + .map((card) => { + // Clone the cards and update the prop to trigger re-render + // TODO: is it possible to only re-render the theme cards whose status have changed? + const cardElement = react.cloneElement(card, { + activeThemeKey: this.state.activeThemeKey, + }); + return cardElement; + }); + + if (cardsOfType.length) { + return [ + // Add a header for the card type + react.createElement("h2", + { className: "marketplace-card-type-heading" }, + cardType.name), + // Add the grid and cards + react.createElement("div", { + className: "marketplace-grid main-gridContainer-gridContainer main-gridContainer-fixedWidth", + "data-tab": CONFIG.activeTab, + style: { + "--minimumColumnWidth": "180px", + "--column-width": "minmax(var(--minimumColumnWidth),1fr)", + "--column-count": "auto-fill", + "--grid-gap": "24px", + }, + }, cardsOfType)]; + } else { + return null; + } + }), react.createElement("footer", { + style: { + margin: "auto", + textAlign: "center", + }, + }, !this.state.endOfList && (this.state.rest ? react.createElement(LoadMoreIcon, { onClick: this.loadMore.bind(this) }) : react.createElement(LoadingIcon)), + // Add snippets button if on snippets tab + CONFIG.activeTab === "Snippets" ? react.createElement("button", { + className: "marketplace-add-snippet-btn main-buttons-button main-button-secondary", + onClick: openAddSnippetModal, + }, "+Add CSS") : null, + ), react.createElement(TopBarContent, { + switchCallback: this.switchTo.bind(this), + links: CONFIG.tabs, + activeLink: CONFIG.activeTab, + })); + } +} + +// TODO: add sort type, order, etc? +// https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-for-repositories#search-by-topic +// https://docs.github.com/en/rest/reference/search#search-repositories +/** + * Query GitHub for all repos with the "spicetify-extensions" topic + * @param {number} page The query page number + * @returns Array of search results (filtered through the blacklist) + */ +async function getExtensionRepos(page = 1) { + // www is needed or it will block with "cross-origin" error. + let url = `https://api.github.com/search/repositories?q=${encodeURIComponent("topic:spicetify-extensions")}&per_page=${ITEMS_PER_REQUEST}`; + + // We can test multiple pages with this URL (58 results), as well as broken iamges etc. + // let url = `https://api.github.com/search/repositories?q=${encodeURIComponent("topic:spicetify")}`; + if (page) url += `&page=${page}`; + // Sorting params (not implemented for Marketplace yet) + // if (sortConfig.by.match(/top|controversial/) && sortConfig.time) { + // url += `&t=${sortConfig.time}` + const allRepos = await fetch(url).then(res => res.json()).catch(() => []); + if (!allRepos.items) { + Spicetify.showNotification("Too Many Requests, Cool Down."); + } + const filteredResults = { + ...allRepos, + // Include count of all items on the page, since we're filtering the blacklist below, + // which can mess up the paging logic + page_count: allRepos.items.length, + items: allRepos.items.filter(item => !BLACKLIST.includes(item.html_url)), + }; + + return filteredResults; +} + +// TODO: add try/catch here? +// TODO: can we add a return type here? +/** + * Get the manifest object for a repo + * @param {string} user Owner username + * @param {string} repo Repo name + * @param {string} branch Default branch name (e.g. main or master) + * @returns The manifest object + */ +async function getRepoManifest(user, repo, branch) { + const sessionStorageItem = window.sessionStorage.getItem(`${user}-${repo}`); + const failedSessionStorageItems = window.sessionStorage.getItem("noManifests"); + if (sessionStorageItem) { + return JSON.parse(sessionStorageItem); + } + const url = `https://raw.githubusercontent.com/${user}/${repo}/${branch}/manifest.json`; + if (failedSessionStorageItems.includes(url)) { + return null; + } + const manifest = await fetch(url).then(res => res.json()).catch(() => addToSessionStorage([url], "noManifests")); + if (manifest) { + window.sessionStorage.setItem(`${user}-${repo}`, JSON.stringify(manifest)); + } + return manifest; +} + +// TODO: can we add a return type here? +/** + * Fetch extensions from a repo and format data for generating cards + * @param {string} contents_url The repo's GitHub API contents_url (e.g. "https://api.github.com/repos/theRealPadster/spicetify-hide-podcasts/contents/{+path}") + * @param {string} branch The repo's default branch (e.g. main or master) + * @param {number} stars The number of stars the repo has + * @returns Extension info for card (or null) + */ +async function fetchExtensionManifest(contents_url, branch, stars) { + try { + // TODO: use the original search full_name ("theRealPadster/spicetify-hide-podcasts") or something to get the url better? + let manifests; + const regex_result = contents_url.match(/https:\/\/api\.github\.com\/repos\/(?.+)\/(?.+)\/contents/); + // TODO: err handling? + if (!regex_result || !regex_result.groups) return null; + const { user, repo } = regex_result.groups; + + manifests = await getRepoManifest(user, repo, branch); + + // If the manifest returned is not an array, initialize it as one + if (!Array.isArray(manifests)) manifests = [manifests]; + + // Manifest is initially parsed + const parsedManifests = manifests.reduce((accum, manifest) => { + const selectedBranch = manifest.branch || branch; + const item = { + manifest, + title: manifest.name, + subtitle: manifest.description, + authors: processAuthors(manifest.authors, user), + user, + repo, + branch: selectedBranch, + + imageURL: manifest.preview && manifest.preview.startsWith("http") + ? manifest.preview + : `https://raw.githubusercontent.com/${user}/${repo}/${selectedBranch}/${manifest.preview}`, + extensionURL: manifest.main.startsWith("http") + ? manifest.main + : `https://raw.githubusercontent.com/${user}/${repo}/${selectedBranch}/${manifest.main}`, + readmeURL: manifest.readme && manifest.readme.startsWith("http") + ? manifest.readme + : `https://raw.githubusercontent.com/${user}/${repo}/${selectedBranch}/${manifest.readme}`, + stars, + tags: manifest.tags, + }; + + // If manifest is valid, add it to the list + if (manifest && manifest.name && manifest.description && manifest.main + ) { + // Add to list unless we're hiding installed items and it's installed + if (!(CONFIG.visual.hideInstalled + && localStorage.getItem("marketplace:installed:" + `${user}/${repo}/${manifest.main}`)) + ) { + accum.push(item); + } + } + // else { + // console.error("Invalid manifest:", manifest); + // } + + return accum; + }, []); + + return parsedManifests; + } + catch (err) { + // console.warn(contents_url, err); + return null; + } +} + +// TODO: can we add a return type here? +/** + * Fetch themes from a repo and format data for generating cards + * @param {string} contents_url The repo's GitHub API contents_url (e.g. "https://api.github.com/repos/theRealPadster/spicetify-hide-podcasts/contents/{+path}") + * @param {string} branch The repo's default branch (e.g. main or master) + * @param {number} stars The number of stars the repo has + * @returns Extension info for card (or null) + */ +async function fetchThemeManifest(contents_url, branch, stars) { + try { + let manifests; + const regex_result = contents_url.match(/https:\/\/api\.github\.com\/repos\/(?.+)\/(?.+)\/contents/); + // TODO: err handling? + if (!regex_result || !regex_result.groups) return null; + let { user, repo } = regex_result.groups; + + manifests = await getRepoManifest(user, repo, branch); + + // If the manifest returned is not an array, initialize it as one + if (!Array.isArray(manifests)) manifests = [manifests]; + + // Manifest is initially parsed + const parsedManifests = manifests.reduce((accum, manifest) => { + const selectedBranch = manifest.branch || branch; + const item = { + manifest, + title: manifest.name, + subtitle: manifest.description, + authors: processAuthors(manifest.authors, user), + user, + repo, + branch: selectedBranch, + imageURL: manifest.preview && manifest.preview.startsWith("http") + ? manifest.preview + : `https://raw.githubusercontent.com/${user}/${repo}/${selectedBranch}/${manifest.preview}`, + readmeURL: manifest.readme && manifest.readme.startsWith("http") + ? manifest.readme + : `https://raw.githubusercontent.com/${user}/${repo}/${selectedBranch}/${manifest.readme}`, + stars, + tags: manifest.tags, + // theme stuff + cssURL: manifest.usercss.startsWith("http") + ? manifest.usercss + : `https://raw.githubusercontent.com/${user}/${repo}/${selectedBranch}/${manifest.usercss}`, + // TODO: clean up indentation etc + schemesURL: manifest.schemes + ? ( + manifest.schemes.startsWith("http") ? manifest.schemes : `https://raw.githubusercontent.com/${user}/${repo}/${selectedBranch}/${manifest.schemes}` + ) + : null, + include: manifest.include, + }; + // If manifest is valid, add it to the list + if (manifest && manifest.name && manifest.usercss && manifest.description) { + accum.push(item); + } + return accum; + }, []); + return parsedManifests; + } + catch (err) { + // console.warn(contents_url, err); + return null; + } +} + +/** + * Query the GitHub API for a page of theme repos (having "spicetify-themes" topic) + * @param {number} page The page to get (defaults to 1) + * @returns Array of GitHub API results, filtered through the blacklist + */ +async function getThemeRepos(page = 1) { + let url = `https://api.github.com/search/repositories?q=${encodeURIComponent("topic:spicetify-themes")}&per_page=${ITEMS_PER_REQUEST}`; + + // We can test multiple pages with this URL (58 results), as well as broken iamges etc. + // let url = `https://api.github.com/search/repositories?q=${encodeURIComponent("topic:spicetify")}`; + if (page) url += `&page=${page}`; + // Sorting params (not implemented for Marketplace yet) + // if (sortConfig.by.match(/top|controversial/) && sortConfig.time) { + // url += `&t=${sortConfig.time}` + const allThemes = await fetch(url).then(res => res.json()).catch(() => []); + if (!allThemes.items) { + Spicetify.showNotification("Too Many Requests, Cool Down."); + } + const filteredResults = { + ...allThemes, + // Include count of all items on the page, since we're filtering the blacklist below, + // which can mess up the paging logic + page_count: allThemes.items.length, + items: allThemes.items.filter(item => !BLACKLIST.includes(item.html_url)), + }; + + return filteredResults; +} +function addToSessionStorage(items, key) { + if (!items || items == null) return; + items.forEach(item => { + if (!key) key = `${items.user}-${items.repo}`; + // If the key already exists, it will append to it instead of overwriting it + const existing = window.sessionStorage.getItem(key); + const parsed = existing ? JSON.parse(existing) : []; + parsed.push(item); + window.sessionStorage.setItem(key, JSON.stringify(parsed)); + }); +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/install.ps1 b/dot_config/spicetify/CustomApps/spicetify-marketplace/install.ps1 new file mode 100644 index 0000000..7dc9963 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/install.ps1 @@ -0,0 +1,41 @@ +# Modified from https://github.com/JulienMaille/dribbblish-dynamic-theme/blob/main/install.ps1 +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +Write-Host "Setting up..." -ForegroundColor "Green" + +$checkSpice = Get-Command spicetify -ErrorAction Silent +if ($null -eq $checkSpice) { + Write-Host -ForegroundColor Red "Spicetify not found. Installing that for you..." + Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/khanhas/spicetify-cli/master/install.ps1" | Invoke-Expression +} + +$sp_dir = "${HOME}\spicetify-cli\CustomApps" +if (-not (Test-Path $sp_dir)) { + Write-Host "Making a CustomApps folder..." -ForegroundColor "Cyan" + New-Item -Path $sp_dir -ItemType Directory | Out-Null + Write-Done +} + +$spicePath = spicetify -c | Split-Path +$sp_dot_dir = "$spicePath\CustomApps" +if (-not (Test-Path $sp_dot_dir)) { + Write-Host "Making a CustomApps folder..." -ForegroundColor "Cyan" + New-Item -Path $sp_dot_dir -ItemType Directory | Out-Null +} + +Write-Host "Downloading..." -ForegroundColor "Green" +Invoke-WebRequest -Uri "https://github.com/CharlieS1103/spicetify-marketplace/archive/refs/heads/main.zip" -UseBasicParsing -OutFile "${HOME}/spicetify-cli/CustomApps/spicetify-marketplace.zip" + +Write-Host "Unzipping and installing..." -ForegroundColor "Green" +Expand-Archive -Path "${HOME}/spicetify-cli/CustomApps/spicetify-marketplace.zip" -DestinationPath "${HOME}/spicetify-cli/CustomApps/" -Force +Remove-Item -Path "${HOME}/spicetify-cli/CustomApps/spicetify-marketplace.zip" -Force +if (Test-Path -Path "${HOME}/spicetify-cli/CustomApps/spicetify-marketplace") { + Write-Host "spicetify-marketplace was already found! Updating..." -ForegroundColor "Cyan" + Remove-Item -Path "${HOME}/spicetify-cli/CustomApps/spicetify-marketplace" -Force -Recurse +} +Rename-Item -Path "${HOME}/spicetify-cli/CustomApps/spicetify-marketplace-main" -NewName "spicetify-marketplace" -Force +Copy-Item -Path "${HOME}/spicetify-cli/CustomApps/spicetify-marketplace" -Destination $sp_dot_dir -Recurse -Force +spicetify config custom_apps spicetify-marketplace +spicetify backup apply + +Write-Host "Done! If nothing has happened, do spicetify apply" -ForegroundColor "Green" diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/manifest.json b/dot_config/spicetify/CustomApps/spicetify-marketplace/manifest.json new file mode 100644 index 0000000..8b77c58 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "Marketplace", + "icon": "", + "active-icon": "", + "subfiles": [ + "src/Card.js", + "src/Icons.js", + "src/OptionsMenu.js", + "src/SortBox.js", + "src/TabBar.js", + "src/Settings.js", + "src/ReadmePage.js", + "src/ReloadModal.js", + "src/AddSnippetModal.js", + "src/Utils.js" + ], + "subfiles_extension": [ + "extension.js" + ] +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/package-lock.json b/dot_config/spicetify/CustomApps/spicetify-marketplace/package-lock.json new file mode 100644 index 0000000..48315ee --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/package-lock.json @@ -0,0 +1,7533 @@ +{ + "name": "spicetify-marketplace", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "spicetify-marketplace", + "devDependencies": { + "@parcel/transformer-sass": "^2.3.2", + "@types/react": "^17.0.40", + "@types/react-dom": "^17.0.11", + "eslint": "^8.11.0", + "eslint-plugin-react": "^7.29.3", + "parcel": "^2.3.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@parcel/bundler-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.3.2.tgz", + "integrity": "sha512-JUrto4mjSD0ic9dEqRp0loL5o3HVYHja1ZIYSq+rBl2UWRV6/9cGTb07lXOCqqm0BWE+hQ4krUxB76qWaF0Lqw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/cache": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.3.2.tgz", + "integrity": "sha512-Xxq+ekgcFEme6Fn1v7rEOBkyMOUOUu7eNqQw0l6HQS+INZ2Q7YzzfdW7pI8rEOAAICVg5BWKpmBQZpgJlT+HxQ==", + "dev": true, + "dependencies": { + "@parcel/fs": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/utils": "2.3.2", + "lmdb": "^2.0.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.3.2" + } + }, + "node_modules/@parcel/codeframe": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.3.2.tgz", + "integrity": "sha512-ireQALcxxrTdIEpzTOoMo/GpfbFm1qlyezeGl3Hce3PMvHLg3a5S6u/Vcy7SAjdld5GfhHEqVY+blME6Z4CyXQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/compressor-raw": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.3.2.tgz", + "integrity": "sha512-8dIoFwinYK6bOTpnZOAwwIv0v73y0ezsctPmfMnIqVQPn7wJwfhw/gbKVcmK5AkgQMkyid98hlLZoaZtGF1Mdg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/config-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.3.2.tgz", + "integrity": "sha512-E7/iA7fGCYvXU3u6zF9nxjeDVsgjCN6MVvDjymjaxYMoDWTIsPV245SBEXqzgtmzbMAV+VAl4rVWLMB4pzMt9g==", + "dev": true, + "dependencies": { + "@parcel/bundler-default": "2.3.2", + "@parcel/compressor-raw": "2.3.2", + "@parcel/namer-default": "2.3.2", + "@parcel/optimizer-cssnano": "2.3.2", + "@parcel/optimizer-htmlnano": "2.3.2", + "@parcel/optimizer-image": "2.3.2", + "@parcel/optimizer-svgo": "2.3.2", + "@parcel/optimizer-terser": "2.3.2", + "@parcel/packager-css": "2.3.2", + "@parcel/packager-html": "2.3.2", + "@parcel/packager-js": "2.3.2", + "@parcel/packager-raw": "2.3.2", + "@parcel/packager-svg": "2.3.2", + "@parcel/reporter-dev-server": "2.3.2", + "@parcel/resolver-default": "2.3.2", + "@parcel/runtime-browser-hmr": "2.3.2", + "@parcel/runtime-js": "2.3.2", + "@parcel/runtime-react-refresh": "2.3.2", + "@parcel/runtime-service-worker": "2.3.2", + "@parcel/transformer-babel": "2.3.2", + "@parcel/transformer-css": "2.3.2", + "@parcel/transformer-html": "2.3.2", + "@parcel/transformer-image": "2.3.2", + "@parcel/transformer-js": "2.3.2", + "@parcel/transformer-json": "2.3.2", + "@parcel/transformer-postcss": "2.3.2", + "@parcel/transformer-posthtml": "2.3.2", + "@parcel/transformer-raw": "2.3.2", + "@parcel/transformer-react-refresh-wrap": "2.3.2", + "@parcel/transformer-svg": "2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.3.2" + } + }, + "node_modules/@parcel/core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.3.2.tgz", + "integrity": "sha512-gdJzpsgeUhv9H8T0UKVmyuptiXdduEfKIUx0ci+/PGhq8cCoiFnlnuhW6H7oLr79OUc+YJStabDJuG4U2A6ysw==", + "dev": true, + "dependencies": { + "@parcel/cache": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/events": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/graph": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/package-manager": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "abortcontroller-polyfill": "^1.1.9", + "base-x": "^3.0.8", + "browserslist": "^4.6.6", + "clone": "^2.1.1", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "json-source-map": "^0.6.1", + "json5": "^2.2.0", + "msgpackr": "^1.5.1", + "nullthrows": "^1.1.1", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/diagnostic": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.3.2.tgz", + "integrity": "sha512-/xW93Az4AOiifuYW/c4CDbUcu3lx5FcUDAj9AGiR9NSTsF/ROC/RqnxvQ3AGtqa14R7vido4MXEpY3JEp6FsqA==", + "dev": true, + "dependencies": { + "json-source-map": "^0.6.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/events": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.3.2.tgz", + "integrity": "sha512-WiYIwXMo4Vd+pi58vRoHkul8TPE5VEfMY+3FYwVCKPl/LYqSD+vz6wMx9uG18mEbB1d/ofefv5ZFQNtPGKO4tQ==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/fs": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.3.2.tgz", + "integrity": "sha512-XV+OsnRpN01QKU37lBN0TFKvv7uPKfQGbqFqYOrMbXH++Ae8rBU0Ykz+Yu4tv2h7shMlde+AMKgRnRTAJZpWEQ==", + "dev": true, + "dependencies": { + "@parcel/fs-search": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/watcher": "^2.0.0", + "@parcel/workers": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.3.2" + } + }, + "node_modules/@parcel/fs-search": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.3.2.tgz", + "integrity": "sha512-u3DTEFnPtKuZvEtgGzfVjQUytegSSn3POi7WfwMwPIaeDPfYcyyhfl+c96z7VL9Gk/pqQ99/cGyAwFdFsnxxXA==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/graph": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.3.2.tgz", + "integrity": "sha512-ltTBM3IEqumgmy4ABBFETT8NtAwSsjD9mY3WCyJ5P8rUshfVCg093rvBPbpuJYMaH/TV1AHVaWfZqaZ4JQDIQQ==", + "dev": true, + "dependencies": { + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/hash": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.3.2.tgz", + "integrity": "sha512-SMtYTsHihws/wqdVnOr0QAGyGYsW9rJSJkkoRujUxo8l2ctnBN1ztv89eOUrdtgHsmcnj/oz1yw6sN38X+BUng==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3", + "xxhash-wasm": "^0.4.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/logger": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.3.2.tgz", + "integrity": "sha512-jIWd8TXDQf+EnNWSa7Q10lSQ6C1LSH8OZkTlaINrfVIw7s+3tVxO3I4pjp7/ARw7RX2gdNPlw6fH4Gn/HvvYbw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/events": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/markdown-ansi": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.3.2.tgz", + "integrity": "sha512-l01ggmag5QScCk9mYA0xHh5TWSffR84uPFP2KvaAMQQ9NLNufcFiU0mn/Mtr3pCb5L5dSzmJ+Oo9s7P1Kh/Fmg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/namer-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.3.2.tgz", + "integrity": "sha512-3QUMC0+5+3KMKfoAxYAbpZtuRqTgyZKsGDWzOpuqwemqp6P8ahAvNPwSCi6QSkGcTmvtYwBu9/NHPSONxIFOfg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/node-resolver-core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.3.2.tgz", + "integrity": "sha512-wmrnMNzJN4GuHw2Ftho+BWgSWR6UCkW3XoMdphqcxpw/ieAdS2a+xYSosYkZgQZ6lGutSvLyJ1CkVvP6RLIdQQ==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-cssnano": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-cssnano/-/optimizer-cssnano-2.3.2.tgz", + "integrity": "sha512-wTBOxMiBI38NAB9XIlQZRCjS59+EWjWR9M04D3TWyxl+dL5gYMc1cl4GNynUnmcPdz+3s1UbOdo5/8V90wjiiw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "cssnano": "^5.0.15", + "postcss": "^8.4.5" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-htmlnano": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.3.2.tgz", + "integrity": "sha512-U8C0TDSxsx8HmHaLW0Zc7ha1fXQynzhvBjCRMGYnOiLiw0MOfLQxzQ2WKVSeCotmdlF63ayCwxWsd6BuqStiKQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "htmlnano": "^2.0.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "svgo": "^2.4.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-image": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.3.2.tgz", + "integrity": "sha512-HOk3r5qdvY/PmI7Q3i2qEgFH3kP2QWG4Wq3wmC4suaF1+c2gpiQc+HKHWp4QvfbH3jhT00c5NxQyqPhbXeNI9Q==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-svgo": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.3.2.tgz", + "integrity": "sha512-l7WvZ5+e7D1mVmLUxMVaSb29cviXzuvSY2OpQs0ukdPACDqag+C65hWMzwTiOSSRGPMIu96kQKpeVru2YjibhA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "svgo": "^2.4.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-terser": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.3.2.tgz", + "integrity": "sha512-dOapHhfy0xiNZa2IoEyHGkhhla07xsja79NPem14e5jCqY6Oi40jKNV4ab5uu5u1elWUjJuw69tiYbkDZWbKQw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "terser": "^5.2.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/package-manager": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.3.2.tgz", + "integrity": "sha512-pAQfywKVORY8Ee+NHAyKzzQrKbnz8otWRejps7urwhDaTVLfAd5C/1ZV64ATZ9ALYP9jyoQ8bTaxVd4opcSuwg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.3.2" + } + }, + "node_modules/@parcel/packager-css": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.3.2.tgz", + "integrity": "sha512-ByuF9xDnQnpVL1Hdu9aY6SpxOuZowd3TH7joh1qdRPLeMHTEvUywHBXoiAyNdrhnLGum8uPEdY8Ra5Xuo1U7kg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-html": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.3.2.tgz", + "integrity": "sha512-YqAptdU+uqfgwSii76mRGcA/3TpuC6yHr8xG+11brqj/tEFLsurmX0naombzd7FgmrTE9w+kb0HUIMl2vRBn0A==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.3.2.tgz", + "integrity": "sha512-3OP0Ro9M1J+PIKZK4Ec2N5hjIPiqk++B2kMFeiUqvaNZjJgKrPPEICBhjS52rma4IE/NgmIMB3aI5pWqE/KwNA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "globals": "^13.2.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-raw": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.3.2.tgz", + "integrity": "sha512-RnoZ7WgNAFWkEPrEefvyDqus7xfv9XGprHyTbfLittPaVAZpl+4eAv43nXyMfzk77Cgds6KcNpkosj3acEpNIQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-svg": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.3.2.tgz", + "integrity": "sha512-iIC0VeczOXynS7M5jCi3naMBRyAznBVJ3iMg92/GaI9duxPlUMGAlHzLAKNtoXkc00HMXDH7rrmMb04VX6FYSg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "posthtml": "^0.16.4" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/plugin": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.3.2.tgz", + "integrity": "sha512-SaLZAJX4KH+mrAmqmcy9KJN+V7L+6YNTlgyqYmfKlNiHu7aIjLL+3prX8QRcgGtjAYziCxvPj0cl1CCJssaiGg==", + "dev": true, + "dependencies": { + "@parcel/types": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-cli": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.3.2.tgz", + "integrity": "sha512-VYetmTXqW83npsvVvqlQZTbF3yVL3k/FCCl3kSWvOr9LZA0lmyqJWPjMHq37yIIOszQN/p5guLtgCjsP0UQw1Q==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-dev-server": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.3.2.tgz", + "integrity": "sha512-E7LtnjAX4iiWMw2qKUyFBi3+bDz0UGjqgHoPQylUYYLi6opXjJz/oC+cCcCy4e3RZlkrl187XonvagS59YjDxA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/resolver-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.3.2.tgz", + "integrity": "sha512-y3r+xOwWsATrNGUWuZ6soA7q24f8E5tY1AZ9lHCufnkK2cdKZJ5O1cyd7ohkAiKZx2/pMd+FgmVZ/J3oxetXkA==", + "dev": true, + "dependencies": { + "@parcel/node-resolver-core": "2.3.2", + "@parcel/plugin": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-browser-hmr": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.3.2.tgz", + "integrity": "sha512-nRD6uOyF1+HGylP9GASbYmvUDOsDaNwvaxuGTSh8+5M0mmCgib+hVBiPEKbwdmKjGbUPt9wRFPyMa/JpeQZsIQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.3.2.tgz", + "integrity": "sha512-SJepcHvYO/7CEe/Q85sngk+smcJ6TypuPh4D2R8kN+cAJPi5WvbQEe7+x5BEgbN+5Jumi/Uo3FfOOE5mYh+F6g==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-react-refresh": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.3.2.tgz", + "integrity": "sha512-P+GRPO2XVDSBQ4HmRSj2xfbHSQvL9+ahTE/AB74IJExLTITv5l4SHAV3VsiKohuHYUAYHW3A/Oe7tEFCAb6Cug==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "react-refresh": "^0.9.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-service-worker": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.3.2.tgz", + "integrity": "sha512-iREHj/eapphC4uS/zGUkiTJvG57q+CVbTrfE42kB8ECtf/RYNo5YC9htdvPZjRSXDPrEPc5NCoKp4X09ENNikw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/source-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.2.tgz", + "integrity": "sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": "^12.18.3 || >=14" + } + }, + "node_modules/@parcel/transformer-babel": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.3.2.tgz", + "integrity": "sha512-QpWfH2V6jJ+kcUBIMM/uBBG8dGFvNaOGS+8jD6b+eTP+1owzm83RoWgqhRV2D/hhv2qMXEQzIljoc/wg2y+X4g==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "browserslist": "^4.6.6", + "json5": "^2.2.0", + "nullthrows": "^1.1.1", + "semver": "^5.7.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-css": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.3.2.tgz", + "integrity": "sha512-8lzvDny+78DIAqhcXam2Bf9FyaUoqzHdUQdNFn+PuXTHroG/QGPvln1kvqngJjn4/cpJS9vYmAPVXe+nai3P8g==", + "dev": true, + "dependencies": { + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "postcss": "^8.4.5", + "postcss-value-parser": "^4.2.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-html": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.3.2.tgz", + "integrity": "sha512-idT1I/8WM65IFYBqzRwpwT7sf0xGur4EDQDHhuPX1w+pIVZnh0lkLMAnEqs6ar1SPRMys4chzkuDNnqh0d76hg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-image": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.3.2.tgz", + "integrity": "sha512-0K7cJHXysli6hZsUz/zVGO7WCoaaIeVdzAxKpLA1Yl3LKw/ODiMyXKt08LiV/ljQ2xT5qb9EsXUWDRvcZ0b96A==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/workers": "2.3.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + } + }, + "node_modules/@parcel/transformer-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.3.2.tgz", + "integrity": "sha512-U1fbIoAoqR5P49S+DMhH8BUd9IHRPwrTTv6ARYGsYnhuNsjTFhNYE0kkfRYboe/e0z7vEbeJICZXjnZ7eQDw5A==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "@swc/helpers": "^0.2.11", + "browserslist": "^4.6.6", + "detect-libc": "^1.0.3", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.13.7", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-json": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.3.2.tgz", + "integrity": "sha512-Pv2iPaxKINtFwOk5fDbHjQlSm2Vza/NLimQY896FLxiXPNAJxWGvMwdutgOPEBKksxRx9LZPyIOHiRVZ0KcA3w==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "json5": "^2.2.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-postcss": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.3.2.tgz", + "integrity": "sha512-Rpdxc1rt2aJFCh/y/ccaBc9J1crDjNY5o44xYoOemBoUNDMREsmg5sR5iO81qKKO5GxfoosGb2zh59aeTmywcg==", + "dev": true, + "dependencies": { + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "clone": "^2.1.1", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-posthtml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.3.2.tgz", + "integrity": "sha512-tMdVExfdM+1G8A9KSHDsjg+S9xEGbhH5mApF2NslPnNZ4ciLKRNuHU2sSV/v8i0a6kacKvDTrwQXYBQJGOodBw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-raw": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.3.2.tgz", + "integrity": "sha512-lY7eOCaALZ90+GH+4PZRmAPGQRXoZ66NakSdhEtH6JSSAYOmZKDvNLGTMRo/vK1oELzWMuAHGdqvbcPDtNLLVw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-react-refresh-wrap": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.3.2.tgz", + "integrity": "sha512-FZaderyCExn0SBZ6D+zHPWc8JSn9YDcbfibv0wkCl+D7sYfeWZ22i7MRp5NwCe/TZ21WuxDWySCggEp/Waz2xg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "react-refresh": "^0.9.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-sass": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.3.2.tgz", + "integrity": "sha512-jVDdhyzfCYLY/91gOfMAT0Cj3a3czETD71WpvnXhzfctnhZZ/lhC1aFUJxlhIF1hkVNyZ1b9USCCBAD4fje2Jg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "sass": "^1.38.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-svg": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.3.2.tgz", + "integrity": "sha512-k9My6bePsaGgUh+tidDjFbbVgKPTzwCAQfoloZRMt7y396KgUbvCfqDruk04k6k+cJn7Jl1o/5lUpTEruBze7g==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/types": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.3.2.tgz", + "integrity": "sha512-C77Ct1xNM7LWjPTfe/dQ/9rq1efdsX5VJu2o8/TVi6qoFh64Wp/c5/vCHwKInOTBZUTchVO6z4PGJNIZoUVJuA==", + "dev": true, + "dependencies": { + "@parcel/cache": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/package-manager": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/workers": "2.3.2", + "utility-types": "^3.10.0" + } + }, + "node_modules/@parcel/utils": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.3.2.tgz", + "integrity": "sha512-xzZ+0vWhrXlLzGoz7WlANaO5IPtyWGeCZruGtepUL3yheRWb1UU4zFN9xz7Z+j++Dmf1Fgkc3qdk/t4O8u9HLQ==", + "dev": true, + "dependencies": { + "@parcel/codeframe": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/markdown-ansi": "2.3.2", + "@parcel/source-map": "^2.0.0", + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", + "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/workers": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.3.2.tgz", + "integrity": "sha512-JbOm+Ceuyymd1SuKGgodC2EXAiPuFRpaNUSJpz3NAsS3lVIt2TDAPMOWBivS7sML/KltspUfl/Q9YwO0TPUFNw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "chrome-trace-event": "^1.0.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.3.2" + } + }, + "node_modules/@swc/helpers": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.2.14.tgz", + "integrity": "sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "17.0.40", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.40.tgz", + "integrity": "sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.13.tgz", + "integrity": "sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/abortcontroller-polyfill": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", + "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "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, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", + "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001312", + "electron-to-chromium": "^1.4.71", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001312", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", + "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "dev": true, + "dependencies": { + "timsort": "^0.3.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "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, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.0.tgz", + "integrity": "sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz", + "integrity": "sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.0", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.0", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.0", + "postcss-merge-rules": "^5.1.0", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.0", + "postcss-minify-params": "^5.1.0", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.0", + "postcss-ordered-values": "^5.1.0", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.75", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz", + "integrity": "sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==", + "dev": true + }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "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-plugin-react": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.3.tgz", + "integrity": "sha512-MzW6TuCnDOcta67CkpDyRfRsEVx9FNMDV8wZsDqe1luHPdGTrQIUaUXD27Ja3gHsdOIs/cXzNchWGlqm+qRVRg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/htmlnano": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.0.tgz", + "integrity": "sha512-thKQfhcp2xgtsWNE27A2bliEeqVL5xjAgGn0wajyttvFFsvFWWah1ntV9aEX61gz0T6MBQ5xK/1lXuEumhJTcg==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.1", + "posthtml": "^0.16.5", + "timsort": "^0.3.0" + }, + "peerDependencies": { + "cssnano": "^5.0.11", + "postcss": "^8.3.11", + "purgecss": "^4.0.3", + "relateurl": "^0.2.7", + "srcset": "^5.0.0", + "svgo": "^2.8.0", + "terser": "^5.10.0", + "uncss": "^0.17.3" + }, + "peerDependenciesMeta": { + "cssnano": { + "optional": true + }, + "postcss": { + "optional": true + }, + "purgecss": { + "optional": true + }, + "relateurl": { + "optional": true + }, + "srcset": { + "optional": true + }, + "svgo": { + "optional": true + }, + "terser": { + "optional": true + }, + "uncss": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-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, + "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, + "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-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8=", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "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, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "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 + }, + "node_modules/lmdb": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.2.3.tgz", + "integrity": "sha512-+OiHQpw22mBBxocb/9vcVNETqf0k5vgHA2r+KX7eCf8j5tSV50ZIv388iY1mnnrERIUhs2sjKQbZhPg7z4HyPQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "msgpackr": "^1.5.4", + "nan": "^2.14.2", + "node-gyp-build": "^4.2.3", + "ordered-binary": "^1.2.4", + "weak-lru-cache": "^1.2.2" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/msgpackr": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.5.4.tgz", + "integrity": "sha512-Z7w5Jg+2Q9z9gJxeM68d7tSuWZZGnFIRhZnyqcZCa/1dKkhOCNvR1TUV3zzJ3+vj78vlwKRzUgVDlW4jiSOeDA==", + "dev": true, + "optionalDependencies": { + "msgpackr-extract": "^1.0.14" + } + }, + "node_modules/msgpackr-extract": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-1.0.16.tgz", + "integrity": "sha512-fxdRfQUxPrL/TizyfYfMn09dK58e+d65bRD/fcaVH4052vj30QOzzqxcQIS7B0NsqlypEQ/6Du3QmP2DhWFfCA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "nan": "^2.14.2", + "node-gyp-build": "^4.2.3" + } + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node_modules/node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "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.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordered-binary": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.2.4.tgz", + "integrity": "sha512-A/csN0d3n+igxBPfUrjbV5GC69LWj2pjZzAAeeHXLukQ4+fytfP4T1Lg0ju7MSPSwq7KtHkGaiwO8URZN5IpLg==", + "dev": true + }, + "node_modules/parcel": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.3.2.tgz", + "integrity": "sha512-4jhgoBcQaiGKmnmBvNyKyOvZrxCgzgUzdEoVup/fRCOP99hNmvYIN5IErIIJxsU9ObcG/RGCFF8wa4kVRsWfIg==", + "dev": true, + "dependencies": { + "@parcel/config-default": "2.3.2", + "@parcel/core": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/events": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/package-manager": "2.3.2", + "@parcel/reporter-cli": "2.3.2", + "@parcel/reporter-dev-server": "2.3.2", + "@parcel/utils": "2.3.2", + "chalk": "^4.1.0", + "commander": "^7.0.0", + "get-port": "^4.2.0", + "v8-compile-cache": "^2.0.0" + }, + "bin": { + "parcel": "lib/bin.js" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz", + "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==", + "dev": true, + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", + "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", + "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz", + "integrity": "sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz", + "integrity": "sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz", + "integrity": "sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz", + "integrity": "sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz", + "integrity": "sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz", + "integrity": "sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz", + "integrity": "sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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 + }, + "node_modules/posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dev": true, + "dependencies": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", + "dev": true, + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dev": true, + "dependencies": { + "is-json": "^2.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml/node_modules/posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", + "dev": true, + "engines": { + "node": ">=0.10.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, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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==", + "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" + } + ] + }, + "node_modules/sass": { + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/terser": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "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, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/xxhash-wasm": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", + "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@parcel/bundler-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.3.2.tgz", + "integrity": "sha512-JUrto4mjSD0ic9dEqRp0loL5o3HVYHja1ZIYSq+rBl2UWRV6/9cGTb07lXOCqqm0BWE+hQ4krUxB76qWaF0Lqw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/cache": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.3.2.tgz", + "integrity": "sha512-Xxq+ekgcFEme6Fn1v7rEOBkyMOUOUu7eNqQw0l6HQS+INZ2Q7YzzfdW7pI8rEOAAICVg5BWKpmBQZpgJlT+HxQ==", + "dev": true, + "requires": { + "@parcel/fs": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/utils": "2.3.2", + "lmdb": "^2.0.2" + } + }, + "@parcel/codeframe": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.3.2.tgz", + "integrity": "sha512-ireQALcxxrTdIEpzTOoMo/GpfbFm1qlyezeGl3Hce3PMvHLg3a5S6u/Vcy7SAjdld5GfhHEqVY+blME6Z4CyXQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + } + }, + "@parcel/compressor-raw": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.3.2.tgz", + "integrity": "sha512-8dIoFwinYK6bOTpnZOAwwIv0v73y0ezsctPmfMnIqVQPn7wJwfhw/gbKVcmK5AkgQMkyid98hlLZoaZtGF1Mdg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2" + } + }, + "@parcel/config-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.3.2.tgz", + "integrity": "sha512-E7/iA7fGCYvXU3u6zF9nxjeDVsgjCN6MVvDjymjaxYMoDWTIsPV245SBEXqzgtmzbMAV+VAl4rVWLMB4pzMt9g==", + "dev": true, + "requires": { + "@parcel/bundler-default": "2.3.2", + "@parcel/compressor-raw": "2.3.2", + "@parcel/namer-default": "2.3.2", + "@parcel/optimizer-cssnano": "2.3.2", + "@parcel/optimizer-htmlnano": "2.3.2", + "@parcel/optimizer-image": "2.3.2", + "@parcel/optimizer-svgo": "2.3.2", + "@parcel/optimizer-terser": "2.3.2", + "@parcel/packager-css": "2.3.2", + "@parcel/packager-html": "2.3.2", + "@parcel/packager-js": "2.3.2", + "@parcel/packager-raw": "2.3.2", + "@parcel/packager-svg": "2.3.2", + "@parcel/reporter-dev-server": "2.3.2", + "@parcel/resolver-default": "2.3.2", + "@parcel/runtime-browser-hmr": "2.3.2", + "@parcel/runtime-js": "2.3.2", + "@parcel/runtime-react-refresh": "2.3.2", + "@parcel/runtime-service-worker": "2.3.2", + "@parcel/transformer-babel": "2.3.2", + "@parcel/transformer-css": "2.3.2", + "@parcel/transformer-html": "2.3.2", + "@parcel/transformer-image": "2.3.2", + "@parcel/transformer-js": "2.3.2", + "@parcel/transformer-json": "2.3.2", + "@parcel/transformer-postcss": "2.3.2", + "@parcel/transformer-posthtml": "2.3.2", + "@parcel/transformer-raw": "2.3.2", + "@parcel/transformer-react-refresh-wrap": "2.3.2", + "@parcel/transformer-svg": "2.3.2" + } + }, + "@parcel/core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.3.2.tgz", + "integrity": "sha512-gdJzpsgeUhv9H8T0UKVmyuptiXdduEfKIUx0ci+/PGhq8cCoiFnlnuhW6H7oLr79OUc+YJStabDJuG4U2A6ysw==", + "dev": true, + "requires": { + "@parcel/cache": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/events": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/graph": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/package-manager": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "abortcontroller-polyfill": "^1.1.9", + "base-x": "^3.0.8", + "browserslist": "^4.6.6", + "clone": "^2.1.1", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "json-source-map": "^0.6.1", + "json5": "^2.2.0", + "msgpackr": "^1.5.1", + "nullthrows": "^1.1.1", + "semver": "^5.7.1" + } + }, + "@parcel/diagnostic": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.3.2.tgz", + "integrity": "sha512-/xW93Az4AOiifuYW/c4CDbUcu3lx5FcUDAj9AGiR9NSTsF/ROC/RqnxvQ3AGtqa14R7vido4MXEpY3JEp6FsqA==", + "dev": true, + "requires": { + "json-source-map": "^0.6.1", + "nullthrows": "^1.1.1" + } + }, + "@parcel/events": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.3.2.tgz", + "integrity": "sha512-WiYIwXMo4Vd+pi58vRoHkul8TPE5VEfMY+3FYwVCKPl/LYqSD+vz6wMx9uG18mEbB1d/ofefv5ZFQNtPGKO4tQ==", + "dev": true + }, + "@parcel/fs": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.3.2.tgz", + "integrity": "sha512-XV+OsnRpN01QKU37lBN0TFKvv7uPKfQGbqFqYOrMbXH++Ae8rBU0Ykz+Yu4tv2h7shMlde+AMKgRnRTAJZpWEQ==", + "dev": true, + "requires": { + "@parcel/fs-search": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/watcher": "^2.0.0", + "@parcel/workers": "2.3.2" + } + }, + "@parcel/fs-search": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.3.2.tgz", + "integrity": "sha512-u3DTEFnPtKuZvEtgGzfVjQUytegSSn3POi7WfwMwPIaeDPfYcyyhfl+c96z7VL9Gk/pqQ99/cGyAwFdFsnxxXA==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3" + } + }, + "@parcel/graph": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.3.2.tgz", + "integrity": "sha512-ltTBM3IEqumgmy4ABBFETT8NtAwSsjD9mY3WCyJ5P8rUshfVCg093rvBPbpuJYMaH/TV1AHVaWfZqaZ4JQDIQQ==", + "dev": true, + "requires": { + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/hash": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.3.2.tgz", + "integrity": "sha512-SMtYTsHihws/wqdVnOr0QAGyGYsW9rJSJkkoRujUxo8l2ctnBN1ztv89eOUrdtgHsmcnj/oz1yw6sN38X+BUng==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "xxhash-wasm": "^0.4.2" + } + }, + "@parcel/logger": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.3.2.tgz", + "integrity": "sha512-jIWd8TXDQf+EnNWSa7Q10lSQ6C1LSH8OZkTlaINrfVIw7s+3tVxO3I4pjp7/ARw7RX2gdNPlw6fH4Gn/HvvYbw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/events": "2.3.2" + } + }, + "@parcel/markdown-ansi": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.3.2.tgz", + "integrity": "sha512-l01ggmag5QScCk9mYA0xHh5TWSffR84uPFP2KvaAMQQ9NLNufcFiU0mn/Mtr3pCb5L5dSzmJ+Oo9s7P1Kh/Fmg==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + } + }, + "@parcel/namer-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.3.2.tgz", + "integrity": "sha512-3QUMC0+5+3KMKfoAxYAbpZtuRqTgyZKsGDWzOpuqwemqp6P8ahAvNPwSCi6QSkGcTmvtYwBu9/NHPSONxIFOfg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/node-resolver-core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.3.2.tgz", + "integrity": "sha512-wmrnMNzJN4GuHw2Ftho+BWgSWR6UCkW3XoMdphqcxpw/ieAdS2a+xYSosYkZgQZ6lGutSvLyJ1CkVvP6RLIdQQ==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/optimizer-cssnano": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-cssnano/-/optimizer-cssnano-2.3.2.tgz", + "integrity": "sha512-wTBOxMiBI38NAB9XIlQZRCjS59+EWjWR9M04D3TWyxl+dL5gYMc1cl4GNynUnmcPdz+3s1UbOdo5/8V90wjiiw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "cssnano": "^5.0.15", + "postcss": "^8.4.5" + } + }, + "@parcel/optimizer-htmlnano": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.3.2.tgz", + "integrity": "sha512-U8C0TDSxsx8HmHaLW0Zc7ha1fXQynzhvBjCRMGYnOiLiw0MOfLQxzQ2WKVSeCotmdlF63ayCwxWsd6BuqStiKQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "htmlnano": "^2.0.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "svgo": "^2.4.0" + } + }, + "@parcel/optimizer-image": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.3.2.tgz", + "integrity": "sha512-HOk3r5qdvY/PmI7Q3i2qEgFH3kP2QWG4Wq3wmC4suaF1+c2gpiQc+HKHWp4QvfbH3jhT00c5NxQyqPhbXeNI9Q==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "detect-libc": "^1.0.3" + } + }, + "@parcel/optimizer-svgo": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.3.2.tgz", + "integrity": "sha512-l7WvZ5+e7D1mVmLUxMVaSb29cviXzuvSY2OpQs0ukdPACDqag+C65hWMzwTiOSSRGPMIu96kQKpeVru2YjibhA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "svgo": "^2.4.0" + } + }, + "@parcel/optimizer-terser": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.3.2.tgz", + "integrity": "sha512-dOapHhfy0xiNZa2IoEyHGkhhla07xsja79NPem14e5jCqY6Oi40jKNV4ab5uu5u1elWUjJuw69tiYbkDZWbKQw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "terser": "^5.2.0" + } + }, + "@parcel/package-manager": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.3.2.tgz", + "integrity": "sha512-pAQfywKVORY8Ee+NHAyKzzQrKbnz8otWRejps7urwhDaTVLfAd5C/1ZV64ATZ9ALYP9jyoQ8bTaxVd4opcSuwg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "semver": "^5.7.1" + } + }, + "@parcel/packager-css": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.3.2.tgz", + "integrity": "sha512-ByuF9xDnQnpVL1Hdu9aY6SpxOuZowd3TH7joh1qdRPLeMHTEvUywHBXoiAyNdrhnLGum8uPEdY8Ra5Xuo1U7kg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/packager-html": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.3.2.tgz", + "integrity": "sha512-YqAptdU+uqfgwSii76mRGcA/3TpuC6yHr8xG+11brqj/tEFLsurmX0naombzd7FgmrTE9w+kb0HUIMl2vRBn0A==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5" + } + }, + "@parcel/packager-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.3.2.tgz", + "integrity": "sha512-3OP0Ro9M1J+PIKZK4Ec2N5hjIPiqk++B2kMFeiUqvaNZjJgKrPPEICBhjS52rma4IE/NgmIMB3aI5pWqE/KwNA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "globals": "^13.2.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/packager-raw": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.3.2.tgz", + "integrity": "sha512-RnoZ7WgNAFWkEPrEefvyDqus7xfv9XGprHyTbfLittPaVAZpl+4eAv43nXyMfzk77Cgds6KcNpkosj3acEpNIQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2" + } + }, + "@parcel/packager-svg": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.3.2.tgz", + "integrity": "sha512-iIC0VeczOXynS7M5jCi3naMBRyAznBVJ3iMg92/GaI9duxPlUMGAlHzLAKNtoXkc00HMXDH7rrmMb04VX6FYSg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "posthtml": "^0.16.4" + } + }, + "@parcel/plugin": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.3.2.tgz", + "integrity": "sha512-SaLZAJX4KH+mrAmqmcy9KJN+V7L+6YNTlgyqYmfKlNiHu7aIjLL+3prX8QRcgGtjAYziCxvPj0cl1CCJssaiGg==", + "dev": true, + "requires": { + "@parcel/types": "2.3.2" + } + }, + "@parcel/reporter-cli": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.3.2.tgz", + "integrity": "sha512-VYetmTXqW83npsvVvqlQZTbF3yVL3k/FCCl3kSWvOr9LZA0lmyqJWPjMHq37yIIOszQN/p5guLtgCjsP0UQw1Q==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "chalk": "^4.1.0" + } + }, + "@parcel/reporter-dev-server": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.3.2.tgz", + "integrity": "sha512-E7LtnjAX4iiWMw2qKUyFBi3+bDz0UGjqgHoPQylUYYLi6opXjJz/oC+cCcCy4e3RZlkrl187XonvagS59YjDxA==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2" + } + }, + "@parcel/resolver-default": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.3.2.tgz", + "integrity": "sha512-y3r+xOwWsATrNGUWuZ6soA7q24f8E5tY1AZ9lHCufnkK2cdKZJ5O1cyd7ohkAiKZx2/pMd+FgmVZ/J3oxetXkA==", + "dev": true, + "requires": { + "@parcel/node-resolver-core": "2.3.2", + "@parcel/plugin": "2.3.2" + } + }, + "@parcel/runtime-browser-hmr": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.3.2.tgz", + "integrity": "sha512-nRD6uOyF1+HGylP9GASbYmvUDOsDaNwvaxuGTSh8+5M0mmCgib+hVBiPEKbwdmKjGbUPt9wRFPyMa/JpeQZsIQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2" + } + }, + "@parcel/runtime-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.3.2.tgz", + "integrity": "sha512-SJepcHvYO/7CEe/Q85sngk+smcJ6TypuPh4D2R8kN+cAJPi5WvbQEe7+x5BEgbN+5Jumi/Uo3FfOOE5mYh+F6g==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/runtime-react-refresh": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.3.2.tgz", + "integrity": "sha512-P+GRPO2XVDSBQ4HmRSj2xfbHSQvL9+ahTE/AB74IJExLTITv5l4SHAV3VsiKohuHYUAYHW3A/Oe7tEFCAb6Cug==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "react-refresh": "^0.9.0" + } + }, + "@parcel/runtime-service-worker": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.3.2.tgz", + "integrity": "sha512-iREHj/eapphC4uS/zGUkiTJvG57q+CVbTrfE42kB8ECtf/RYNo5YC9htdvPZjRSXDPrEPc5NCoKp4X09ENNikw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/source-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.2.tgz", + "integrity": "sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3" + } + }, + "@parcel/transformer-babel": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.3.2.tgz", + "integrity": "sha512-QpWfH2V6jJ+kcUBIMM/uBBG8dGFvNaOGS+8jD6b+eTP+1owzm83RoWgqhRV2D/hhv2qMXEQzIljoc/wg2y+X4g==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "browserslist": "^4.6.6", + "json5": "^2.2.0", + "nullthrows": "^1.1.1", + "semver": "^5.7.0" + } + }, + "@parcel/transformer-css": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.3.2.tgz", + "integrity": "sha512-8lzvDny+78DIAqhcXam2Bf9FyaUoqzHdUQdNFn+PuXTHroG/QGPvln1kvqngJjn4/cpJS9vYmAPVXe+nai3P8g==", + "dev": true, + "requires": { + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "postcss": "^8.4.5", + "postcss-value-parser": "^4.2.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-html": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.3.2.tgz", + "integrity": "sha512-idT1I/8WM65IFYBqzRwpwT7sf0xGur4EDQDHhuPX1w+pIVZnh0lkLMAnEqs6ar1SPRMys4chzkuDNnqh0d76hg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-image": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.3.2.tgz", + "integrity": "sha512-0K7cJHXysli6hZsUz/zVGO7WCoaaIeVdzAxKpLA1Yl3LKw/ODiMyXKt08LiV/ljQ2xT5qb9EsXUWDRvcZ0b96A==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/workers": "2.3.2", + "nullthrows": "^1.1.1" + } + }, + "@parcel/transformer-js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.3.2.tgz", + "integrity": "sha512-U1fbIoAoqR5P49S+DMhH8BUd9IHRPwrTTv6ARYGsYnhuNsjTFhNYE0kkfRYboe/e0z7vEbeJICZXjnZ7eQDw5A==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.3.2", + "@parcel/workers": "2.3.2", + "@swc/helpers": "^0.2.11", + "browserslist": "^4.6.6", + "detect-libc": "^1.0.3", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.13.7", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-json": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.3.2.tgz", + "integrity": "sha512-Pv2iPaxKINtFwOk5fDbHjQlSm2Vza/NLimQY896FLxiXPNAJxWGvMwdutgOPEBKksxRx9LZPyIOHiRVZ0KcA3w==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "json5": "^2.2.0" + } + }, + "@parcel/transformer-postcss": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.3.2.tgz", + "integrity": "sha512-Rpdxc1rt2aJFCh/y/ccaBc9J1crDjNY5o44xYoOemBoUNDMREsmg5sR5iO81qKKO5GxfoosGb2zh59aeTmywcg==", + "dev": true, + "requires": { + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "clone": "^2.1.1", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-posthtml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.3.2.tgz", + "integrity": "sha512-tMdVExfdM+1G8A9KSHDsjg+S9xEGbhH5mApF2NslPnNZ4ciLKRNuHU2sSV/v8i0a6kacKvDTrwQXYBQJGOodBw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-raw": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.3.2.tgz", + "integrity": "sha512-lY7eOCaALZ90+GH+4PZRmAPGQRXoZ66NakSdhEtH6JSSAYOmZKDvNLGTMRo/vK1oELzWMuAHGdqvbcPDtNLLVw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2" + } + }, + "@parcel/transformer-react-refresh-wrap": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.3.2.tgz", + "integrity": "sha512-FZaderyCExn0SBZ6D+zHPWc8JSn9YDcbfibv0wkCl+D7sYfeWZ22i7MRp5NwCe/TZ21WuxDWySCggEp/Waz2xg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/utils": "2.3.2", + "react-refresh": "^0.9.0" + } + }, + "@parcel/transformer-sass": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.3.2.tgz", + "integrity": "sha512-jVDdhyzfCYLY/91gOfMAT0Cj3a3czETD71WpvnXhzfctnhZZ/lhC1aFUJxlhIF1hkVNyZ1b9USCCBAD4fje2Jg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.3.2", + "@parcel/source-map": "^2.0.0", + "sass": "^1.38.0" + } + }, + "@parcel/transformer-svg": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.3.2.tgz", + "integrity": "sha512-k9My6bePsaGgUh+tidDjFbbVgKPTzwCAQfoloZRMt7y396KgUbvCfqDruk04k6k+cJn7Jl1o/5lUpTEruBze7g==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/plugin": "2.3.2", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + } + }, + "@parcel/types": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.3.2.tgz", + "integrity": "sha512-C77Ct1xNM7LWjPTfe/dQ/9rq1efdsX5VJu2o8/TVi6qoFh64Wp/c5/vCHwKInOTBZUTchVO6z4PGJNIZoUVJuA==", + "dev": true, + "requires": { + "@parcel/cache": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/package-manager": "2.3.2", + "@parcel/source-map": "^2.0.0", + "@parcel/workers": "2.3.2", + "utility-types": "^3.10.0" + } + }, + "@parcel/utils": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.3.2.tgz", + "integrity": "sha512-xzZ+0vWhrXlLzGoz7WlANaO5IPtyWGeCZruGtepUL3yheRWb1UU4zFN9xz7Z+j++Dmf1Fgkc3qdk/t4O8u9HLQ==", + "dev": true, + "requires": { + "@parcel/codeframe": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/hash": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/markdown-ansi": "2.3.2", + "@parcel/source-map": "^2.0.0", + "chalk": "^4.1.0" + } + }, + "@parcel/watcher": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", + "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", + "dev": true, + "requires": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + } + }, + "@parcel/workers": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.3.2.tgz", + "integrity": "sha512-JbOm+Ceuyymd1SuKGgodC2EXAiPuFRpaNUSJpz3NAsS3lVIt2TDAPMOWBivS7sML/KltspUfl/Q9YwO0TPUFNw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/types": "2.3.2", + "@parcel/utils": "2.3.2", + "chrome-trace-event": "^1.0.2", + "nullthrows": "^1.1.1" + } + }, + "@swc/helpers": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.2.14.tgz", + "integrity": "sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true + }, + "@types/react": { + "version": "17.0.40", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.40.tgz", + "integrity": "sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.13.tgz", + "integrity": "sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "abortcontroller-polyfill": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", + "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==", + "dev": true + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "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, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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 + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", + "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001312", + "electron-to-chromium": "^1.4.71", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001312", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", + "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + }, + "dependencies": { + "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, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-declaration-sorter": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "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 + }, + "cssnano": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.0.tgz", + "integrity": "sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz", + "integrity": "sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.0", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.0", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.0", + "postcss-merge-rules": "^5.1.0", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.0", + "postcss-minify-params": "^5.1.0", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.0", + "postcss-ordered-values": "^5.1.0", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.0" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.75", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz", + "integrity": "sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==", + "dev": true + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "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, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-plugin-react": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.3.tgz", + "integrity": "sha512-MzW6TuCnDOcta67CkpDyRfRsEVx9FNMDV8wZsDqe1luHPdGTrQIUaUXD27Ja3gHsdOIs/cXzNchWGlqm+qRVRg==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "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 + }, + "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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "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" + } + }, + "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, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "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 + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "htmlnano": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.0.tgz", + "integrity": "sha512-thKQfhcp2xgtsWNE27A2bliEeqVL5xjAgGn0wajyttvFFsvFWWah1ntV9aEX61gz0T6MBQ5xK/1lXuEumhJTcg==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.1", + "posthtml": "^0.16.5", + "timsort": "^0.3.0" + } + }, + "htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "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, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "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, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "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, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "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, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "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 + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "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, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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 + }, + "json-source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==", + "dev": true + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsx-ast-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" + } + }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "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 + }, + "lmdb": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.2.3.tgz", + "integrity": "sha512-+OiHQpw22mBBxocb/9vcVNETqf0k5vgHA2r+KX7eCf8j5tSV50ZIv388iY1mnnrERIUhs2sjKQbZhPg7z4HyPQ==", + "dev": true, + "requires": { + "msgpackr": "^1.5.4", + "nan": "^2.14.2", + "node-gyp-build": "^4.2.3", + "ordered-binary": "^1.2.4", + "weak-lru-cache": "^1.2.2" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "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 + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "msgpackr": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.5.4.tgz", + "integrity": "sha512-Z7w5Jg+2Q9z9gJxeM68d7tSuWZZGnFIRhZnyqcZCa/1dKkhOCNvR1TUV3zzJ3+vj78vlwKRzUgVDlW4jiSOeDA==", + "dev": true, + "requires": { + "msgpackr-extract": "^1.0.14" + } + }, + "msgpackr-extract": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-1.0.16.tgz", + "integrity": "sha512-fxdRfQUxPrL/TizyfYfMn09dK58e+d65bRD/fcaVH4052vj30QOzzqxcQIS7B0NsqlypEQ/6Du3QmP2DhWFfCA==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.14.2", + "node-gyp-build": "^4.2.3" + } + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true + }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "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 + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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.3" + } + }, + "ordered-binary": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.2.4.tgz", + "integrity": "sha512-A/csN0d3n+igxBPfUrjbV5GC69LWj2pjZzAAeeHXLukQ4+fytfP4T1Lg0ju7MSPSwq7KtHkGaiwO8URZN5IpLg==", + "dev": true + }, + "parcel": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.3.2.tgz", + "integrity": "sha512-4jhgoBcQaiGKmnmBvNyKyOvZrxCgzgUzdEoVup/fRCOP99hNmvYIN5IErIIJxsU9ObcG/RGCFF8wa4kVRsWfIg==", + "dev": true, + "requires": { + "@parcel/config-default": "2.3.2", + "@parcel/core": "2.3.2", + "@parcel/diagnostic": "2.3.2", + "@parcel/events": "2.3.2", + "@parcel/fs": "2.3.2", + "@parcel/logger": "2.3.2", + "@parcel/package-manager": "2.3.2", + "@parcel/reporter-cli": "2.3.2", + "@parcel/reporter-dev-server": "2.3.2", + "@parcel/utils": "2.3.2", + "chalk": "^4.1.0", + "commander": "^7.0.0", + "get-port": "^4.2.0", + "v8-compile-cache": "^2.0.0" + } + }, + "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, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz", + "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", + "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", + "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "requires": {} + }, + "postcss-merge-longhand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz", + "integrity": "sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz", + "integrity": "sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz", + "integrity": "sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz", + "integrity": "sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz", + "integrity": "sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz", + "integrity": "sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz", + "integrity": "sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "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 + }, + "posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dev": true, + "requires": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "dependencies": { + "posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, + "requires": { + "htmlparser2": "^7.1.1" + } + } + } + }, + "posthtml-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", + "dev": true, + "requires": { + "htmlparser2": "^7.1.1" + } + }, + "posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dev": true, + "requires": { + "is-json": "^2.0.1" + } + }, + "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 + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "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 + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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==", + "dev": true + }, + "sass": { + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "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, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "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 + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "string.prototype.matchall": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + }, + "terser": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "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, + "requires": { + "is-number": "^7.0.0" + } + }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "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, + "requires": { + "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" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xxhash-wasm": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", + "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/package.json b/dot_config/spicetify/CustomApps/spicetify-marketplace/package.json new file mode 100644 index 0000000..4838ba6 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/package.json @@ -0,0 +1,35 @@ +{ + "name": "spicetify-marketplace", + "homepage": "https://github.com/CharlieS1103/spicetify-marketplace", + "repository": { + "type": "git", + "url": "https://github.com/CharlieS1103/spicetify-marketplace.git" + }, + "bugs": { + "url": "https://github.com/CharlieS1103/spicetify-marketplace/issues" + }, + "scripts": { + "type-check": "tsc", + "watch": "parcel watch", + "build": "parcel build", + "lint": "eslint src" + }, + "source": "styles/style.scss", + "targets": { + "default": { + "distDir": ".", + "optimize": false + } + }, + "engines": { + "node": ">=16" + }, + "devDependencies": { + "@parcel/transformer-sass": "^2.3.2", + "@types/react": "^17.0.40", + "@types/react-dom": "^17.0.11", + "eslint": "^8.11.0", + "eslint-plugin-react": "^7.29.3", + "parcel": "^2.3.2" + } +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/snippets.json b/dot_config/spicetify/CustomApps/spicetify-marketplace/snippets.json new file mode 100644 index 0000000..57eb9f8 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/snippets.json @@ -0,0 +1,57 @@ +[ + { + "title": "Fix 'Episodes' Icon", + "description": "Fix the color of the Episodes icon", + "code": ".main-yourEpisodesButton-yourEpisodesIcon { background: var(--spice-text); } .main-yourEpisodesButton-yourEpisodesIcon path { fill: var(--spice-player); opacity: 0.7; }" + }, + { + "title": "Fix 'Liked' Icon", + "description": "Fix the colours of the Liked icon in sidebar", + "code": ".main-likedSongsButton-likedSongsIcon { color: var(--spice-sidebar); background: var(--spice-text); }" + }, + { + "title": "Fix 'Made For You' Icon", + "description": "Fix the colours of the Made For You icon", + "code": ".utp540VMXpC3bYIxo9wy { color: var(--spice-sidebar); background: var(--spice-text); opacity: 1; } .t6d9Hf7maqFPHp1Y02VR { color: var(--spice-text); }" + }, + { + "title": "Hide Upgrade Button", + "description": "Makes the upgrade button hidden", + "code": ".main-topBar-UpgradeButton { display: none; }" + }, + { + "title": "Auto-hide Friends", + "description": "Collapse the friends activity sidebar on small screens", + "code": ".main-buddyFeed-buddyFeedRoot { transition: width 0.3s; } @media screen and (max-width: 1200px) { .main-buddyFeed-buddyFeedRoot { width: 0; } }" + }, + { + "title": "Smooth Reveal Playlist Gradient", + "description": "Reveals the playlist gradient header gradient with a fade in effect", + "code": ".main-entityHeader-overlay, .main-actionBarBackground-background, .main-entityHeader-overlay, .main-entityHeader-backgroundColor { -webkit-transition: 3s; }" + }, + { + "title": "Fix progress bar displacement", + "description": "Fix the progress bar displacement when listening on different devices", + "code": ".main-connectBar-connectBar { overflow: visible !important; --triangle-position: 147px !important; align-items: unset !important; height: 0px !important; position: absolute !important; left: 80% !important; display: flex !important; bottom: 2% !important; padding: unset !important; }" + }, + { + "title": "Fix playlist arrows", + "description": "Fixes the opened and closed orientation of the playlist folder arrows", + "code": ".main-rootlist-expandArrow { -webkit-transform: rotate(-90deg) !important; transform: rotate(-90deg) !important; } .main-rootlist-expandArrow:hover { -webkit-transform: rotate(-90deg) !important; transform: rotate(-90deg) !important; } .qAAhQw9dXNB7DbPgDDxy { -webkit-transform: rotate(0deg) !important; transform: rotate(0deg) !important; } .qAAhQw9dXNB7DbPgDDxy:hover { -webkit-transform: rotate(0deg) !important; transform: rotate(0deg) !important; }" + }, + { + "title": "Fix main view width", + "description": "Makes main view fill up all available space", + "code": ".contentSpacing { max-width: 100% !important; }" + }, + { + "title": "Left aligned heart icons", + "description": "Moves the heart icon to the left side of the track title in track views", + "code": ".main-trackList-rowSectionStart { margin-left: 38px !important; } .main-addButton-button.main-trackList-rowHeartButton, .main-addButton-button.main-trackList-rowHeartButton { position: absolute !important; left: 48px !important; }" + }, + { + "title": "Disable Hover Panels [comfy-shadow]", + "description": "For comfy shadow this disables the hovering of panels and bars.", + "code": "nav.Root__nav-bar { position: inherit !important; width: calc(var(--nav-bar-width) + 9px) !important; opacity: 1 !important; transition: none !important; } nav.Root__nav-bar:hover { position: inherit !important; width: calc(var(--nav-bar-width) + 9px) !important; opacity: 1 !important; transition: none !important; } .LayoutResizer__resize-bar { cursor: col-resize !important; } .Root__top-bar{ opacity: 1 !important; transition: none !important; } .Root__top-bar:hover { transition-delay: none !important; opacity: 1 !important; transition: none !important; } .main-topBar-container { padding-left: 32px !important; } aside.main-buddyFeed-buddyFeedRoot:hover { position: relative !important; width: var(--buddy-feed-width) !important; opacity: 1 !important; bottom: 0 !important; left: 0 !important; top: 0 !important; z-index: 1 !important; } aside.main-buddyFeed-buddyFeedRoot { position: relative !important; width: var(--buddy-feed-width) !important; opacity: 1 !important; bottom: 0 !important; left: 0 !important; top: 0 !important; z-index: 1 !important; }" + } +] diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/AddSnippetModal.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/AddSnippetModal.js new file mode 100644 index 0000000..f58e872 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/AddSnippetModal.js @@ -0,0 +1,116 @@ +let addSnippetContainer; + +// eslint-disable-next-line no-unused-vars, no-redeclare +function openAddSnippetModal() { + const MODAL_TITLE = "Add Snippet"; + + const triggerModal = () => { + Spicetify.PopupModal.display({ + title: MODAL_TITLE, + content: addSnippetContainer, + isLarge: true, + }); + }; + + if (addSnippetContainer) { + triggerModal(); + return; + } + + addSnippetContainer = document.createElement("div"); + addSnippetContainer.id = "marketplace-add-snippet-container"; + + // Code section ===== + const codeContainer = document.createElement("div"); + codeContainer.className = "marketplace-customCSS-input-container"; + + const codeLabel = document.createElement("label"); + codeLabel.setAttribute("for", "marketplace-custom-css"); + codeLabel.innerText = "Custom CSS"; + codeContainer.appendChild(codeLabel); + + const textArea = document.createElement("textarea"); + textArea.id = "marketplace-custom-css"; + textArea.name = "marketplace-custom-css"; + textArea.rows = "4"; + textArea.cols = "50"; + textArea.placeholder = "Input your own custom CSS here! You can find them in the installed tab for management."; + codeContainer.appendChild(textArea); + + // Name section ===== + const nameContainer = document.createElement("div"); + nameContainer.className = "marketplace-customCSS-input-container"; + + const nameLabel = document.createElement("label"); + nameLabel.setAttribute("for", "marketplace-customCSS-name-submit"); + nameLabel.innerText = "Snippet Name"; + nameContainer.appendChild(nameLabel); + + const nameInput = document.createElement("input"); + nameInput.id = "marketplace-customCSS-name-submit"; + nameInput.name = "marketplace-customCSS-name-submit"; + nameInput.placeholder = "Enter a name for your custom snippet."; + nameContainer.appendChild(nameInput); + + // Description section ===== + const descriptionContainer = document.createElement("div"); + descriptionContainer.className = "marketplace-customCSS-input-container"; + + const descriptionLabel = document.createElement("label"); + descriptionLabel.setAttribute("for", "marketplace-customCSS-description-submit"); + descriptionLabel.innerText = "Snippet Description"; + descriptionContainer.appendChild(descriptionLabel); + + const descriptionInput = document.createElement("input"); + descriptionInput.id = "marketplace-customCSS-description-submit"; + descriptionInput.name = "marketplace-customCSS-description-submit"; + descriptionInput.placeholder = "Enter a description for your custom snippet."; + descriptionContainer.appendChild(descriptionInput); + + // Submit button ===== + const submitBtn = document.createElement("button"); + submitBtn.className = "main-buttons-button main-button-secondary"; + submitBtn.id = "marketplace-customCSS-submit"; + submitBtn.innerText = "Save CSS"; + submitBtn.addEventListener("click", function(event) { + event.preventDefault(); + + // @ts-ignore + const code = textArea.value.replace(/\n/g, ""); + // @ts-ignore + const name = nameInput.value.replace(/\n/g, ""); + const description = descriptionInput.value.trim(); + const localStorageKey = `marketplace:installed:snippet:${name}`; + if (getLocalStorageDataFromKey(localStorageKey)) { + alert("That name is already taken!"); + return; + } + + console.log(`Installing snippet: ${name}`); + localStorage.setItem(localStorageKey, JSON.stringify({ + code, + description, + title: name, + })); + + // Add to installed list if not there already + const installedSnippetKeys = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedSnippets, []); + if (installedSnippetKeys.indexOf(localStorageKey) === -1) { + installedSnippetKeys.push(localStorageKey); + localStorage.setItem(LOCALSTORAGE_KEYS.installedSnippets, JSON.stringify(installedSnippetKeys)); + } + const installedSnippets = installedSnippetKeys.map((key) => getLocalStorageDataFromKey(key)); + initializeSnippets(installedSnippets); + + Spicetify.PopupModal.hide(); + }, false); + + addSnippetContainer.append( + codeContainer, + nameContainer, + descriptionContainer, + submitBtn, + ); + + triggerModal(); +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Card.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Card.js new file mode 100644 index 0000000..2f55442 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Card.js @@ -0,0 +1,592 @@ +/// + +// eslint-disable-next-line no-redeclare, no-unused-vars +class Card extends react.Component { + constructor(props) { + super(props); + + this.MAX_TAGS = 4; + + // From `appendCard()` + /** @type { { type: string; stars: string; } } */ + this.visual; + /** @type { "extension" | "theme" | "snippet" } */ + this.type; + /** @type { (any, string) => void } */ + this.updateColourSchemes = props.updateColourSchemes; + /** @type { (string) => void } */ + this.updateActiveTheme = props.updateActiveTheme; + + // From `fetchExtensionManifest()`, `fetchThemeManifest()`, and snippets.json + /** @type { { + * name: string; + * description: string; + * main: string; + * authors: { name: string; url: string; }[]; + * preview: string; + * readme: string; + * tags?: string[]; + * code?: string; + * usercss?: string; + * schemes?: string; + * include?: string[] + * } } */ + this.manifest; + /** @type { string } */ + this.title; + /** @type { string } */ + this.subtitle; + /** @type { { name: string; url: string; }[] } */ + this.authors; + /** @type { string } */ + this.repo; + /** @type { string } */ + this.user; + /** @type { string } */ + this.branch; + /** @type { string } */ + this.imageURL; + /** @type { string } */ + this.extensionURL; + /** @type { string } */ + this.readmeURL; + /** @type { number } */ + this.stars; + // Theme stuff + /** @type { string? } */ + this.cssURL; + /** @type { string? } */ + this.schemesURL; + /** @type { string[]? } */ + this.include; + // Snippet stuff + /** @type { string? } */ + this.code; + /** @type { string? } */ + this.description; + /** @type { string[] } */ + this.tags; + + // Added locally + // this.menuType = Spicetify.ReactComponent.Menu | "div"; + this.menuType = Spicetify.ReactComponent.Menu; + + let prefix = props.type === "snippet" ? "snippet:" : `${props.user}/${props.repo}/`; + + let cardId = ""; + if (props.type === "snippet") cardId = props.title.replaceAll(" ", "-"); + else if (props.type === "theme") cardId = props.manifest.usercss; + else if (props.type === "extension") cardId = props.manifest.main; + + this.localStorageKey = `marketplace:installed:${prefix}${cardId}`; + + Object.assign(this, props); + + // Needs to be after Object.assign so an undefined 'tags' field doesn't overwrite the default [] + this.tags = props.tags || []; + if (props.include) this.tags.push("external JS"); + + this.state = { + // Initial value. Used to trigger a re-render. + // isInstalled() is used for all other intents and purposes + installed: localStorage.getItem(this.localStorageKey) !== null, + + // TODO: Can I remove `stars` from `this`? Or maybe just put everything in `state`? + stars: this.stars, + tagsExpanded: false, + }; + } + + // Using this because it gets the live value ('installed' is stuck after a re-render) + isInstalled() { + return localStorage.getItem(this.localStorageKey) !== null; + } + + async componentDidMount() { + // Refresh stars if on "Installed" tab with stars enabled + if (CONFIG.activeTab === "Installed" && CONFIG.visual.stars && this.type !== "snippet") { + // https://docs.github.com/en/rest/reference/repos#get-a-repository + const url = `https://api.github.com/repos/${this.user}/${this.repo}`; + // TODO: This implementation could probably be improved. + // It might have issues when quickly switching between tabs. + const repoData = await fetch(url).then(res => res.json()); + + if (this.state.stars !== repoData.stargazers_count) { + this.setState({ stars: repoData.stargazers_count }, () => { + console.log(`Stars updated to: ${this.state.stars}; updating localstorage.`); + this.installExtension(); + }); + } + } + } + + buttonClicked() { + if (this.type === "extension") { + if (this.isInstalled()) { + console.log("Extension already installed, removing"); + this.removeExtension(); + } else { + this.installExtension(); + } + openReloadModal(); + } else if (this.type === "theme") { + const themeKey = localStorage.getItem("marketplace:theme-installed"); + const previousTheme = getLocalStorageDataFromKey(themeKey, {}); + console.log(previousTheme); + console.log(themeKey); + + if (this.isInstalled()) { + console.log("Theme already installed, removing"); + this.removeTheme(this.localStorageKey); + } else { + // Remove theme if already installed, then install the new theme + this.removeTheme(); + this.installTheme(); + } + + // If the new or previous theme has JS, prompt to reload + if (this.include || previousTheme.include) openReloadModal(); + } else if (this.type === "snippet") { + if (this.isInstalled()) { + console.log("Snippet already installed, removing"); + this.removeSnippet(); + } else { + this.installSnippet(); + } + } else { + console.error("Unknown card type"); + } + } + + installExtension() { + console.log(`Installing extension ${this.localStorageKey}`); + // Add to localstorage (this stores a copy of all the card props in the localstorage) + // TODO: refactor/clean this up + localStorage.setItem(this.localStorageKey, JSON.stringify({ + manifest: this.manifest, + type: this.type, + title: this.title, + subtitle: this.subtitle, + authors: this.authors, + user: this.user, + repo: this.repo, + branch: this.branch, + imageURL: this.imageURL, + extensionURL: this.extensionURL, + readmeURL: this.readmeURL, + stars: this.state.stars, + })); + + // Add to installed list if not there already + const installedExtensions = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedExtensions, []); + if (installedExtensions.indexOf(this.localStorageKey) === -1) { + installedExtensions.push(this.localStorageKey); + localStorage.setItem(LOCALSTORAGE_KEYS.installedExtensions, JSON.stringify(installedExtensions)); + } + + console.log("Installed"); + this.setState({ installed: true }); + // console.log(JSON.parse(localStorage.getItem(this.localStorageKey))); + } + + removeExtension() { + const extValue = localStorage.getItem(this.localStorageKey); + // console.log(JSON.parse(extValue)); + if (extValue) { + console.log(`Removing extension ${this.localStorageKey}`); + // Remove from localstorage + localStorage.removeItem(this.localStorageKey); + + // Remove from installed list + const installedExtensions = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedExtensions, []); + const remainingInstalledExtensions = installedExtensions.filter((key) => key !== this.localStorageKey); + localStorage.setItem(LOCALSTORAGE_KEYS.installedExtensions, JSON.stringify(remainingInstalledExtensions)); + + console.log("Removed"); + this.setState({ installed: false }); + } + } + + async installTheme() { + console.log(`Installing theme ${this.localStorageKey}`); + + let parsedSchemes = null; + if (this.schemesURL) { + const schemesResponse = await fetch(this.schemesURL); + const colourSchemes = await schemesResponse.text(); + parsedSchemes = parseIni(colourSchemes); + } + + console.log(parsedSchemes); + + const activeScheme = parsedSchemes ? Object.keys(parsedSchemes)[0] : null; + + // Add to localstorage (this stores a copy of all the card props in the localstorage) + // TODO: refactor/clean this up + localStorage.setItem(this.localStorageKey, JSON.stringify({ + manifest: this.manifest, + type: this.type, + title: this.title, + subtitle: this.subtitle, + authors: this.authors, + user: this.user, + repo: this.repo, + branch: this.branch, + imageURL: this.imageURL, + extensionURL: this.extensionURL, + readmeURL: this.readmeURL, + stars: this.state.stars, + tags: this.tags, + // Theme stuff + cssURL: this.cssURL, + schemesURL: this.schemesURL, + include: this.include, + // Installed theme localstorage item has schemes, nothing else does + schemes: parsedSchemes, + activeScheme, + })); + + // TODO: handle this differently? + + // Add to installed list if not there already + const installedThemes = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedThemes, []); + if (installedThemes.indexOf(this.localStorageKey) === -1) { + installedThemes.push(this.localStorageKey); + localStorage.setItem(LOCALSTORAGE_KEYS.installedThemes, JSON.stringify(installedThemes)); + + // const usercssURL = `https://raw.github.com/${this.user}/${this.repo}/${this.branch}/${this.manifest.usercss}`; + localStorage.setItem(LOCALSTORAGE_KEYS.themeInstalled, this.localStorageKey); + } + + console.log("Installed"); + + // TODO: We'll also need to actually update the usercss etc, not just the colour scheme + // e.g. the stuff from extension.js, like injectUserCSS() etc. + + if (!this.include) { + // Add new theme css + this.injectUserCSS(this.localStorageKey); + // Update the active theme in Grid state, triggers state change and re-render + this.updateActiveTheme(this.localStorageKey); + // Update schemes in Grid, triggers state change and re-render + this.updateColourSchemes(parsedSchemes, activeScheme); + } + + this.setState({ installed: true }); + } + + removeTheme(themeKey = null) { + // If don't specify theme, remove the currently installed theme + themeKey = themeKey || localStorage.getItem(LOCALSTORAGE_KEYS.themeInstalled); + + const themeValue = themeKey && localStorage.getItem(themeKey); + + if (themeValue) { + console.log(`Removing theme ${themeKey}`); + + // Remove from localstorage + localStorage.removeItem(themeKey); + + // Remove record of installed theme + localStorage.removeItem(LOCALSTORAGE_KEYS.themeInstalled); + + // Remove from installed list + const installedThemes = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedThemes, []); + const remainingInstalledThemes = installedThemes.filter((key) => key !== themeKey); + localStorage.setItem(LOCALSTORAGE_KEYS.installedThemes, JSON.stringify(remainingInstalledThemes)); + + console.log("Removed"); + + // Removes the current theme CSS + this.injectUserCSS(null); + // Update the active theme in Grid state + this.updateActiveTheme(null); + // Removes the current colour scheme + this.updateColourSchemes(null); + + this.setState({ installed: false }); + } + } + + installSnippet() { + console.log(`Installing snippet ${this.localStorageKey}`); + localStorage.setItem(this.localStorageKey, JSON.stringify({ + code: this.code, + title: this.title, + description: this.description, + })); + + // Add to installed list if not there already + const installedSnippetKeys = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedSnippets, []); + if (installedSnippetKeys.indexOf(this.localStorageKey) === -1) { + installedSnippetKeys.push(this.localStorageKey); + localStorage.setItem(LOCALSTORAGE_KEYS.installedSnippets, JSON.stringify(installedSnippetKeys)); + } + const installedSnippets = installedSnippetKeys.map((key) => getLocalStorageDataFromKey(key)); + initializeSnippets(installedSnippets); + + this.setState({ installed: true }); + } + + removeSnippet() { + localStorage.removeItem(this.localStorageKey); + + // Remove from installed list + const installedSnippetKeys = getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedSnippets, []); + const remainingInstalledSnippetKeys = installedSnippetKeys.filter((key) => key !== this.localStorageKey); + localStorage.setItem(LOCALSTORAGE_KEYS.installedSnippets, JSON.stringify(remainingInstalledSnippetKeys)); + const remainingInstalledSnippets = remainingInstalledSnippetKeys.map((key) => getLocalStorageDataFromKey(key)); + initializeSnippets(remainingInstalledSnippets); + + this.setState({ installed: false }); + } + + openReadme() { + if (this.manifest && this.manifest.readme) { + Spicetify.Platform.History.push({ + pathname: "/spicetify-marketplace/readme", + state: { + data: { + title: this.title, + user: this.user, + repo: this.repo, + branch: this.branch, + readmeURL: this.readmeURL, + }, + }, + }); + } else { + Spicetify.showNotification("No page was found"); + } + } + + generateAuthorsDiv() { + // Add a div with author links inside + const authorsDiv = ( + react.createElement("div", { className: "marketplace-card__authors" }, + this.authors.map((author) => { + return ( + react.createElement("a", { + title: author.name, + className: "marketplace-card__author", + href: author.url, + draggable: false, + dir: "auto", + target: "_blank", + rel: "noopener noreferrer", + onClick: (e) => e.stopPropagation(), + }, author.name) + ); + }), + ) + ); + + return authorsDiv; + } + + generateTags(tags) { + return tags.reduce((accum, tag) => { + // Render tags if enabled. Always render external JS tag + if (CONFIG.visual.tags || tag === "external JS") { + accum.push( + react.createElement("li", { + className: "marketplace-card__tag", + draggable: false, + "data-tag": tag, + }, tag), + ); + } + return accum; + }, []); + } + + generateTagsList() { + const baseTags = this.tags.slice(0, this.MAX_TAGS); + const extraTags = this.tags.slice(this.MAX_TAGS); + + // Add a ul with tags inside + const tagsList = ( + react.createElement("ul", { className: "marketplace-card__tags" }, + this.generateTags(baseTags), + // Show any extra tags if expanded + extraTags.length && this.state.tagsExpanded + ? this.generateTags(extraTags) + : null, + ) + ); + + // Render the tags list and add expand button if there are more tags + return [tagsList, extraTags.length && !this.state.tagsExpanded + ? react.createElement("button", { + className: "marketplace-card__tags-more-btn", + onClick: (e) => { + e.stopPropagation(); + this.setState({ tagsExpanded: true }); + }, + }, "...") + : null]; + } + + render() { + // Cache this for performance + let IS_INSTALLED = this.isInstalled(); + // console.log(`Rendering ${this.localStorageKey} - is ${IS_INSTALLED ? "" : "not"} installed`); + + // Kill the card if it has been uninstalled on the "Installed" tab + // TODO: is this kosher, or is there a better way to handle? + if (CONFIG.activeTab === "Installed" && !IS_INSTALLED) { + console.log("Card item not installed"); + return null; + } + + const cardClasses = ["main-card-card", `marketplace-card--${this.type}`]; + if (IS_INSTALLED) cardClasses.push("marketplace-card--installed"); + + let detail = []; + // this.visual.type && detail.push(this.type); + if (this.type !== "snippet" && this.visual.stars) { + detail.push(`★ ${this.state.stars}`); + } + return react.createElement(Spicetify.ReactComponent.RightClickMenu || "div", { + menu: react.createElement(this.menuType, {}), + }, react.createElement("div", { + className: cardClasses.join(" "), + onClick: () => this.openReadme(), + }, react.createElement("div", { + className: "main-card-draggable", + draggable: "true", + }, react.createElement("div", { + className: "main-card-imageContainer", + }, react.createElement("div", { + className: "main-cardImage-imageWrapper", + }, react.createElement("div", { + }, react.createElement("img", { + "aria-hidden": "false", + draggable: "false", + loading: "lazy", + src: this.imageURL, + className: "main-image-image main-cardImage-image", + onError: (e) => { + // Set to transparent PNG to remove the placeholder icon + // https://png-pixel.com + e.target.setAttribute("src", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII"); + + // Add class for styling + e.target.closest(".main-cardImage-imageWrapper").classList.add("main-cardImage-imageWrapper--error"); + }, + //Create a div using normalized play button classes to use the css provided by themes + })))), react.createElement("div", { + className: "main-card-cardMetadata", + }, react.createElement("a", { + draggable: "false", + title: this.type === "snippet" ? this.props.title : this.manifest.name, + className: "main-cardHeader-link", + dir: "auto", + href: "TODO: add some href here?", + }, react.createElement("div", { + className: "main-cardHeader-text main-type-balladBold", + as: "div", + }, this.props.title)), react.createElement("div", { + className: "main-cardSubHeader-root main-type-mestoBold marketplace-cardSubHeader", + as: "div", + }, + // Add authors if they exist + this.authors && this.generateAuthorsDiv(), + react.createElement("span", null, detail.join(" ‒ ")), + ), react.createElement("p", { + className: "marketplace-card-desc", + }, this.type === "snippet" ? this.props.description : this.manifest.description), + this.tags.length ? react.createElement("div", { + className: "marketplace-card__bottom-meta main-type-mestoBold", + as: "div", + }, this.generateTagsList()) : null, + IS_INSTALLED && react.createElement("div", { + className: "marketplace-card__bottom-meta main-type-mestoBold", + as: "div", + }, "✓ Installed"), react.createElement("div", { + className: "main-card-PlayButtonContainer", + }, react.createElement("button", { + className: "main-playButton-PlayButton main-playButton-primary", + // If it is installed, it will remove it when button is clicked, if not it will save + "aria-label": IS_INSTALLED ? Spicetify.Locale.get("remove") : Spicetify.Locale.get("save"), + style: { "--size": "40px", "cursor": "pointer" }, + onClick: (e) => { + e.stopPropagation(); + this.buttonClicked(); + }, + }, + //If the extension, theme, or snippet is already installed, it will display trash, otherwise it displays download + IS_INSTALLED ? TRASH_ICON : DOWNLOAD_ICON, + )), + )))); + } + + // TODO: keep in sync with extension.js + /** + * Update the user.css in the DOM + * @param {string | null} theme The theme localStorageKey or null, if we want to reset the theme + */ + async injectUserCSS(theme) { + try { + // Remove any existing Spicetify user.css + const existingUserThemeCSS = document.querySelector("link[href='user.css']"); + if (existingUserThemeCSS) existingUserThemeCSS.remove(); + + // Remove any existing marketplace scheme + const existingMarketplaceUserCSS = document.querySelector("style.marketplaceCSS.marketplaceUserCSS"); + if (existingMarketplaceUserCSS) existingMarketplaceUserCSS.remove(); + + if (theme) { + const userCSS = await this.parseCSS(); + + // Add new marketplace scheme + const userCssTag = document.createElement("style"); + userCssTag.classList.add("marketplaceCSS"); + userCssTag.classList.add("marketplaceUserCSS"); + userCssTag.innerHTML = userCSS; + document.head.appendChild(userCssTag); + } else { + // Re-add default user.css + const originalUserThemeCSS = document.createElement("link"); + originalUserThemeCSS.setAttribute("rel", "stylesheet"); + originalUserThemeCSS.setAttribute("href", "user.css"); + originalUserThemeCSS.classList.add("userCSS"); + document.head.appendChild(originalUserThemeCSS); + } + } catch (error) { + console.warn(error); + } + } + + // TODO: keep in sync with extension.js + async parseCSS() { + + const userCssUrl = this.cssURL.indexOf("raw.githubusercontent.com") > -1 + // TODO: this should probably be the URL stored in localstorage actually (i.e. put this url in localstorage) + ? `https://cdn.jsdelivr.net/gh/${this.user}/${this.repo}@${this.branch}/${this.manifest.usercss}` + : this.cssURL; + // TODO: Make this more versatile + const assetsUrl = userCssUrl.replace("/user.css", "/assets/"); + + console.log("Parsing CSS: ", userCssUrl); + let css = await fetch(userCssUrl).then(res => res.text()); + // console.log("Parsed CSS: ", css); + + // @ts-ignore + let urls = css.matchAll(/url\(['|"](?.+?)['|"]\)/gm) || []; + + for (const match of urls) { + const url = match.groups.path; + // console.log(url); + // If it's a relative URL, transform it to HTTP URL + if (!url.startsWith("http") && !url.startsWith("data")) { + const newUrl = assetsUrl + url.replace(/\.\//g, ""); + css = css.replace(url, newUrl); + } + } + + // console.log("New CSS: ", css); + + return css; + } +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Icons.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Icons.js new file mode 100644 index 0000000..ed38267 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Icons.js @@ -0,0 +1,74 @@ +// eslint-disable-next-line no-redeclare, no-unused-vars +class LoadingIcon extends react.Component { + render() { + return react.createElement("svg", { + width: "100px", height: "100px", viewBox: "0 0 100 100", preserveAspectRatio: "xMidYMid", + }, react.createElement("circle", { + cx: "50", cy: "50", r: "0", fill: "none", stroke: "currentColor", "stroke-width": "2", + }, react.createElement("animate", { + attributeName: "r", repeatCount: "indefinite", dur: "1s", values: "0;40", keyTimes: "0;1", keySplines: "0 0.2 0.8 1", calcMode: "spline", begin: "0s", + }), react.createElement("animate", { + attributeName: "opacity", repeatCount: "indefinite", dur: "1s", values: "1;0", keyTimes: "0;1", keySplines: "0.2 0 0.8 1", calcMode: "spline", begin: "0s", + })), react.createElement("circle", { + cx: "50", cy: "50", r: "0", fill: "none", stroke: "currentColor", "stroke-width": "2", + }, react.createElement("animate", { + attributeName: "r", repeatCount: "indefinite", dur: "1s", values: "0;40", keyTimes: "0;1", keySplines: "0 0.2 0.8 1", calcMode: "spline", begin: "-0.5s", + }), react.createElement("animate", { + attributeName: "opacity", repeatCount: "indefinite", dur: "1s", values: "1;0", keyTimes: "0;1", keySplines: "0.2 0 0.8 1", calcMode: "spline", begin: "-0.5s", + }))); + } +} + +// eslint-disable-next-line no-redeclare, no-unused-vars +class LoadMoreIcon extends react.Component { + render() { + return react.createElement("div", { + onClick: this.props.onClick, + }, react.createElement("p", { + style: { + fontSize: 100, + lineHeight: "65px", + }, + }, "»"), react.createElement("span", { + style: { + fontSize: 20, + }, + }, "Load more")); + } +} + +/* eslint-disable no-redeclare, no-unused-vars */ +const DOWNLOAD_ICON = react.createElement("svg", { + height: "16", + role: "img", + width: "16", + viewBox: "0 0 512 512", + "aria-hidden": "true", +}, react.createElement("path", { + d: "M480 352h-133.5l-45.25 45.25C289.2 409.3 273.1 416 256 416s-33.16-6.656-45.25-18.75L165.5 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96C512 366.3 497.7 352 480 352zM432 456c-13.2 0-24-10.8-24-24c0-13.2 10.8-24 24-24s24 10.8 24 24C456 445.2 445.2 456 432 456zM233.4 374.6C239.6 380.9 247.8 384 256 384s16.38-3.125 22.62-9.375l128-128c12.49-12.5 12.49-32.75 0-45.25c-12.5-12.5-32.76-12.5-45.25 0L288 274.8V32c0-17.67-14.33-32-32-32C238.3 0 224 14.33 224 32v242.8L150.6 201.4c-12.49-12.5-32.75-12.5-45.25 0c-12.49 12.5-12.49 32.75 0 45.25L233.4 374.6z", + fill: "currentColor", +})); + +const SETTINGS_ICON = react.createElement("svg", { + height: "16", + role: "img", + width: "16", + viewBox: "0 0 24 24", + "aria-hidden": "true", +}, react.createElement("path", { + d: "M24 13.616v-3.232c-1.651-.587-2.694-.752-3.219-2.019v-.001c-.527-1.271.1-2.134.847-3.707l-2.285-2.285c-1.561.742-2.433 1.375-3.707.847h-.001c-1.269-.526-1.435-1.576-2.019-3.219h-3.232c-.582 1.635-.749 2.692-2.019 3.219h-.001c-1.271.528-2.132-.098-3.707-.847l-2.285 2.285c.745 1.568 1.375 2.434.847 3.707-.527 1.271-1.584 1.438-3.219 2.02v3.232c1.632.58 2.692.749 3.219 2.019.53 1.282-.114 2.166-.847 3.707l2.285 2.286c1.562-.743 2.434-1.375 3.707-.847h.001c1.27.526 1.436 1.579 2.019 3.219h3.232c.582-1.636.75-2.69 2.027-3.222h.001c1.262-.524 2.12.101 3.698.851l2.285-2.286c-.744-1.563-1.375-2.433-.848-3.706.527-1.271 1.588-1.44 3.221-2.021zm-12 2.384c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z", + fill: "currentColor", +})); + +const TRASH_ICON = react.createElement("svg", { + height: "16", + role: "img", + width: "16", + viewBox: "0 0 448 512", + "aria-hidden": "true", +}, react.createElement("path", { + d: "M53.21 467c1.562 24.84 23.02 45 47.9 45h245.8c24.88 0 46.33-20.16 47.9-45L416 128H32L53.21 467zM432 32H320l-11.58-23.16c-2.709-5.42-8.25-8.844-14.31-8.844H153.9c-6.061 0-11.6 3.424-14.31 8.844L128 32H16c-8.836 0-16 7.162-16 16V80c0 8.836 7.164 16 16 16h416c8.838 0 16-7.164 16-16V48C448 39.16 440.8 32 432 32z", + fill: "currentColor", +})); + +/* eslint-enable no-redeclare, no-unused-vars */ diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/OptionsMenu.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/OptionsMenu.js new file mode 100644 index 0000000..90d1809 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/OptionsMenu.js @@ -0,0 +1,73 @@ +const OptionsMenuItemIcon = react.createElement("svg", { + width: 16, + height: 16, + viewBox: "0 0 16 16", + fill: "currentColor", +}, react.createElement("path", { + d: "M13.985 2.383L5.127 12.754 1.388 8.375l-.658.77 4.397 5.149 9.618-11.262z", +})); + +// @ts-ignore +const OptionsMenuItem = react.memo(({ onSelect, value, isSelected }) => { + return react.createElement(Spicetify.ReactComponent.MenuItem, { + onClick: onSelect, + icon: isSelected ? OptionsMenuItemIcon : null, + }, value); +}); + +// eslint-disable-next-line no-redeclare, no-unused-vars +const OptionsMenu = react.memo(({ + // @ts-ignore + options, + // @ts-ignore + onSelect, + // @ts-ignore + selected, + // @ts-ignore + defaultValue, + // @ts-ignore + bold = false, +}) => { + /** + * ) } + * > + * + * + */ + let menuRef = react.useRef(null); + return react.createElement(Spicetify.ReactComponent.ContextMenu, { + menu: react.createElement(Spicetify.ReactComponent.Menu, { + }, options.map(({ key, value }) => react.createElement(OptionsMenuItem, { + // @ts-ignore + value, + onSelect: () => { + onSelect(key); + // Close menu on item click + menuRef.current?.click(); + }, + isSelected: selected?.key === key, + })), + ), + trigger: "click", + action: "toggle", + renderInline: true, + }, react.createElement("button", { + className: "optionsMenu-dropBox", + ref: menuRef, + }, + react.createElement("span", { + className: bold ? "main-type-mestoBold" : "main-type-mesto", + }, selected?.value || defaultValue), + react.createElement("svg", { + height: "16", + width: "16", + fill: "currentColor", + viewBox: "0 0 16 16", + }, react.createElement("path", { + d: "M3 6l5 5.794L13 6z", + })))); +}); diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/ReadmePage.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/ReadmePage.js new file mode 100644 index 0000000..6e20378 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/ReadmePage.js @@ -0,0 +1,85 @@ +// eslint-disable-next-line no-unused-vars, no-redeclare +class ReadmePage extends react.Component { + constructor(props) { + super(props); + Object.assign(this, props); + + // TODO: decide what data we want to pass in and how we want to store it + // (this currently comes from Card.openReadme) + /** @type { { title: string; user: string; repo: string; branch: string; readmeURL: string; readmeDir: string; } } */ + this.data; + + this.state = { html: "

Loading...

" }; + } + + componentDidMount() { + // Get and set readme html once loaded + this.getReadmeHTML() + .then((html) => this.setState({ html })); + } + + componentDidUpdate() { + // Add error handler in attempt to fix broken image urls + // e.g. "screenshot.png" loads https://xpui.app.spotify.com/screenshot.png and breaks + // so I turn it into https://raw.githubusercontent.com/theRealPadster/spicetify-hide-podcasts/main/screenshot.png + // This works for urls relative to the repo root + document.querySelectorAll("#marketplace-readme img").forEach((img) => { + img.addEventListener("error", (e) => { + // @ts-ignore + const originalSrc = e.target.getAttribute("src"); + const fixedSrc = `https://raw.githubusercontent.com/${this.data.user}/${this.data.repo}/${this.data.branch}/${originalSrc}`; + // @ts-ignore + e.target.setAttribute("src", fixedSrc); + }, { once: true }); + }); + } + + render() { + return react.createElement("section", { + className: "contentSpacing", + }, + react.createElement("div", { + className: "marketplace-header", + }, react.createElement("h1", null, this.props.title), + ), + react.createElement("div", { + id: "marketplace-readme", + className: "marketplace-readme__container", + dangerouslySetInnerHTML: { + __html: this.state.html, + }, + })); + } + + async getReadmeHTML() { + try { + const readmeTextRes = await fetch(this.data.readmeURL); + if (!readmeTextRes.ok) throw Spicetify.showNotification(`Error loading README (HTTP ${readmeTextRes.status})`); + + const readmeText = await readmeTextRes.text(); + + const postBody = { + text: readmeText, + context: `${this.data.user}/${this.data.repo}`, + mode: "gfm", + }; + + const readmeHtmlRes = await fetch("https://api.github.com/markdown", { + method: "POST", + body: JSON.stringify(postBody), + }); + if (!readmeHtmlRes.ok) throw Spicetify.showNotification(`Error parsing README (HTTP ${readmeHtmlRes.status})`); + + const readmeHtml = await readmeHtmlRes.text(); + + if (readmeHtml == null) { + Spicetify.Platform.History.goBack(); + } + return readmeHtml; + } catch (err) { + Spicetify.Platform.History.goBack(); + return null; + } + } +} + diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/ReloadModal.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/ReloadModal.js new file mode 100644 index 0000000..ea0aea5 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/ReloadModal.js @@ -0,0 +1,58 @@ +let reloadContainer; + +// const MODAL_SUBTITLE = "Reload needed to complete uninstall"; +const MODAL_TITLE = "Reload required"; + +// eslint-disable-next-line no-unused-vars, no-redeclare +function openReloadModal() { + const triggerModal = () => { + Spicetify.PopupModal.display({ + title: MODAL_TITLE, + content: reloadContainer, + }); + }; + + if (reloadContainer) { + triggerModal(); + return; + } + + reloadContainer = document.createElement("div"); + reloadContainer.id = "marketplace-reload-container"; + + // const optionHeader = document.createElement("h2"); + // optionHeader.innerText = MODAL_SUBTITLE; + + const paragraph = document.createElement("p"); + paragraph.innerText = "A page reload is required to complete this operation."; + + const buttonContainer = document.createElement("div"); + buttonContainer.classList.add("marketplace-reload-modal__button-container"); + + const okayBtn = document.createElement("button"); + okayBtn.id = "marketplace-reload-okay"; + // TODO: add our own classes for styling? + okayBtn.innerText = "Reload now"; + okayBtn.classList.add("main-buttons-button", "main-button-secondary", "main-playlistEditDetailsModal-save"); + okayBtn.onclick = () => { + Spicetify.PopupModal.hide(); + location.reload(); + }; + + const cancelBtn = document.createElement("button"); + cancelBtn.id = "marketplace-reload-cancel"; + cancelBtn.innerText = "Reload later"; + cancelBtn.classList.add("main-buttons-button", "main-button-secondary", "main-playlistEditDetailsModal-save"); + cancelBtn.onclick = () => { + Spicetify.PopupModal.hide(); + }; + + buttonContainer.append(okayBtn, cancelBtn); + + reloadContainer.append( + paragraph, + buttonContainer, + ); + + triggerModal(); +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Settings.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Settings.js new file mode 100644 index 0000000..df84495 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Settings.js @@ -0,0 +1,212 @@ +let configContainer; + +// eslint-disable-next-line no-unused-vars, no-redeclare +function openConfig() { + const triggerModal = () => { + Spicetify.PopupModal.display({ + title: "Marketplace", + content: configContainer, + isLarge: true, + }); + }; + + if (configContainer) { + triggerModal(); + return; + } + + CONFIG.tabsElement = {}; + + const optionHeader = document.createElement("h2"); + optionHeader.innerText = "Options"; + + const tabsHeader = document.createElement("h2"); + tabsHeader.innerText = "Tabs"; + + const tabsContainer = document.createElement("div"); + + function stackTabElements() { + CONFIG.tabs.forEach(({ name }, index) => { + const el = CONFIG.tabsElement[name]; + + const [ up, down ] = el.querySelectorAll("button"); + if (index === 0) { + up.disabled = true; + down.disabled = false; + } else if (index === (CONFIG.tabs.length - 1)) { + up.disabled = false; + down.disabled = true; + } else { + up.disabled = false; + down.disabled = false; + } + + tabsContainer.append(el); + }); + + gridUpdateTabs && gridUpdateTabs(); + } + + function posCallback(el, dir) { + const id = el.dataset.id; + const curPos = CONFIG.tabs.findIndex(({ name }) => name === id); + const newPos = curPos + dir; + + const temp = CONFIG.tabs[newPos]; + CONFIG.tabs[newPos] = CONFIG.tabs[curPos]; + CONFIG.tabs[curPos] = temp; + + localStorage.setItem( + LOCALSTORAGE_KEYS.tabs, + JSON.stringify(CONFIG.tabs), + ); + + stackTabElements(); + } + + function toggleCallback(el) { + const id = el.dataset.id; + const slider = el.querySelector("input[type='checkbox']"); + + // If we're removing the tab, it's not in the enabled tabs list + const toRemove = !slider.checked; + const tabItem = CONFIG.tabs.filter(({ name }) => name === id)[0]; + + // Enable/disable tab + tabItem.enabled = !toRemove; + + // Always "remove" because it re-adds it with the right settings/order in stackTabElements() + CONFIG.tabsElement[id].remove(); + + // Persist the new enabled tabs + localStorage.setItem(LOCALSTORAGE_KEYS.tabs, JSON.stringify(CONFIG.tabs)); + + // Refresh + stackTabElements(); + } + + // Create the tabs settings DOM elements + CONFIG.tabs.forEach(({ name }) => { + CONFIG.tabsElement[name] = createTabOption( + name, + posCallback, + toggleCallback, + ); + }); + stackTabElements(); + configContainer = document.createElement("div"); + configContainer.id = "marketplace-config-container"; + + // Reset Marketplace section + const resetHeader = document.createElement("h2"); + resetHeader.innerText = "Reset Marketplace"; + const resetContainer = document.createElement("div"); + resetContainer.innerHTML = ` +
+ +
+ +
+
`; + const resetBtn = resetContainer.querySelector("button"); + resetBtn.onclick = resetMarketplace; // in Utils.js + + configContainer.append( + optionHeader, + createToggle("Stars count", "stars"), + createToggle("Tags", "tags"), + createToggle("Hide installed in Marketplace", "hideInstalled"), + createToggle("Shift Colors Every Minute", "colorShift"), + // TODO: add these features maybe? + // createSlider("Followers count", "followers"), + // createSlider("Post type", "type"), + tabsHeader, + tabsContainer, + resetHeader, + resetContainer, + ); + + triggerModal(); + + const closeButton = document.querySelector("body > generic-modal button.main-trackCreditsModal-closeBtn"); + const modalOverlay = document.querySelector("body > generic-modal > div"); + if (closeButton instanceof HTMLElement + && modalOverlay instanceof HTMLElement) { + closeButton.onclick = () => location.reload(); + closeButton.setAttribute("style", "cursor: pointer;"); + modalOverlay.onclick = (e) => { + // If clicked on overlay, also reload + if (e.target === modalOverlay) { + location.reload(); + } + }; + } +} + +// Generate the DOM markup for a toggle switch +function renderToggle(enabled, classes) { + return ` + + `; +} + +function createToggle(name, key) { + const container = document.createElement("div"); + container.innerHTML = ` +
+ +
+ ${renderToggle(!!CONFIG.visual[key])} +
+
`; + + const slider = container.querySelector("input"); + + slider.onchange = () => { + const state = slider.checked; + CONFIG.visual[key] = state; + localStorage.setItem(`marketplace:${key}`, String(state)); + gridUpdatePostsVisual && gridUpdatePostsVisual(); + }; + + return container; +} + +function createTabOption(id, posCallback, toggleCallback) { + const tabItem = CONFIG.tabs.filter(({ name }) => name === id)[0]; + const tabEnabled = tabItem.enabled; + + const container = document.createElement("div"); + container.dataset.id = id; + container.innerHTML = ` +
+

${id}

+
+ + + ${renderToggle(tabEnabled, id === "Extensions" ? ["disabled"] : [])} +
+
`; + + const [ up, down ] = container.querySelectorAll("button"); + const toggle = container.querySelector("input"); + + up.onclick = () => posCallback(container, -1); + down.onclick = () => posCallback(container, 1); + toggle.onchange = () => toggleCallback(container); + + return container; +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/SortBox.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/SortBox.js new file mode 100644 index 0000000..ecc21c3 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/SortBox.js @@ -0,0 +1,28 @@ +/// +// eslint-disable-next-line no-redeclare, no-unused-vars +const SortBox = (props) => { + // constructor(props) { + // super(props); + // } + + // useEffect(() => { + // setSortBySelected(props.sortBoxOptions.find(props.sortBySelectedFn)); + // }, [props.sortBoxOptions]); + + // if (this.props.sortBoxOptions.length === 0) return null; + // TODO: need to make sure this works for the main card sorting as well for the colour schemes + // const sortBySelected = this.props.sortBoxOptions.filter(a => a.key === sortConfig.by)[0]; + // const [sortBySelected, setSortBySelected] = useState(props.sortBoxOptions.find(props.sortBySelectedFn)); + const sortBySelected = props.sortBoxOptions.find(props.sortBySelectedFn); + // console.log(sortBySelected); + + return react.createElement("div", { + className: "marketplace-sort-bar", + }, react.createElement("div", { + className: "marketplace-sort-container", + }, react.createElement(OptionsMenu, { + options: props.sortBoxOptions, + onSelect: (value) => props.onChange(value), + selected: sortBySelected, + }))); +}; diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/TabBar.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/TabBar.js new file mode 100644 index 0000000..225b8f3 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/TabBar.js @@ -0,0 +1,158 @@ +// eslint-disable-next-line no-redeclare, no-unused-vars +class TabBarItem extends react.Component { + /** + * @param {object} props + * @param {object} props.item + * @param {string} props.item.key + * @param {string} props.item.value + * @param {boolean} props.item.active + * @param {boolean} props.item.enabled + * @param {function} props.switchTo + */ + constructor(props) { + super(props); + } + + render() { + if (!this.props.item.enabled) return null; + + return react.createElement("li", { + className: "marketplace-tabBar-headerItem", + "data-tab": this.props.item.value, + onClick: (event) => { + event.preventDefault(); + this.props.switchTo(this.props.item.key); + }, + }, react.createElement("a", { + "aria-current": "page", + className: `marketplace-tabBar-headerItemLink ${this.props.item.active ? "marketplace-tabBar-active" : ""}`, + draggable: "false", + href: "", + }, react.createElement("span", { + className: "main-type-mestoBold", + }, this.props.item.value))); + } +} + +const TabBarMore = react.memo(({ items, switchTo }) => { + const activeItem = items.find((item) => item.active); + + return react.createElement("li", { + className: `marketplace-tabBar-headerItem ${activeItem ? "marketplace-tabBar-active" : ""}`, + }, react.createElement(OptionsMenu, { + options: items, + onSelect: switchTo, + selected: activeItem, + defaultValue: "More", + bold: true, + })); +}); + +// eslint-disable-next-line no-redeclare, no-unused-vars +const TopBarContent = ({ links, activeLink, switchCallback }) => { + const resizeHost = document.querySelector(".Root__main-view .os-resize-observer-host"); + const [windowSize, setWindowSize] = useState(resizeHost.clientWidth); + const resizeHandler = () => setWindowSize(resizeHost.clientWidth); + + useEffect(() => { + const observer = new ResizeObserver(resizeHandler); + observer.observe(resizeHost); + return () => { + observer.disconnect(); + }; + }, [resizeHandler]); + + return react.createElement(TabBarContext, null, react.createElement(TabBar, { + className: "queue-queueHistoryTopBar-tabBar", + links, + activeLink, + windowSize, + switchCallback, + })); +}; + +const TabBarContext = ({ children }) => { + return reactDOM.createPortal( + react.createElement("div", { + className: "main-topBar-topbarContent", + }, children), + document.querySelector(".main-topBar-topbarContentWrapper"), + ); +}; + +const TabBar = react.memo(({ links, activeLink, switchCallback, windowSize = Infinity }) => { + const tabBarRef = react.useRef(null); + const [childrenSizes, setChildrenSizes] = useState([]); + const [availableSpace, setAvailableSpace] = useState(0); + const [droplistItem, setDroplistItems] = useState([]); + + // Key is the tab name, value is also the tab name, active is if it's active + const options = links.map(({ name, enabled }) => { + const active = name === activeLink; + return ({ key: name, value: name, active, enabled }); + }); + + useEffect(() => { + if (!tabBarRef.current) return; + setAvailableSpace(tabBarRef.current.clientWidth); + }, [windowSize]); + + useEffect(() => { + if (!tabBarRef.current) return; + + const children = Array.from(tabBarRef.current.children); + const tabbarItemSizes = children.map(child => child.clientWidth); + + setChildrenSizes(tabbarItemSizes); + }, [links]); + + useEffect(() => { + if (!tabBarRef.current) return; + + const totalSize = childrenSizes.reduce((a, b) => a + b, 0); + + // Can we render everything? + if (totalSize <= availableSpace) { + setDroplistItems([]); + return; + } + + // The `More` button can be set to _any_ of the children. So we + // reserve space for the largest item instead of always taking + // the last item. + const viewMoreButtonSize = Math.max(...childrenSizes); + + // Figure out how many children we can render while also showing + // the More button + const itemsToHide = []; + let stopWidth = viewMoreButtonSize; + + childrenSizes.forEach((childWidth, i) => { + if (availableSpace >= stopWidth + childWidth) { + stopWidth += childWidth; + } else { + itemsToHide.push(i); + } + }); + + setDroplistItems(itemsToHide); + }, [availableSpace, childrenSizes]); + + return react.createElement("nav", { + className: "marketplace-tabBar marketplace-tabBar-nav", + }, react.createElement("ul", { + className: "marketplace-tabBar-header", + ref: tabBarRef, + }, options + .filter((_, id) => !droplistItem.includes(id)) + .map(item => react.createElement(TabBarItem, { + item, + switchTo: switchCallback, + })), + (droplistItem.length || childrenSizes.length === 0) ? + react.createElement(TabBarMore, { + items: droplistItem.map(i => options[i]).filter(i => i), + switchTo: switchCallback, + }) : null), + ); +}); diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Utils.js b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Utils.js new file mode 100644 index 0000000..ce61ee1 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/src/Utils.js @@ -0,0 +1,160 @@ +/* eslint-disable no-redeclare, no-unused-vars */ +// TODO: Migrate more things to this file + +/** + * Convert hexadeciaml string to rgb values + * @param {string} hex 3 or 6 character hex string + * @returns Array of RGB values + */ +const hexToRGB = (hex) => { + if (hex.length === 3) { + hex = hex.split("").map((char) => char + char).join(""); + } else if (hex.length != 6) { + throw "Only 3- or 6-digit hex colours are allowed."; + } else if (hex.match(/[^0-9a-f]/i)) { + throw "Only hex colours are allowed."; + } + + const aRgbHex = hex.match(/.{1,2}/g); + const aRgb = [ + parseInt(aRgbHex[0], 16), + parseInt(aRgbHex[1], 16), + parseInt(aRgbHex[2], 16), + ]; + return aRgb; +}; + +/** + * Parse INI file into a colour scheme object + * @param {string} data The INI file string data + * @returns Object containing the parsed colour schemes + */ +const parseIni = (data) => { + const regex = { + section: /^\s*\[\s*([^\]]*)\s*\]\s*$/, + param: /^\s*([^=]+?)\s*=\s*(.*?)\s*$/, + comment: /^\s*;.*$/, + }; + let value = {}; + let lines = data.split(/[\r\n]+/); + let section = null; + lines.forEach(function(line) { + if (regex.comment.test(line)) { + return; + } else if (regex.param.test(line)) { + let match = line.match(regex.param); + if (section) { + value[section][match[1]] = match[2]; + } else { + value[match[1]] = match[2]; + } + } else if (regex.section.test(line)) { + let match = line.match(regex.section); + value[match[1]] = {}; + section = match[1]; + } else if (line.length == 0 && section) { + section = null; + } + }); + return value; +}; + +/** + * Loop through the snippets and add the contents of the code as a style tag in the DOM +* @param { { title: string; description: string; code: string;}[] } snippets The snippets to initialize +*/ +// TODO: keep this in sync with the extension.js file +const initializeSnippets = (snippets) => { + // Remove any existing marketplace snippets + const existingSnippets = document.querySelector("style.marketplaceSnippets"); + if (existingSnippets) existingSnippets.remove(); + + const style = document.createElement("style"); + const styleContent = snippets.reduce((accum, snippet) => { + accum += `/* ${snippet.title} - ${snippet.description} */\n`; + accum += `${snippet.code}\n`; + return accum; + }, ""); + + style.innerHTML = styleContent; + style.classList.add("marketplaceSnippets"); + document.head.appendChild(style); +}; + +/** + * Get localStorage data (or fallback value), given a key + * @param {string} key The localStorage key + * @param {any} fallback Fallback value if the key is not found + * @returns The data stored in localStorage, or the fallback value if not found + */ +const getLocalStorageDataFromKey = (key, fallback) => { + return JSON.parse(localStorage.getItem(key)) ?? fallback; +}; + +/** + * Format an array of authors, given the data from the manifest and the repo owner. + * @param {{ name: string; url: string; }[]} authors Array of authors + * @param {string} user The repo owner + * @returns {{ name: string; url: string; }[]} The authors, with anything missing added + */ +const processAuthors = (authors, user) => { + let parsedAuthors = []; + + if (authors && authors.length > 0) { + parsedAuthors = authors; + } else { + parsedAuthors.push({ + name: user, + url: "https://github.com/" + user, + }); + } + + return parsedAuthors; +}; + +/** + * Generate a list of options for the schemes dropdown. + * @param schemes The schemes object from the theme. + * @returns {{ key: string; value: string; }[]} Array of options for the schemes dropdown. + */ +const generateSchemesOptions = (schemes) => { + // e.g. [ { key: "red", value: "Red" }, { key: "dark", value: "Dark" } ] + if (!schemes) return []; + return Object.keys(schemes).map(schemeName => ({ key: schemeName, value: schemeName })); +}; + +/** + * It fetches the blacklist.json file from the GitHub repository and returns the array of blocked repos. + * @returns {Promise} String array of blacklisted repos + */ +const getBlacklist = async () => { + const url = "https://raw.githubusercontent.com/CharlieS1103/spicetify-marketplace/main/blacklist.json"; + const jsonReturned = await fetch(url).then(res => res.json()).catch(() => { }); + return jsonReturned.repos; +}; + +/** + * It fetches the snippets.json file from the Github repository and returns it as a JSON object. + * @returns { Promise<{ title: string; description: string; code: string;}[]> } Array of snippets + */ +const fetchCssSnippets = async () => { + const url = "https://raw.githubusercontent.com/CharlieS1103/spicetify-marketplace/main/snippets.json"; + const json = await fetch(url).then(res => res.json()).catch(() => { }); + return json; +}; + +// Reset any Marketplace localStorage keys (effectively resetting it completely) +const resetMarketplace = () => { + console.log("Resetting Marketplace"); + + // Loop through and reset marketplace keys + Object.keys(localStorage).forEach((key) => { + if (key.startsWith("marketplace:")) { + localStorage.removeItem(key); + console.log(`Removed ${key}`); + } + }); + + console.log("Marketplace has been reset"); + location.reload(); +}; diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/style.css b/dot_config/spicetify/CustomApps/spicetify-marketplace/style.css new file mode 100644 index 0000000..763397f --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/style.css @@ -0,0 +1,1149 @@ +.marketplace-header { + -webkit-box-pack: justify; + -webkit-box-align: center; + align-content: space-between; + align-items: center; + color: var(--spice-text); + display: flex; + justify-content: space-between; + margin: 16px 0; + position: sticky; + flex-direction: row-reverse; + top: 80px; + z-index: 1; +} +.marketplace-header h1 { + position: fixed; + left: 16px; +} +@media (min-width: 1024px) { + .marketplace-header h1 { + left: 32px; + } +} + +.marketplace-header__right { + display: flex; +} + +.marketplace-sort-bar { + align-items: center; + display: flex; +} + +.marketplace-sort-container { + position: relative; + display: flex; +} + +.marketplace-tabBar-headerItem { + -webkit-app-region: no-drag; + display: inline-block; + pointer-events: auto; +} + +.marketplace-tabBar-active { + background-color: var(--spice-tab-active); + border-radius: 4px; +} + +.marketplace-tabBar-headerItemLink { + border-radius: 4px; + color: var(--spice-text); + display: inline-block; + margin: 0 8px 0 0; + padding: 8px 16px; + position: relative; + text-decoration: none !important; + cursor: pointer; +} + +.marketplace-tabBar-nav { + -webkit-app-region: drag; + pointer-events: none; + width: 100%; +} + +.marketplace-tabBar-headerItem .optionsMenu-dropBox { + color: var(--spice-text); + border: 0; + max-width: 150px; + height: 42px; + padding: 0 30px 0 12px; + background-color: initial; + cursor: pointer; + appearance: none; +} + +.marketplace-tabBar-headerItem .optionsMenu-dropBox svg { + position: absolute; + margin-left: 8px; +} + +.marketplace-settings-button { + border-radius: 4px; + color: var(--spice-text); + display: inline-block; + padding: 10px 14px 6px; + margin-left: 8px; + position: relative; + text-decoration: none !important; + cursor: pointer; + background-color: transparent; + border: none; + background-color: var(--spice-sidebar); +} +.marketplace-settings-button:hover { + background-color: var(--spice-tab-active); +} + +.searchbar--bar__wrapper { + display: flex; + flex-direction: column; + align-items: flex-end; + flex-grow: 1; +} + +.searchbar-bar { + border: unset; + background-color: var(--spice-sidebar) !important; + border-radius: 5px !important; + padding-left: 10px; + padding-right: 10px; + color: var(--spice-text) !important; + z-index: 1000; +} + +.marketplace-sort-container .optionsMenu-dropBox { + grid-gap: 8px; + align-items: center; + background-color: var(--spice-sidebar); + border-radius: 4px; + display: grid; + grid-template-columns: 1fr 16px; + color: rgba(var(--spice-rgb-text), 0.7); + border: 0; + height: 32px; + margin-left: 8px; + padding: 0 8px 0 12px; +} +.marketplace-sort-container .optionsMenu-dropBox:hover { + color: var(--spice-text); +} + +option { + background-color: var(--spice-button); +} + +.marketplace-add-snippet-btn { + position: fixed; + bottom: 32px; + right: 32px; +} +.marketplace-card-type-heading { + margin: 1em 0 0.5em; + color: var(--spice-subtext); + font-size: 1.3em; +} + +.marketplace-grid .main-card-draggable { + display: flex; + flex-direction: column; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata { + flex-grow: 1; + display: flex; + flex-direction: column; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata .marketplace-card__author ~ .marketplace-card__author::before { + content: ", "; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata ul.marketplace-card__tags { + display: flex; + flex-wrap: wrap; + gap: 8px; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata li.marketplace-card__tag { + background-color: var(--spice-tab-active); + border-radius: 4px; + padding: 0px 9px 2px; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata li.marketplace-card__tag[data-tag="external JS"] { + background-color: #dc3838; + color: #fff; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata li.marketplace-card__tag[data-tag=dark] { + background-color: #000; + color: #fff; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata li.marketplace-card__tag[data-tag=light] { + background-color: #fff; + color: #333; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata .marketplace-card__tags-more-btn { + background-color: var(--spice-tab-active); + border-radius: 4px; + padding: 0px 9px 2px; + margin-top: 8px; + border: none; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata .marketplace-card__tags-more-btn:hover, .marketplace-grid .main-card-draggable .main-card-cardMetadata .marketplace-card__tags-more-btn:focus { + filter: brightness(1.4); +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata .marketplace-card-desc { + font: -webkit-small-control; + margin: 12px 0; + display: -webkit-box; + overflow: hidden; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata .marketplace-card__bottom-meta { + margin-top: auto; + margin-bottom: 0; +} +.marketplace-grid .main-card-draggable .main-card-cardMetadata .marketplace-card__bottom-meta + .marketplace-card__bottom-meta { + margin-top: 8px; +} +.marketplace-grid[data-tab=Installed]:empty::after { + content: "No installed extensions"; + display: block; +} + +.main-cardImage-imageWrapper--error::before { + content: ""; + display: block; + position: absolute; + overflow: hidden; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: 100%; + width: 100%; + background-color: var(--spice-subtext); + filter: brightness(50%); + /* https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path */ + /* https://icons8.com/icons/set/box */ + clip-path: path("M41.20833,21.5c-2.54758,0.00136 -4.90298,1.35492 -6.18685,3.55534l-12.54167,21.5c-0.64062,1.09578 -0.97875,2.34203 -0.97982,3.61133v86c0,7.83362 6.49972,14.33333 14.33333,14.33333h100.33333c7.83362,0 14.33333,-6.49972 14.33333,-14.33333v-86c-0.00107,-1.2693 -0.3392,-2.51555 -0.97982,-3.61133l-12.54167,-21.5c-1.28387,-2.20042 -3.63926,-3.55398 -6.18685,-3.55534zM45.32357,35.83333h81.35286l8.35645,14.33333h-98.06576zM35.83333,64.5h100.33333v71.66667h-100.33333zM64.5,78.83333v14.33333h43v-14.33333z"); + clip-rule: nonzero; + transform: scale(0.5); +} + +.main-cardImage-imageWrapper--error { + box-shadow: none; +} + +.main-card-card:hover .main-cardImage-imageWrapper--error::before { + filter: brightness(100%); +} + +.marketplace-cardSubHeader, +.marketplace-card__bottom-meta { + margin-top: 4px; + white-space: normal; + color: var(--spice-subtext); +} + +.marketplace-cardSubHeader { + display: flex; + flex-direction: column; + gap: 8px; +} + +.marketplace-card--snippet .main-card-imageContainer { + display: none; +} + +.marketplace-card--installed { + flex: 0 !important; + -webkit-box-flex: 0 !important; + border: 1px solid var(--spice-button); +} +.GenericModal[aria-label=Marketplace] .main-embedWidgetGenerator-container { + background-color: var(--spice-tab-active); +} +.GenericModal[aria-label=Marketplace] .x-toggle-wrapper { + cursor: pointer; + margin-inline-start: 12px; +} +.GenericModal[aria-label=Marketplace] .x-toggle-wrapper.disabled { + opacity: 0; + pointer-events: none; +} + +.setting-row::after { + content: ""; + display: table; + clear: both; +} +.setting-row .col { + display: flex; + padding: 10px 0; + align-items: center; +} +.setting-row .col.description { + float: left; + padding-right: 15px; + cursor: default; +} +.setting-row .col.action { + float: right; + text-align: right; +} + +button.arrow-btn { + align-items: center; + border: 0px; + border-radius: 50%; + background-color: rgba(var(--spice-rgb-shadow), 0.7); + color: var(--spice-text); + cursor: pointer; + display: flex; + margin-inline-start: 12px; + padding: 8px; +} +button.arrow-btn.small { + width: 24px; + height: 24px; + padding: 5px; +} +button.arrow-btn.disabled, button.arrow-btn[disabled] { + color: rgba(var(--spice-rgb-text), 0.3); +} + +#marketplace-add-snippet-container input, textarea { + width: 100%; + margin-bottom: 10px; + padding: 3px 5px; + background-color: var(--spice-main); + color: var(--spice-text); + font-size: 14px; + border: 1px solid var(--spice-button); + border-radius: 4px; +} +/* Need to hijack height because .GenericModal has it set to 90% via style attr... */ +.GenericModal[aria-label="Reload required"] { + height: 240px !important; +} + +.marketplace-reload-modal__button-container { + display: flex; + justify-content: center; + padding-top: 18px; +} + +.marketplace-reload-modal__button-container button { + margin: 18px; + padding: 8px 24px; +} +#marketplace-add-snippet-container { + display: flex; + flex-direction: column; + gap: 16px; +} +#marketplace-add-snippet-container input, #marketplace-add-snippet-container textarea { + width: 100%; + margin-bottom: 10px; + padding: 3px 5px; + background-color: var(--spice-main); + color: var(--spice-text); + font-size: 14px; + border: 1px solid var(--spice-button); + border-radius: 4px; +} + +.marketplace-customCSS-input-container { + display: flex; + flex-direction: column; +} + +#marketplace-customCSS-submit { + margin-left: auto; +} +@charset "UTF-8"; +/* Readme pages */ +.spicetify-root-vars { + --spice-shadow: #1f1525; + --spice-text: #ffffff; + --spice-sidebar: #0a0e14; + --spice-button-disabled: #535353; + --spice-main: #0a0e14; + --spice-misc: #bfbfbf; + --spice-selected-row: #909090; + --spice-subtext: #f0f0f0; + --spice-tab-active: #795b84; + --spice-button: #6f3c89; + --spice-notification: #6f3c89; + --spice-player: #0a0e14; + --spice-notification-error: #e22134; + --spice-card: #6f3c89; + --spice-button-active: #795b84; +} +:root { + --background-body: var(--spice-main); + --background: var(--spice-main); + --background-alt: var(--spice-shadow); + --selection: #1c76c5; + --text-main: var(--spice-subtext); + --text-bright: var(--spice-text); + --text-muted: #a9b1ba; + --links: #41adff; + --focus: #0096bfab; + --border: #526980; + --code: #ffbe85; + --animation-duration: 0.1s; + --button-base: #0c151c; + --button-hover: #040a0f; + --scrollbar-thumb: var(--button-hover); + --scrollbar-thumb-hover: rgb(0, 0, 0); + --form-placeholder: #a9a9a9; + --form-text: #fff; + --variable: #d941e2; + --highlight: #efdb43; + --select-arrow: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' height='62.5' width='116.9' fill='%23efefef'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E"); +} +#marketplace-readme { + user-select: text; + /* + * Forced dark theme version + */ + font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji", sans-serif; + line-height: 1.4; + max-width: 800px; + margin: 20px auto; + padding: 0 10px; + word-wrap: break-word; + color: #dbdbdb; + color: var(--text-main); + background: #202b38; + background: var(--background-body); + text-rendering: optimizeLegibility; +} +#marketplace-readme button { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; +} +#marketplace-readme input { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; +} +#marketplace-readme textarea { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; +} +#marketplace-readme h1 { + font-size: 2.2em; + margin-top: 0; +} +#marketplace-readme h1, +#marketplace-readme h2, +#marketplace-readme h3, +#marketplace-readme h4, +#marketplace-readme h5, +#marketplace-readme h6 { + margin-bottom: 12px; + margin-top: 24px; +} +#marketplace-readme h1 { + color: #fff; + color: var(--text-bright); +} +#marketplace-readme h2 { + color: #fff; + color: var(--text-bright); +} +#marketplace-readme h3 { + color: #fff; + color: var(--text-bright); +} +#marketplace-readme h4 { + color: #fff; + color: var(--text-bright); +} +#marketplace-readme h5 { + color: #fff; + color: var(--text-bright); +} +#marketplace-readme h6 { + color: #fff; + color: var(--text-bright); +} +#marketplace-readme strong { + color: #fff; + color: var(--text-bright); +} +#marketplace-readme h1, +#marketplace-readme h2, +#marketplace-readme h3, +#marketplace-readme h4, +#marketplace-readme h5, +#marketplace-readme h6, +#marketplace-readme b, +#marketplace-readme strong, +#marketplace-readme th { + font-weight: 600; +} +#marketplace-readme q::before { + content: none; +} +#marketplace-readme q::after { + content: none; +} +#marketplace-readme blockquote { + border-left: 4px solid #0096bfab; + border-left: 4px solid var(--focus); + margin: 1.5em 0; + padding: 0.5em 1em; + font-style: italic; +} +#marketplace-readme q { + border-left: 4px solid #0096bfab; + border-left: 4px solid var(--focus); + margin: 1.5em 0; + padding: 0.5em 1em; + font-style: italic; +} +#marketplace-readme blockquote > footer { + font-style: normal; + border: 0; +} +#marketplace-readme blockquote cite { + font-style: normal; +} +#marketplace-readme address { + font-style: normal; +} +#marketplace-readme a[href^="mailto:"]::before { + content: "📧 "; +} +#marketplace-readme a[href^="tel:"]::before { + content: "📞 "; +} +#marketplace-readme a[href^="sms:"]::before { + content: "💬 "; +} +#marketplace-readme mark { + background-color: #efdb43; + background-color: var(--highlight); + border-radius: 2px; + padding: 0 2px 0 2px; + color: #000; +} +#marketplace-readme a > code, +#marketplace-readme a > strong { + color: inherit; +} +#marketplace-readme button, +#marketplace-readme select, +#marketplace-readme input[type=submit], +#marketplace-readme input[type=reset], +#marketplace-readme input[type=button], +#marketplace-readme input[type=checkbox], +#marketplace-readme input[type=range], +#marketplace-readme input[type=radio] { + cursor: pointer; +} +#marketplace-readme input, +#marketplace-readme select { + display: block; +} +#marketplace-readme [type=checkbox], +#marketplace-readme [type=radio] { + display: initial; +} +#marketplace-readme input { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +#marketplace-readme button { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +#marketplace-readme textarea { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +#marketplace-readme select { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +#marketplace-readme button { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +#marketplace-readme input[type=submit] { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +#marketplace-readme input[type=reset] { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +#marketplace-readme input[type=button] { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +#marketplace-readme button:hover { + background: #040a0f; + background: var(--button-hover); +} +#marketplace-readme input[type=submit]:hover { + background: #040a0f; + background: var(--button-hover); +} +#marketplace-readme input[type=reset]:hover { + background: #040a0f; + background: var(--button-hover); +} +#marketplace-readme input[type=button]:hover { + background: #040a0f; + background: var(--button-hover); +} +#marketplace-readme input[type=color] { + min-height: 2rem; + padding: 8px; + cursor: pointer; +} +#marketplace-readme input[type=checkbox], +#marketplace-readme input[type=radio] { + height: 1em; + width: 1em; +} +#marketplace-readme input[type=radio] { + border-radius: 100%; +} +#marketplace-readme input { + vertical-align: top; +} +#marketplace-readme label { + vertical-align: middle; + margin-bottom: 4px; + display: inline-block; +} +#marketplace-readme input:not([type=checkbox]):not([type=radio]), +#marketplace-readme input[type=range], +#marketplace-readme select, +#marketplace-readme button, +#marketplace-readme textarea { + -webkit-appearance: none; +} +#marketplace-readme textarea { + display: block; + margin-right: 0; + box-sizing: border-box; + resize: vertical; +} +#marketplace-readme textarea:not([cols]) { + width: 100%; +} +#marketplace-readme textarea:not([rows]) { + min-height: 40px; + height: 140px; +} +#marketplace-readme select { + background: #161f27 url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' height='62.5' width='116.9' fill='%23efefef'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E") calc(100% - 12px) 50%/12px no-repeat; + background: var(--background) var(--select-arrow) calc(100% - 12px) 50%/12px no-repeat; + padding-right: 35px; +} +#marketplace-readme select::-ms-expand { + display: none; +} +#marketplace-readme select[multiple] { + padding-right: 10px; + background-image: none; + overflow-y: auto; +} +#marketplace-readme input:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); +} +#marketplace-readme select:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); +} +#marketplace-readme button:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); +} +#marketplace-readme textarea:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); +} +#marketplace-readme input[type=checkbox]:active, +#marketplace-readme input[type=radio]:active, +#marketplace-readme input[type=submit]:active, +#marketplace-readme input[type=reset]:active, +#marketplace-readme input[type=button]:active, +#marketplace-readme input[type=range]:active, +#marketplace-readme button:active { + transform: translateY(2px); +} +#marketplace-readme input:disabled, +#marketplace-readme select:disabled, +#marketplace-readme button:disabled, +#marketplace-readme textarea:disabled { + cursor: not-allowed; + opacity: 0.5; +} +#marketplace-readme ::-moz-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); +} +#marketplace-readme :-ms-input-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); +} +#marketplace-readme ::-ms-input-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); +} +#marketplace-readme ::placeholder { + color: #a9a9a9; + color: var(--form-placeholder); +} +#marketplace-readme fieldset { + border: 1px #0096bfab solid; + border: 1px var(--focus) solid; + border-radius: 6px; + margin: 0; + margin-bottom: 12px; + padding: 10px; +} +#marketplace-readme legend { + font-size: 0.9em; + font-weight: 600; +} +#marketplace-readme input[type=range] { + margin: 10px 0; + padding: 10px 0; + background: transparent; +} +#marketplace-readme input[type=range]:focus { + outline: none; +} +#marketplace-readme input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: 9.5px; + -webkit-transition: 0.2s; + transition: 0.2s; + background: #161f27; + background: var(--background); + border-radius: 3px; +} +#marketplace-readme input[type=range]::-webkit-slider-thumb { + box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d; + height: 20px; + width: 20px; + border-radius: 50%; + background: #526980; + background: var(--border); + -webkit-appearance: none; + margin-top: -7px; +} +#marketplace-readme input[type=range]:focus::-webkit-slider-runnable-track { + background: #161f27; + background: var(--background); +} +#marketplace-readme input[type=range]::-moz-range-track { + width: 100%; + height: 9.5px; + -moz-transition: 0.2s; + transition: 0.2s; + background: #161f27; + background: var(--background); + border-radius: 3px; +} +#marketplace-readme input[type=range]::-moz-range-thumb { + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + height: 20px; + width: 20px; + border-radius: 50%; + background: #526980; + background: var(--border); +} +#marketplace-readme input[type=range]::-ms-track { + width: 100%; + height: 9.5px; + background: transparent; + border-color: transparent; + border-width: 16px 0; + color: transparent; +} +#marketplace-readme input[type=range]::-ms-fill-lower { + background: #161f27; + background: var(--background); + border: 0.2px solid #010101; + border-radius: 3px; + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; +} +#marketplace-readme input[type=range]::-ms-fill-upper { + background: #161f27; + background: var(--background); + border: 0.2px solid #010101; + border-radius: 3px; + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; +} +#marketplace-readme input[type=range]::-ms-thumb { + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + border: 1px solid #000; + height: 20px; + width: 20px; + border-radius: 50%; + background: #526980; + background: var(--border); +} +#marketplace-readme input[type=range]:focus::-ms-fill-lower { + background: #161f27; + background: var(--background); +} +#marketplace-readme input[type=range]:focus::-ms-fill-upper { + background: #161f27; + background: var(--background); +} +#marketplace-readme a { + text-decoration: none; + color: #41adff; + color: var(--links); +} +#marketplace-readme a:hover { + text-decoration: underline; +} +#marketplace-readme code { + background: #161f27; + background: var(--background); + color: #ffbe85; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; +} +#marketplace-readme samp { + background: #161f27; + background: var(--background); + color: #ffbe85; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; +} +#marketplace-readme time { + background: #161f27; + background: var(--background); + color: #ffbe85; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; +} +#marketplace-readme pre > code { + padding: 10px; + display: block; + overflow-x: auto; +} +#marketplace-readme var { + color: #d941e2; + color: var(--variable); + font-style: normal; + font-family: monospace; +} +#marketplace-readme kbd { + background: #161f27; + background: var(--background); + border: 1px solid #526980; + border: 1px solid var(--border); + border-radius: 2px; + color: #dbdbdb; + color: var(--text-main); + padding: 2px 4px 2px 4px; +} +#marketplace-readme img, +#marketplace-readme video { + max-width: 100%; + height: auto; +} +#marketplace-readme hr { + border: none; + border-top: 1px solid #526980; + border-top: 1px solid var(--border); +} +#marketplace-readme table { + border-collapse: collapse; + margin-bottom: 10px; + width: 100%; + table-layout: fixed; +} +#marketplace-readme table caption { + text-align: left; +} +#marketplace-readme td, +#marketplace-readme th { + padding: 6px; + text-align: left; + vertical-align: top; + word-wrap: break-word; +} +#marketplace-readme thead { + border-bottom: 1px solid #526980; + border-bottom: 1px solid var(--border); +} +#marketplace-readme tfoot { + border-top: 1px solid #526980; + border-top: 1px solid var(--border); +} +#marketplace-readme tbody tr:nth-child(even) { + background-color: #161f27; + background-color: var(--background); +} +#marketplace-readme tbody tr:nth-child(even) button { + background-color: #1a242f; + background-color: var(--background-alt); +} +#marketplace-readme tbody tr:nth-child(even) button:hover { + background-color: #202b38; + background-color: var(--background-body); +} +#marketplace-readme ::-webkit-scrollbar { + height: 10px; + width: 10px; +} +#marketplace-readme ::-webkit-scrollbar-track { + background: #161f27; + background: var(--background); + border-radius: 6px; +} +#marketplace-readme ::-webkit-scrollbar-thumb { + background: #040a0f; + background: var(--scrollbar-thumb); + border-radius: 6px; +} +#marketplace-readme ::-webkit-scrollbar-thumb:hover { + background: black; + background: var(--scrollbar-thumb-hover); +} +#marketplace-readme ::-moz-selection { + background-color: #1c76c5; + background-color: var(--selection); + color: #fff; + color: var(--text-bright); +} +#marketplace-readme ::selection { + background-color: #1c76c5; + background-color: var(--selection); + color: #fff; + color: var(--text-bright); +} +#marketplace-readme details { + display: flex; + flex-direction: column; + align-items: flex-start; + background-color: #1a242f; + background-color: var(--background-alt); + padding: 10px 10px 0; + margin: 1em 0; + border-radius: 6px; + overflow: hidden; +} +#marketplace-readme details[open] { + padding: 10px; +} +#marketplace-readme details > :last-child { + margin-bottom: 0; +} +#marketplace-readme details[open] summary { + margin-bottom: 10px; +} +#marketplace-readme summary { + display: list-item; + background-color: #161f27; + background-color: var(--background); + padding: 10px; + margin: -10px -10px 0; + cursor: pointer; + outline: none; +} +#marketplace-readme summary:hover, +#marketplace-readme summary:focus { + text-decoration: underline; +} +#marketplace-readme details > :not(summary) { + margin-top: 0; +} +#marketplace-readme summary::-webkit-details-marker { + color: #dbdbdb; + color: var(--text-main); +} +#marketplace-readme dialog { + background-color: #1a242f; + background-color: var(--background-alt); + color: #dbdbdb; + color: var(--text-main); + border: none; + border-radius: 6px; + border-color: #526980; + border-color: var(--border); + padding: 10px 30px; +} +#marketplace-readme dialog > header:first-child { + background-color: #161f27; + background-color: var(--background); + border-radius: 6px 6px 0 0; + margin: -10px -30px 10px; + padding: 10px; + text-align: center; +} +#marketplace-readme dialog::-webkit-backdrop { + background: #0000009c; + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} +#marketplace-readme dialog::backdrop { + background: #0000009c; + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} +#marketplace-readme footer { + border-top: 1px solid #526980; + border-top: 1px solid var(--border); + padding-top: 10px; + color: #a9b1ba; + color: var(--text-muted); +} +#marketplace-readme body > footer { + margin-top: 40px; +} +@media print { + #marketplace-readme body, +#marketplace-readme pre, +#marketplace-readme code, +#marketplace-readme summary, +#marketplace-readme details, +#marketplace-readme button, +#marketplace-readme input, +#marketplace-readme textarea { + background-color: #fff; + } + #marketplace-readme button, +#marketplace-readme input, +#marketplace-readme textarea { + border: 1px solid #000; + } + #marketplace-readme body, +#marketplace-readme h1, +#marketplace-readme h2, +#marketplace-readme h3, +#marketplace-readme h4, +#marketplace-readme h5, +#marketplace-readme h6, +#marketplace-readme pre, +#marketplace-readme code, +#marketplace-readme button, +#marketplace-readme input, +#marketplace-readme textarea, +#marketplace-readme footer, +#marketplace-readme summary, +#marketplace-readme strong { + color: #000; + } + #marketplace-readme summary::marker { + color: #000; + } + #marketplace-readme summary::-webkit-details-marker { + color: #000; + } + #marketplace-readme tbody tr:nth-child(even) { + background-color: #f2f2f2; + } + #marketplace-readme a { + color: #00f; + text-decoration: underline; + } +} +#marketplace-readme code { + border: 1px solid var(--spice-button-disabled); +} +#marketplace-readme ul, #marketplace-readme li { + list-style-position: inside; +} +#marketplace-readme ul li, #marketplace-readme li li { + margin-bottom: 8px; +} +#marketplace-readme ul { + list-style-type: disc; +} +#marketplace-readme ol { + list-style-type: auto; +} +#marketplace-readme p, #marketplace-readme pre, #marketplace-readme code { + margin: 8px 0; +} +#marketplace-readme pre { + overflow-x: auto; +} +#marketplace-readme table { + table-layout: auto; +} +#marketplace-readme table th, #marketplace-readme table td { + border: 1px solid var(--spice-button-disabled); +} +/* +TODO: can we get this added to the default Spicetify stylesheet? +It should fix broken extension modals +*/ +.GenericModal { + background-color: var(--spice-player); +} +/* + TODOs: + - We might want to customize/scope the css classes etc + so we don't interfere with other extension like reddit +*/ +/*# sourceMappingURL=style.css.map */ diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/add-snippet-modal.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/add-snippet-modal.scss new file mode 100644 index 0000000..f5b0b0d --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/add-snippet-modal.scss @@ -0,0 +1,28 @@ +// Entire modal container +#marketplace-add-snippet-container { + display: flex; + flex-direction: column; + gap: 16px; + + input, textarea { + width: 100%; + margin-bottom: 10px; + padding: 3px 5px; + background-color: var(--spice-main); + color: var(--spice-text); + font-size: 14px; + border: 1px solid var(--spice-button); + border-radius: 4px; + } +} + +// Container for label + input +.marketplace-customCSS-input-container { + display: flex; + flex-direction: column; +} + +// Submit button +#marketplace-customCSS-submit { + margin-left: auto; +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/card.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/card.scss new file mode 100644 index 0000000..55e49af --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/card.scss @@ -0,0 +1,150 @@ +// e.g. "Extensions" heading +.marketplace-card-type-heading { + margin: 1em 0 0.5em; + color: var(--spice-subtext); + font-size: 1.3em; +} + +.marketplace-grid { + .main-card-draggable { + display: flex; + flex-direction: column; + + .main-card-cardMetadata { + flex-grow: 1; + display: flex; + flex-direction: column; + + .marketplace-card__author { + // Add comma before authors that have a sibling + & ~ .marketplace-card__author { + &::before { + content: ", "; + } + } + } + + ul.marketplace-card__tags { + display: flex; + flex-wrap: wrap; + gap: 8px; + } + + li.marketplace-card__tag { + background-color: var(--spice-tab-active); + border-radius: 4px; + padding: 0px 9px 2px; + + &[data-tag='external JS'] { + background-color: hsl(0deg 70% 54%); + color: #fff; + } + + &[data-tag='dark'] { + background-color: #000; + color: #fff; + } + + &[data-tag='light'] { + background-color: #fff; + color: #333; + } + } + + .marketplace-card__tags-more-btn { + background-color: var(--spice-tab-active); + border-radius: 4px; + padding: 0px 9px 2px; + margin-top: 8px; + border: none; + + &:hover, &:focus { + filter: brightness(1.4); + } + } + + .marketplace-card-desc { + font: -webkit-small-control; + margin: 12px 0; + display: -webkit-box; + overflow: hidden; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + } + + .marketplace-card__bottom-meta { + margin-top: auto; + margin-bottom: 0; + + // Add space between multiple blurbs + & + .marketplace-card__bottom-meta { + margin-top: 8px; + } + } + } + } + + &[data-tab='Installed'] { + &:empty::after { + content: 'No installed extensions'; + display: block; + } + } +} + +// Card preview image error placeholder +.main-cardImage-imageWrapper--error::before { + content: ''; + display: block; + position: absolute; + overflow: hidden; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: 100%; + width: 100%; + + background-color: var(--spice-subtext); + filter: brightness(50%); + + /* https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path */ + /* https://icons8.com/icons/set/box */ + clip-path: path('M41.20833,21.5c-2.54758,0.00136 -4.90298,1.35492 -6.18685,3.55534l-12.54167,21.5c-0.64062,1.09578 -0.97875,2.34203 -0.97982,3.61133v86c0,7.83362 6.49972,14.33333 14.33333,14.33333h100.33333c7.83362,0 14.33333,-6.49972 14.33333,-14.33333v-86c-0.00107,-1.2693 -0.3392,-2.51555 -0.97982,-3.61133l-12.54167,-21.5c-1.28387,-2.20042 -3.63926,-3.55398 -6.18685,-3.55534zM45.32357,35.83333h81.35286l8.35645,14.33333h-98.06576zM35.83333,64.5h100.33333v71.66667h-100.33333zM64.5,78.83333v14.33333h43v-14.33333z'); + clip-rule: nonzero; + transform: scale(0.5); +} + +.main-cardImage-imageWrapper--error { + box-shadow: none; +} + +.main-card-card:hover .main-cardImage-imageWrapper--error::before { + filter: brightness(100%); +} + +.marketplace-cardSubHeader, +.marketplace-card__bottom-meta { + margin-top: 4px; + white-space: normal; + color: var(--spice-subtext); +} + +// author, stars, etc. +.marketplace-cardSubHeader { + display: flex; + flex-direction: column; + gap: 8px; +} + +.marketplace-card--snippet { + // Hide image preview for CSS snippets + .main-card-imageContainer { display: none; } +} + +.marketplace-card--installed { + flex: 0 !important; + -webkit-box-flex: 0 !important; + + border: 1px solid var(--spice-button); +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/fixes.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/fixes.scss new file mode 100644 index 0000000..2feaf14 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/fixes.scss @@ -0,0 +1,8 @@ +/* +TODO: can we get this added to the default Spicetify stylesheet? +It should fix broken extension modals +*/ + +.GenericModal { + background-color: var(--spice-player); +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/grid.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/grid.scss new file mode 100644 index 0000000..d1fdb61 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/grid.scss @@ -0,0 +1,149 @@ +.marketplace-header { + -webkit-box-pack: justify; + -webkit-box-align: center; + align-content: space-between; + align-items: center; + color: var(--spice-text); + display: flex; + justify-content: space-between; + margin: 16px 0; + + // To position the settings button + colour schemes + position: sticky; + flex-direction: row-reverse; + top: 80px; + z-index: 1; + + h1 { + position: fixed; + left: 16px; + + @media (min-width: 1024px) { + left: 32px; + } + } +} + +.marketplace-header__right { + display: flex; +} + +.marketplace-sort-bar { + align-items: center; + display: flex; +} + +.marketplace-sort-container { + position: relative; + display: flex; +} + +.marketplace-tabBar-headerItem { + -webkit-app-region: no-drag; + display: inline-block; + pointer-events: auto; +} + +.marketplace-tabBar-active { + background-color: var(--spice-tab-active); + border-radius: 4px; +} + +.marketplace-tabBar-headerItemLink { + border-radius: 4px; + color: var(--spice-text); + display: inline-block; + margin: 0 8px 0 0; + padding: 8px 16px; + position: relative; + text-decoration: none !important; + cursor: pointer; +} + +.marketplace-tabBar-nav { + -webkit-app-region: drag; + pointer-events: none; + width: 100%; +} + +.marketplace-tabBar-headerItem .optionsMenu-dropBox { + color: var(--spice-text); + border: 0; + max-width: 150px; + height: 42px; + padding: 0 30px 0 12px; + background-color: initial; + cursor: pointer; + appearance: none; +} + +.marketplace-tabBar-headerItem .optionsMenu-dropBox svg { + position: absolute; + margin-left: 8px; +} + +.marketplace-settings-button { + border-radius: 4px; + color: var(--spice-text); + display: inline-block; + padding: 10px 14px 6px; + margin-left: 8px; + position: relative; + text-decoration: none !important; + cursor: pointer; + background-color: transparent; + border: none; + background-color: var(--spice-sidebar); + + &:hover { + background-color: var(--spice-tab-active); + } +} + +// Search bar +.searchbar--bar__wrapper { + display: flex; + flex-direction: column; + align-items: flex-end; + flex-grow: 1; +} +.searchbar-bar { + border: unset; + background-color: var(--spice-sidebar) !important; + border-radius: 5px !important; + padding-left: 10px; + padding-right: 10px; + color: var(--spice-text) !important; + z-index: 1000; +} + +.marketplace-sort-container { + // The dropdown menus (sort by) + .optionsMenu-dropBox { + grid-gap: 8px; + align-items: center; + background-color: var(--spice-sidebar); + border-radius: 4px; + display: grid; + grid-template-columns: 1fr 16px; + color: rgba(var(--spice-rgb-text), .7); + border: 0; + height: 32px; + margin-left: 8px; + padding: 0 8px 0 12px; + + &:hover { + color: var(--spice-text); + } + } +} +option { + background-color: var(--spice-button); +} + +// "Add CSS" button +.marketplace-add-snippet-btn { + position: fixed; + bottom: 32px; + right: 32px; +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/readme-pages.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/readme-pages.scss new file mode 100644 index 0000000..8556696 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/readme-pages.scss @@ -0,0 +1,971 @@ +/* Readme pages */ +// TODO: This is just copy-pasted water.css (https://watercss.kognise.dev/) +// We probably want to customize and make it use the spicetify colours if possible +// I put custom fixes at the bottom of the file + +// TODO: I wanted to get it to just @import the external URL and customize the colours, +// but I'm not sure how to get that working yet +// See here? https://www.npmjs.com/package/postcss-import-url +// @import url(https://cdn.jsdelivr.net/npm/water.css@2/out/water.css); + +// (This is just for reference) +.spicetify-root-vars { + --spice-shadow: #1f1525; + --spice-text: #ffffff; + --spice-sidebar: #0a0e14; + --spice-button-disabled: #535353; + --spice-main: #0a0e14; + --spice-misc: #bfbfbf; + --spice-selected-row: #909090; + --spice-subtext: #f0f0f0; + --spice-tab-active: #795b84; + --spice-button: #6f3c89; + --spice-notification: #6f3c89; + --spice-player: #0a0e14; + --spice-notification-error: #e22134; + --spice-card: #6f3c89; + --spice-button-active: #795b84; +} + +:root { + // --background-body: #202b38; + --background-body: var(--spice-main); + + // TODO: what do i use for this? nothing seems suitable + // --background: #161f27; + // --background: rgba(var(--spice-main), 0.5); + // --background: var(--spice-shadow); + --background: var(--spice-main); + + // TODO: idk if this is a good colour choice + // --background-alt: #1a242f; + --background-alt: var(--spice-shadow); + + --selection: #1c76c5; + + // --text-main: #dbdbdb; + --text-main: var(--spice-subtext); + + // --text-bright: #fff; + --text-bright: var(--spice-text); + + --text-muted: #a9b1ba; + + --links: #41adff; + + --focus: #0096bfab; + + --border: #526980; + + --code: #ffbe85; + + --animation-duration: 0.1s; + + --button-base: #0c151c; + + --button-hover: #040a0f; + + --scrollbar-thumb: var(--button-hover); + + --scrollbar-thumb-hover: rgb(0, 0, 0); + + --form-placeholder: #a9a9a9; + + --form-text: #fff; + + --variable: #d941e2; + + --highlight: #efdb43; + + --select-arrow: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' height='62.5' width='116.9' fill='%23efefef'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E"); +} + +#marketplace-readme { + // Allow selecting text + user-select: text; + + /* + * Forced dark theme version + */ + + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', + 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', + 'Helvetica Neue', 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', + sans-serif; + line-height: 1.4; + max-width: 800px; + margin: 20px auto; + padding: 0 10px; + word-wrap: break-word; + color: #dbdbdb; + color: var(--text-main); + background: #202b38; + background: var(--background-body); + text-rendering: optimizeLegibility; + button { + transition: background-color 0.1s linear, border-color 0.1s linear, + color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, + color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, + transform var(--animation-duration) ease; + } + + input { + transition: background-color 0.1s linear, border-color 0.1s linear, + color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, + color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, + transform var(--animation-duration) ease; + } + + textarea { + transition: background-color 0.1s linear, border-color 0.1s linear, + color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, + color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, + transform var(--animation-duration) ease; + } + + h1 { + font-size: 2.2em; + margin-top: 0; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + margin-bottom: 12px; + margin-top: 24px; + } + + h1 { + color: #fff; + color: var(--text-bright); + } + + h2 { + color: #fff; + color: var(--text-bright); + } + + h3 { + color: #fff; + color: var(--text-bright); + } + + h4 { + color: #fff; + color: var(--text-bright); + } + + h5 { + color: #fff; + color: var(--text-bright); + } + + h6 { + color: #fff; + color: var(--text-bright); + } + + strong { + color: #fff; + color: var(--text-bright); + } + + h1, + h2, + h3, + h4, + h5, + h6, + b, + strong, + th { + font-weight: 600; + } + + q::before { + content: none; + } + + q::after { + content: none; + } + + blockquote { + border-left: 4px solid #0096bfab; + border-left: 4px solid var(--focus); + margin: 1.5em 0; + padding: 0.5em 1em; + font-style: italic; + } + + q { + border-left: 4px solid #0096bfab; + border-left: 4px solid var(--focus); + margin: 1.5em 0; + padding: 0.5em 1em; + font-style: italic; + } + + blockquote > footer { + font-style: normal; + border: 0; + } + + blockquote cite { + font-style: normal; + } + + address { + font-style: normal; + } + + a[href^='mailto\:']::before { + content: '📧 '; + } + + a[href^='tel\:']::before { + content: '📞 '; + } + + a[href^='sms\:']::before { + content: '💬 '; + } + + mark { + background-color: #efdb43; + background-color: var(--highlight); + border-radius: 2px; + padding: 0 2px 0 2px; + color: #000; + } + + a > code, + a > strong { + color: inherit; + } + + button, + select, + input[type='submit'], + input[type='reset'], + input[type='button'], + input[type='checkbox'], + input[type='range'], + input[type='radio'] { + cursor: pointer; + } + + input, + select { + display: block; + } + + [type='checkbox'], + [type='radio'] { + display: initial; + } + + input { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; + } + + button { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; + } + + textarea { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; + } + + select { + color: #fff; + color: var(--form-text); + background-color: #161f27; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; + } + + button { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; + } + + input[type='submit'] { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; + } + + input[type='reset'] { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; + } + + input[type='button'] { + background-color: #0c151c; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; + } + + button:hover { + background: #040a0f; + background: var(--button-hover); + } + + input[type='submit']:hover { + background: #040a0f; + background: var(--button-hover); + } + + input[type='reset']:hover { + background: #040a0f; + background: var(--button-hover); + } + + input[type='button']:hover { + background: #040a0f; + background: var(--button-hover); + } + + input[type='color'] { + min-height: 2rem; + padding: 8px; + cursor: pointer; + } + + input[type='checkbox'], + input[type='radio'] { + height: 1em; + width: 1em; + } + + input[type='radio'] { + border-radius: 100%; + } + + input { + vertical-align: top; + } + + label { + vertical-align: middle; + margin-bottom: 4px; + display: inline-block; + } + + input:not([type='checkbox']):not([type='radio']), + input[type='range'], + select, + button, + textarea { + -webkit-appearance: none; + } + + textarea { + display: block; + margin-right: 0; + box-sizing: border-box; + resize: vertical; + } + + textarea:not([cols]) { + width: 100%; + } + + textarea:not([rows]) { + min-height: 40px; + height: 140px; + } + + select { + background: #161f27 + url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' height='62.5' width='116.9' fill='%23efefef'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E") + calc(100% - 12px) 50% / 12px no-repeat; + background: var(--background) var(--select-arrow) calc(100% - 12px) 50% / + 12px no-repeat; + padding-right: 35px; + } + + select::-ms-expand { + display: none; + } + + select[multiple] { + padding-right: 10px; + background-image: none; + overflow-y: auto; + } + + input:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); + } + + select:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); + } + + button:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); + } + + textarea:focus { + box-shadow: 0 0 0 2px #0096bfab; + box-shadow: 0 0 0 2px var(--focus); + } + + input[type='checkbox']:active, + input[type='radio']:active, + input[type='submit']:active, + input[type='reset']:active, + input[type='button']:active, + input[type='range']:active, + button:active { + transform: translateY(2px); + } + + input:disabled, + select:disabled, + button:disabled, + textarea:disabled { + cursor: not-allowed; + opacity: 0.5; + } + + ::-moz-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } + + :-ms-input-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } + + ::-ms-input-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } + + ::placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } + + fieldset { + border: 1px #0096bfab solid; + border: 1px var(--focus) solid; + border-radius: 6px; + margin: 0; + margin-bottom: 12px; + padding: 10px; + } + + legend { + font-size: 0.9em; + font-weight: 600; + } + + input[type='range'] { + margin: 10px 0; + padding: 10px 0; + background: transparent; + } + + input[type='range']:focus { + outline: none; + } + + input[type='range']::-webkit-slider-runnable-track { + width: 100%; + height: 9.5px; + -webkit-transition: 0.2s; + transition: 0.2s; + background: #161f27; + background: var(--background); + border-radius: 3px; + } + + input[type='range']::-webkit-slider-thumb { + box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d; + height: 20px; + width: 20px; + border-radius: 50%; + background: #526980; + background: var(--border); + -webkit-appearance: none; + margin-top: -7px; + } + + input[type='range']:focus::-webkit-slider-runnable-track { + background: #161f27; + background: var(--background); + } + + input[type='range']::-moz-range-track { + width: 100%; + height: 9.5px; + -moz-transition: 0.2s; + transition: 0.2s; + background: #161f27; + background: var(--background); + border-radius: 3px; + } + + input[type='range']::-moz-range-thumb { + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + height: 20px; + width: 20px; + border-radius: 50%; + background: #526980; + background: var(--border); + } + + input[type='range']::-ms-track { + width: 100%; + height: 9.5px; + background: transparent; + border-color: transparent; + border-width: 16px 0; + color: transparent; + } + + input[type='range']::-ms-fill-lower { + background: #161f27; + background: var(--background); + border: 0.2px solid #010101; + border-radius: 3px; + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + } + + input[type='range']::-ms-fill-upper { + background: #161f27; + background: var(--background); + border: 0.2px solid #010101; + border-radius: 3px; + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + } + + input[type='range']::-ms-thumb { + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + border: 1px solid #000; + height: 20px; + width: 20px; + border-radius: 50%; + background: #526980; + background: var(--border); + } + + input[type='range']:focus::-ms-fill-lower { + background: #161f27; + background: var(--background); + } + + input[type='range']:focus::-ms-fill-upper { + background: #161f27; + background: var(--background); + } + + a { + text-decoration: none; + color: #41adff; + color: var(--links); + } + + a:hover { + text-decoration: underline; + } + + code { + background: #161f27; + background: var(--background); + color: #ffbe85; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; + } + + samp { + background: #161f27; + background: var(--background); + color: #ffbe85; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; + } + + time { + background: #161f27; + background: var(--background); + color: #ffbe85; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; + } + + pre > code { + padding: 10px; + display: block; + overflow-x: auto; + } + + var { + color: #d941e2; + color: var(--variable); + font-style: normal; + font-family: monospace; + } + + kbd { + background: #161f27; + background: var(--background); + border: 1px solid #526980; + border: 1px solid var(--border); + border-radius: 2px; + color: #dbdbdb; + color: var(--text-main); + padding: 2px 4px 2px 4px; + } + + img, + video { + max-width: 100%; + height: auto; + } + + hr { + border: none; + border-top: 1px solid #526980; + border-top: 1px solid var(--border); + } + + table { + border-collapse: collapse; + margin-bottom: 10px; + width: 100%; + table-layout: fixed; + } + + table caption { + text-align: left; + } + + td, + th { + padding: 6px; + text-align: left; + vertical-align: top; + word-wrap: break-word; + } + + thead { + border-bottom: 1px solid #526980; + border-bottom: 1px solid var(--border); + } + + tfoot { + border-top: 1px solid #526980; + border-top: 1px solid var(--border); + } + + tbody tr:nth-child(even) { + background-color: #161f27; + background-color: var(--background); + } + + tbody tr:nth-child(even) button { + background-color: #1a242f; + background-color: var(--background-alt); + } + + tbody tr:nth-child(even) button:hover { + background-color: #202b38; + background-color: var(--background-body); + } + + ::-webkit-scrollbar { + height: 10px; + width: 10px; + } + + ::-webkit-scrollbar-track { + background: #161f27; + background: var(--background); + border-radius: 6px; + } + + ::-webkit-scrollbar-thumb { + background: #040a0f; + background: var(--scrollbar-thumb); + border-radius: 6px; + } + + ::-webkit-scrollbar-thumb:hover { + background: rgb(0, 0, 0); + background: var(--scrollbar-thumb-hover); + } + + ::-moz-selection { + background-color: #1c76c5; + background-color: var(--selection); + color: #fff; + color: var(--text-bright); + } + + ::selection { + background-color: #1c76c5; + background-color: var(--selection); + color: #fff; + color: var(--text-bright); + } + + details { + display: flex; + flex-direction: column; + align-items: flex-start; + background-color: #1a242f; + background-color: var(--background-alt); + padding: 10px 10px 0; + margin: 1em 0; + border-radius: 6px; + overflow: hidden; + } + + details[open] { + padding: 10px; + } + + details > :last-child { + margin-bottom: 0; + } + + details[open] summary { + margin-bottom: 10px; + } + + summary { + display: list-item; + background-color: #161f27; + background-color: var(--background); + padding: 10px; + margin: -10px -10px 0; + cursor: pointer; + outline: none; + } + + summary:hover, + summary:focus { + text-decoration: underline; + } + + details > :not(summary) { + margin-top: 0; + } + + summary::-webkit-details-marker { + color: #dbdbdb; + color: var(--text-main); + } + + dialog { + background-color: #1a242f; + background-color: var(--background-alt); + color: #dbdbdb; + color: var(--text-main); + border: none; + border-radius: 6px; + border-color: #526980; + border-color: var(--border); + padding: 10px 30px; + } + + dialog > header:first-child { + background-color: #161f27; + background-color: var(--background); + border-radius: 6px 6px 0 0; + margin: -10px -30px 10px; + padding: 10px; + text-align: center; + } + + dialog::-webkit-backdrop { + background: #0000009c; + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); + } + + dialog::backdrop { + background: #0000009c; + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); + } + + footer { + border-top: 1px solid #526980; + border-top: 1px solid var(--border); + padding-top: 10px; + color: #a9b1ba; + color: var(--text-muted); + } + + body > footer { + margin-top: 40px; + } + + @media print { + body, + pre, + code, + summary, + details, + button, + input, + textarea { + background-color: #fff; + } + + button, + input, + textarea { + border: 1px solid #000; + } + + body, + h1, + h2, + h3, + h4, + h5, + h6, + pre, + code, + button, + input, + textarea, + footer, + summary, + strong { + color: #000; + } + + summary::marker { + color: #000; + } + + summary::-webkit-details-marker { + color: #000; + } + + tbody tr:nth-child(even) { + background-color: #f2f2f2; + } + + a { + color: #00f; + text-decoration: underline; + } + } + + // === Custom tweaks to water.css === + code { + // TODO: I added this myself to try and make the code blocks look presentable + // since I don't havea good background colour + border: 1px solid var(--spice-button-disabled); + } + + // Add some basic styling (Spotify has it removed) + ul, li { + list-style-position: inside; + + li { + margin-bottom: 8px; + } + } + + ul { list-style-type: disc; } + + ol { list-style-type: auto; } + + // Add some basic margin + p, pre, code { + margin: 8px 0; + } + + // Make single-line code blocks not trail offscreen + pre { + overflow-x: auto; + } + + table { + // Stop install directions "platform/path" stuff from doing the widths equally all the time + table-layout: auto; + + th, td { + // Add borders to table cells + border: 1px solid var(--spice-button-disabled); + } + } +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/reload-modal.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/reload-modal.scss new file mode 100644 index 0000000..6a84019 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/reload-modal.scss @@ -0,0 +1,14 @@ +/* Need to hijack height because .GenericModal has it set to 90% via style attr... */ +.GenericModal[aria-label="Reload required"] { + height: 240px !important; +} + +.marketplace-reload-modal__button-container { + display: flex; + justify-content: center; + padding-top: 18px; +} +.marketplace-reload-modal__button-container button { + margin: 18px; + padding: 8px 24px; +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/settings.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/settings.scss new file mode 100644 index 0000000..ed36bd8 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/components/settings.scss @@ -0,0 +1,78 @@ +// Make settings modal use same background colour as the reload modal +// (The large style modal uses --spice-player as the background colour by default) +.GenericModal[aria-label="Marketplace"] { + .main-embedWidgetGenerator-container { + background-color: var(--spice-tab-active); + } + + // Toggle switches + .x-toggle-wrapper { + cursor: pointer; + margin-inline-start: 12px; + // Hide disabled toggle rows (i.e. the "Extensions" one) + &.disabled { + opacity: 0; + pointer-events: none; + } + } +} + +.setting-row { + &::after { + content: ""; + display: table; + clear: both; + } + + .col { + display: flex; + padding: 10px 0; + align-items: center; + + &.description { + float: left; + padding-right: 15px; + cursor: default; + } + &.action { + float: right; + text-align: right; + } + } +} + +// The up/down arrows +button.arrow-btn { + align-items: center; + border: 0px; + border-radius: 50%; + background-color: rgba(var(--spice-rgb-shadow), .7); + color: var(--spice-text); + cursor: pointer; + display: flex; + margin-inline-start: 12px; + padding: 8px; + + &.small { + width: 24px; + height: 24px; + padding: 5px; + } + + &.disabled, + &[disabled] { + color: rgba(var(--spice-rgb-text), .3); + } +} + +// Add snippet modal +#marketplace-add-snippet-container input, textarea { + width: 100%; + margin-bottom: 10px; + padding: 3px 5px; + background-color: var(--spice-main); + color: var(--spice-text); + font-size: 14px; + border: 1px solid var(--spice-button); + border-radius: 4px; +} diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/style.scss b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/style.scss new file mode 100644 index 0000000..78b3d18 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/styles/style.scss @@ -0,0 +1,15 @@ +// This is the main file that imports all the components + +/* + TODOs: + - We might want to customize/scope the css classes etc + so we don't interfere with other extension like reddit +*/ + +@import url(components/grid.scss); +@import url(components/card.scss); +@import url(components/settings.scss); +@import url(components/reload-modal.scss); +@import url(components/add-snippet-modal.scss); +@import url(components/readme-pages.scss); +@import url(components/fixes.scss); diff --git a/dot_config/spicetify/CustomApps/spicetify-marketplace/tsconfig.json b/dot_config/spicetify/CustomApps/spicetify-marketplace/tsconfig.json new file mode 100644 index 0000000..4666396 --- /dev/null +++ b/dot_config/spicetify/CustomApps/spicetify-marketplace/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2018", + "checkJs": true, + "allowJs": true, + "noEmit": true, + // "typeRoots": ["@types", "../spicetify-cli"], + // "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + // "strict": true, + "importHelpers": true, + }, + "include": ["index.js"], + "exclude": ["node_modules"] +} diff --git a/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_index.html b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_index.html new file mode 100644 index 0000000..a6bfb7e --- /dev/null +++ b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_index.html @@ -0,0 +1 @@ +Spotify - Login
\ No newline at end of file diff --git a/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_login.css b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_login.css new file mode 100644 index 0000000..f339daa --- /dev/null +++ b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_login.css @@ -0,0 +1,10 @@ +@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUIv3T-Light.woff2) format("woff2"),url() format("woff"),url() format("truetype")}@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUIv3T-Book.woff2) format("woff2"),url() format("woff"),url() format("truetype")}@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUIv3T-Bold.woff2) format("woff2"),url() format("woff"),url() format("truetype")}@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUIv3T-Black.woff2) format("woff2"),url() format("woff"),url() format("truetype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUIAraOnly-Light.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUIAraOnly-Book.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUIAraOnly-Bold.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUIAraOnly-Black.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUIHbrOnly-Light.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUIHbrOnly-Book.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUIHbrOnly-Bold.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUIHbrOnly-Black.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUICyrOnly-Light.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUICyrOnly-Book.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUICyrOnly-Bold.woff2) format("woff2"),url() format("woff"),url() format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUICyrOnly-Black.woff2) format("woff2"),url() format("woff"),url() format("opentype")}.alert{background-color:#2e77d0;margin-bottom:20px;overflow:hidden;padding:6px 35px;position:relative}.alert,.alert .alert-link,.alert .alert-link:hover,.alert:before{color:#fff}.alert:before{left:10px;margin-top:-9.5px;position:absolute;top:50%}.alert a{border-bottom:1px solid #fff!important;color:#fff!important}.alert.alert-icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;padding:8px 12px;text-align:left}.alert.alert-icon svg{-ms-flex-negative:0;flex-shrink:0}.alert.alert-icon:before{display:none}.alert.alert-icon :not(:last-child){margin-right:10px}[dir=rtl] .alert.alert-icon :not(:last-child){margin-left:10px;margin-right:0}.alert-danger{background-color:#e22134}.alert-danger .alert-link,.alert-danger .alert-link:hover,.alert-danger:before{color:#fff}body{--glue-font-family:"spotify-circular","spotify-circular-cyrillic","spotify-circular-arabic","spotify-circular-hebrew","Helvetica Neue",Helvetica,Arial,"Hiragino Kaku Gothic Pro","Meiryo","MS Gothic",sans-serif;--glue-font-family-zh-Hant:"spotify-circular","spotify-circular-cyrillic","spotify-circular-arabic","spotify-circular-hebrew","Helvetica Neue",Helvetica,Arial,"Microsoft JhengHei","PingFang TC","Lantinghei TC","Hiragino Kaku Gothic Pro","Meiryo","MS Gothic",sans-serif;--glue-font-family-vi:"spotify-circular-cyrillic","spotify-circular-arabic","spotify-circular-hebrew","Helvetica Neue",Helvetica,Arial,"Microsoft JhengHei","PingFang TC","Lantinghei TC","Hiragino Kaku Gothic Pro","Meiryo","MS Gothic",sans-serif;--glue-font-family-monospace:Monaco,Menlo,Consolas,"Courier New",monospace}*{-webkit-box-sizing:border-box;box-sizing:border-box}body{-webkit-font-smoothing:antialiased;--glue-font-weight-normal:400;--glue-font-weight-bold:700;--glue-font-weight-black:900;font-family:var(--glue-font-family);margin:0}html:lang(zh-Hant) body{font-family:var(--glue-font-family-zh-Hant)}html:lang(vi) body{font-family:var(--glue-font-family-vi)}body{-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:#181818;color:#b3b3b3;cursor:default;font-size:14px;font-weight:var(--glue-font-weight-normal);letter-spacing:.015em;line-height:20px;min-height:100vh;overflow-x:hidden;overflow-y:scroll;position:relative;text-transform:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[lang=ar] body{letter-spacing:normal}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:var(--glue-font-weight-normal);line-height:inherit}label{display:inline-block;margin-bottom:5px}a{border-bottom:1px solid transparent}a,a:focus,a:hover{color:#fff;text-decoration:none}a:focus,a:hover{border-bottom-color:currentcolor}a:focus:active,a:hover:active{color:#b3b3b3}.glue-hidden-visually{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}@font-face{font-family:glue-spoticon;font-style:normal;font-weight:400;src:url(/fonts/spoticon_regular_2.woff2)}[class*=" spoticon-"]:before,[class^=spoticon-]:before{-webkit-font-smoothing:antialiased;display:inline-block;font-family:glue-spoticon;font-style:normal;font-weight:400;line-height:inherit;text-decoration:inherit;vertical-align:bottom}.spoticon-exclamation-circle-24:before{content:"\f4f2";font-size:24px}.spoticon-email-24:before{content:"\f49d";font-size:24px}.spoticon-user-circle-24:before{content:"\f119";font-size:24px}body:not(.scrollbar-style-when-scrolling-mac):not(.scrollbar-style-visible-mac):not(.scrollbar-style-visible-windows):not(.scrollbar-style-visible-linux)::-webkit-scrollbar,body:not(.scrollbar-style-when-scrolling-mac):not(.scrollbar-style-visible-mac):not(.scrollbar-style-visible-windows):not(.scrollbar-style-visible-linux) ::-webkit-scrollbar{height:0;width:0}.scrollbar-style-visible-linux::-webkit-scrollbar-track,.scrollbar-style-visible-linux ::-webkit-scrollbar-track,.scrollbar-style-visible-mac::-webkit-scrollbar-track,.scrollbar-style-visible-mac ::-webkit-scrollbar-track,.scrollbar-style-visible-windows::-webkit-scrollbar-track,.scrollbar-style-visible-windows ::-webkit-scrollbar-track{background-color:#181818}.scrollbar-style-visible-linux::-webkit-scrollbar,.scrollbar-style-visible-linux ::-webkit-scrollbar,.scrollbar-style-visible-mac::-webkit-scrollbar,.scrollbar-style-visible-mac ::-webkit-scrollbar,.scrollbar-style-visible-windows::-webkit-scrollbar,.scrollbar-style-visible-windows ::-webkit-scrollbar{width:16px}.scrollbar-style-visible-linux::-webkit-scrollbar:horizontal,.scrollbar-style-visible-linux ::-webkit-scrollbar:horizontal,.scrollbar-style-visible-mac::-webkit-scrollbar:horizontal,.scrollbar-style-visible-mac ::-webkit-scrollbar:horizontal,.scrollbar-style-visible-windows::-webkit-scrollbar:horizontal,.scrollbar-style-visible-windows ::-webkit-scrollbar:horizontal{height:16px}.scrollbar-style-visible-linux::-webkit-scrollbar-thumb,.scrollbar-style-visible-linux ::-webkit-scrollbar-thumb,.scrollbar-style-visible-mac::-webkit-scrollbar-thumb,.scrollbar-style-visible-mac ::-webkit-scrollbar-thumb,.scrollbar-style-visible-windows::-webkit-scrollbar-thumb,.scrollbar-style-visible-windows ::-webkit-scrollbar-thumb{background-color:#535353;min-height:32px;min-width:32px}.scrollbar-style-visible-linux::-webkit-scrollbar-thumb:hover,.scrollbar-style-visible-linux ::-webkit-scrollbar-thumb:hover,.scrollbar-style-visible-mac::-webkit-scrollbar-thumb:hover,.scrollbar-style-visible-mac ::-webkit-scrollbar-thumb:hover,.scrollbar-style-visible-windows::-webkit-scrollbar-thumb:hover,.scrollbar-style-visible-windows ::-webkit-scrollbar-thumb:hover{background-color:#b3b3b3}.scrollbar-style-visible-linux::-webkit-scrollbar-corner,.scrollbar-style-visible-linux ::-webkit-scrollbar-corner,.scrollbar-style-visible-mac::-webkit-scrollbar-corner,.scrollbar-style-visible-mac ::-webkit-scrollbar-corner,.scrollbar-style-visible-windows::-webkit-scrollbar-corner,.scrollbar-style-visible-windows ::-webkit-scrollbar-corner{background-color:#121212}.scrollbar-style-visible-mac::-webkit-scrollbar-thumb,.scrollbar-style-visible-mac ::-webkit-scrollbar-thumb{background-clip:padding-box;border:4px solid transparent;border-radius:16px}.scrollbar-style-visible-linux::-webkit-scrollbar-thumb,.scrollbar-style-visible-linux ::-webkit-scrollbar-thumb,.scrollbar-style-visible-windows::-webkit-scrollbar-thumb,.scrollbar-style-visible-windows ::-webkit-scrollbar-thumb{border:1px solid transparent}.scrollbar-style-visible-linux::-webkit-scrollbar-button,.scrollbar-style-visible-linux ::-webkit-scrollbar-button,.scrollbar-style-visible-windows::-webkit-scrollbar-button,.scrollbar-style-visible-windows ::-webkit-scrollbar-button{background-color:#181818;background-image:url(/images/scrollbar-buttons.png);background-size:16px 64px}.scrollbar-style-visible-linux::-webkit-scrollbar-button:disabled,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:disabled,.scrollbar-style-visible-windows::-webkit-scrollbar-button:disabled,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:disabled{background-image:none}.scrollbar-style-visible-linux::-webkit-scrollbar-button:vertical:end:increment,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:vertical:end:increment,.scrollbar-style-visible-linux::-webkit-scrollbar-button:vertical:start:decrement,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:vertical:start:decrement,.scrollbar-style-visible-windows::-webkit-scrollbar-button:vertical:end:increment,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:vertical:end:increment,.scrollbar-style-visible-windows::-webkit-scrollbar-button:vertical:start:decrement,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:vertical:start:decrement{display:block;height:16px}.scrollbar-style-visible-linux::-webkit-scrollbar-button:horizontal:end:decrement,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:horizontal:end:decrement,.scrollbar-style-visible-linux::-webkit-scrollbar-button:horizontal:start:increment,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:horizontal:start:increment,.scrollbar-style-visible-windows::-webkit-scrollbar-button:horizontal:end:decrement,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:horizontal:end:decrement,.scrollbar-style-visible-windows::-webkit-scrollbar-button:horizontal:start:increment,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:horizontal:start:increment{display:none}.scrollbar-style-visible-linux::-webkit-scrollbar-button:vertical:start:decrement,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:vertical:start:decrement,.scrollbar-style-visible-windows::-webkit-scrollbar-button:vertical:start:decrement,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:vertical:start:decrement{background-position:0 0}.scrollbar-style-visible-linux::-webkit-scrollbar-button:vertical:end:increment,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:vertical:end:increment,.scrollbar-style-visible-windows::-webkit-scrollbar-button:vertical:end:increment,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:vertical:end:increment{background-position:0 -16px}.scrollbar-style-visible-linux::-webkit-scrollbar-button:horizontal:start:decrement,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:horizontal:start:decrement,.scrollbar-style-visible-windows::-webkit-scrollbar-button:horizontal:start:decrement,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:horizontal:start:decrement{background-position:0 -32px}.scrollbar-style-visible-linux::-webkit-scrollbar-button:horizontal:end:increment,.scrollbar-style-visible-linux ::-webkit-scrollbar-button:horizontal:end:increment,.scrollbar-style-visible-windows::-webkit-scrollbar-button:horizontal:end:increment,.scrollbar-style-visible-windows ::-webkit-scrollbar-button:horizontal:end:increment{background-position:0 -48px}.scrollbar-style-visible-linux.body-container--windows .is-main-content-page-embedded::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-linux.is-login-page.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-linux.is-main-content-page-iframe.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-windows.body-container--windows .is-main-content-page-embedded::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-windows.is-login-page.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-windows.is-main-content-page-iframe.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start{background-color:transparent;background-image:url(/images/scrollbar-buttons.png),linear-gradient(180deg,#181818,#181818 16px);background-position:0 48px;background-repeat:no-repeat;height:64px}.scrollbar-style-visible-linux.body-container--windows .is-main-content-page-embedded::-webkit-scrollbar-button:vertical:decrement:start:disabled,.scrollbar-style-visible-linux.is-login-page.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start:disabled,.scrollbar-style-visible-linux.is-main-content-page-iframe.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start:disabled,.scrollbar-style-visible-windows.body-container--windows .is-main-content-page-embedded::-webkit-scrollbar-button:vertical:decrement:start:disabled,.scrollbar-style-visible-windows.is-login-page.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start:disabled,.scrollbar-style-visible-windows.is-main-content-page-iframe.body-container--windows::-webkit-scrollbar-button:vertical:decrement:start:disabled{background-image:none}.scrollbar-style-visible-linux.body-container--windows.messagebar .is-main-content-page-embedded::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-linux.is-main-content-page-iframe.body-container--windows.messagebar::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-windows.body-container--windows.messagebar .is-main-content-page-embedded::-webkit-scrollbar-button:vertical:decrement:start,.scrollbar-style-visible-windows.is-main-content-page-iframe.body-container--windows.messagebar::-webkit-scrollbar-button:vertical:decrement:start{background-position:0 17px;height:33px}.button{background-color:transparent;border:0;color:#b3b3b3;cursor:default;display:inline-block;font-size:11px;font-weight:var(--glue-font-weight-normal);font-weight:var(--glue-font-weight-bold);letter-spacing:.015em;letter-spacing:.16em;line-height:16px;margin-bottom:0;overflow:hidden;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;vertical-align:middle;white-space:nowrap;z-index:0}[lang=ar] .button{font-size:12px;letter-spacing:normal;line-height:18px}.button:focus{outline:none}.button:disabled:not(.current){cursor:default;opacity:.4;pointer-events:none}@media screen and (-webkit-min-device-pixel-ratio:2){.button{-webkit-backface-visibility:hidden;backface-visibility:hidden}}.button.button-green{background:#1db954;border-radius:16px;color:#fff;height:32px;line-height:30px;padding-left:32px;padding-right:32px;padding-top:1px;-webkit-transition:none 33ms cubic-bezier(.3,0,.7,1);transition:none 33ms cubic-bezier(.3,0,.7,1);-webkit-transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:transform,box-shadow,color,background-color;transition-property:transform,box-shadow,color,background-color,-webkit-transform,-webkit-box-shadow}[lang=ar] .button.button-green{line-height:30px}.button.button-green .b-alt-text{margin-top:-30px}.button.button-green.contextmenu-active,.button.button-green:not(:disabled):hover{background-color:#1ed760;color:#fff}.button.button-green:not(:disabled):hover:active{background:#14833b;color:#fff;-webkit-transform:scale(1);transform:scale(1)}@media(-webkit-min-device-pixel-ratio:2){.button.button-green:not(:disabled):hover:active{-webkit-transform:scale(1);transform:scale(1)}.button.button-green{-webkit-transition-duration:50ms;transition-duration:50ms}}.button.button-green:after{-webkit-transition:none 33ms cubic-bezier(.3,0,.7,1);transition:none 33ms cubic-bezier(.3,0,.7,1);-webkit-transition-property:-webkit-box-shadow;transition-property:-webkit-box-shadow;transition-property:box-shadow;transition-property:box-shadow,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-green:after{-webkit-transition-duration:50ms;transition-duration:50ms}}.button.button-green.contextmenu-active,.button.button-green:not(:disabled):hover{-webkit-transition:none 33ms cubic-bezier(.3,0,0,1);transition:none 33ms cubic-bezier(.3,0,0,1);-webkit-transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:transform,box-shadow,color,background-color;transition-property:transform,box-shadow,color,background-color,-webkit-transform,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-green.contextmenu-active,.button.button-green:not(:disabled):hover{-webkit-transition-duration:66ms;transition-duration:66ms}}.button.button-green.contextmenu-active:after,.button.button-green:not(:disabled):hover:after{-webkit-transition:none 33ms cubic-bezier(.3,0,0,1);transition:none 33ms cubic-bezier(.3,0,0,1);-webkit-transition-property:-webkit-box-shadow;transition-property:-webkit-box-shadow;transition-property:box-shadow;transition-property:box-shadow,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-green.contextmenu-active:after,.button.button-green:not(:disabled):hover:after{-webkit-transition-duration:66ms;transition-duration:66ms}}.button.button-green:not(:disabled):hover:active,.button.button-green:not(:disabled):hover:active:after{-webkit-transition:none;transition:none}.button.button-green:not(:disabled):hover{-webkit-transform:scale(1.0625);transform:scale(1.0625)}@media(-webkit-min-device-pixel-ratio:2){.button.button-green:not(:disabled):hover{-webkit-transform:scale(1.0625);transform:scale(1.0625)}}.button.button-white{background:#fff;border-radius:16px;color:#000;height:32px;line-height:30px;padding-left:32px;padding-right:32px;padding-top:1px;-webkit-transition:none 33ms cubic-bezier(.3,0,.7,1);transition:none 33ms cubic-bezier(.3,0,.7,1);-webkit-transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:transform,box-shadow,color,background-color;transition-property:transform,box-shadow,color,background-color,-webkit-transform,-webkit-box-shadow}[lang=ar] .button.button-white{line-height:30px}.button.button-white .b-alt-text{margin-top:-30px}.button.button-white.contextmenu-active,.button.button-white:not(:disabled):hover{background-color:#fff;color:#000}.button.button-white:not(:disabled):hover:active{background:#b3b3b3;color:#000;-webkit-transform:scale(1);transform:scale(1)}@media(-webkit-min-device-pixel-ratio:2){.button.button-white:not(:disabled):hover:active{-webkit-transform:scale(1);transform:scale(1)}.button.button-white{-webkit-transition-duration:50ms;transition-duration:50ms}}.button.button-white:after{-webkit-transition:none 33ms cubic-bezier(.3,0,.7,1);transition:none 33ms cubic-bezier(.3,0,.7,1);-webkit-transition-property:-webkit-box-shadow;transition-property:-webkit-box-shadow;transition-property:box-shadow;transition-property:box-shadow,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-white:after{-webkit-transition-duration:50ms;transition-duration:50ms}}.button.button-white.contextmenu-active,.button.button-white:not(:disabled):hover{-webkit-transition:none 33ms cubic-bezier(.3,0,0,1);transition:none 33ms cubic-bezier(.3,0,0,1);-webkit-transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:transform,box-shadow,color,background-color;transition-property:transform,box-shadow,color,background-color,-webkit-transform,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-white.contextmenu-active,.button.button-white:not(:disabled):hover{-webkit-transition-duration:66ms;transition-duration:66ms}}.button.button-white.contextmenu-active:after,.button.button-white:not(:disabled):hover:after{-webkit-transition:none 33ms cubic-bezier(.3,0,0,1);transition:none 33ms cubic-bezier(.3,0,0,1);-webkit-transition-property:-webkit-box-shadow;transition-property:-webkit-box-shadow;transition-property:box-shadow;transition-property:box-shadow,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-white.contextmenu-active:after,.button.button-white:not(:disabled):hover:after{-webkit-transition-duration:66ms;transition-duration:66ms}}.button.button-white:not(:disabled):hover:active,.button.button-white:not(:disabled):hover:active:after{-webkit-transition:none;transition:none}.button.button-white:not(:disabled):hover{-webkit-transform:scale(1.0625);transform:scale(1.0625)}@media(-webkit-min-device-pixel-ratio:2){.button.button-white:not(:disabled):hover{-webkit-transform:scale(1.0625);transform:scale(1.0625)}}.button.button-large.button-green{background:#1db954;border-radius:24px;color:#fff;font-size:14px;height:48px;line-height:46px;padding-left:48px;padding-right:48px;padding-top:1px;-webkit-transition:none 33ms cubic-bezier(.3,0,.7,1);transition:none 33ms cubic-bezier(.3,0,.7,1);-webkit-transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:transform,box-shadow,color,background-color;transition-property:transform,box-shadow,color,background-color,-webkit-transform,-webkit-box-shadow}[lang=ar] .button.button-large.button-green{line-height:46px}.button.button-large.button-green .b-alt-text{margin-top:-46px}.button.button-large.button-green.contextmenu-active,.button.button-large.button-green:not(:disabled):hover{background-color:#1ed760;color:#fff}.button.button-large.button-green:not(:disabled):hover:active{background:#14833b;color:#fff;-webkit-transform:scale(1);transform:scale(1)}@media(-webkit-min-device-pixel-ratio:2){.button.button-large.button-green:not(:disabled):hover:active{-webkit-transform:scale(1);transform:scale(1)}.button.button-large.button-green{-webkit-transition-duration:50ms;transition-duration:50ms}}.button.button-large.button-green:after{-webkit-transition:none 33ms cubic-bezier(.3,0,.7,1);transition:none 33ms cubic-bezier(.3,0,.7,1);-webkit-transition-property:-webkit-box-shadow;transition-property:-webkit-box-shadow;transition-property:box-shadow;transition-property:box-shadow,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-large.button-green:after{-webkit-transition-duration:50ms;transition-duration:50ms}}.button.button-large.button-green.contextmenu-active,.button.button-large.button-green:not(:disabled):hover{-webkit-transition:none 33ms cubic-bezier(.3,0,0,1);transition:none 33ms cubic-bezier(.3,0,0,1);-webkit-transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:color,background-color,-webkit-transform,-webkit-box-shadow;transition-property:transform,box-shadow,color,background-color;transition-property:transform,box-shadow,color,background-color,-webkit-transform,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-large.button-green.contextmenu-active,.button.button-large.button-green:not(:disabled):hover{-webkit-transition-duration:66ms;transition-duration:66ms}}.button.button-large.button-green.contextmenu-active:after,.button.button-large.button-green:not(:disabled):hover:after{-webkit-transition:none 33ms cubic-bezier(.3,0,0,1);transition:none 33ms cubic-bezier(.3,0,0,1);-webkit-transition-property:-webkit-box-shadow;transition-property:-webkit-box-shadow;transition-property:box-shadow;transition-property:box-shadow,-webkit-box-shadow}@media(-webkit-min-device-pixel-ratio:2){.button.button-large.button-green.contextmenu-active:after,.button.button-large.button-green:not(:disabled):hover:after{-webkit-transition-duration:66ms;transition-duration:66ms}}.button.button-large.button-green:not(:disabled):hover:active,.button.button-large.button-green:not(:disabled):hover:active:after{-webkit-transition:none;transition:none}.button.button-large.button-green:not(:disabled):hover{-webkit-transform:scale(1.0833333333);transform:scale(1.0833333333)}@media(-webkit-min-device-pixel-ratio:2){.button.button-large.button-green:not(:disabled):hover{-webkit-transform:scale(1.0833333333);transform:scale(1.0833333333)}}.GlueToggle__toggle{background:#000;border:2px solid #404040;border-radius:11px;height:22px;position:relative;-webkit-transition:background .4s ease;transition:background .4s ease;width:36px}.GlueToggle__toggle .GlueToggle__toggle-inner{background:#b3b3b3;border-radius:inherit;-webkit-box-shadow:0 0 1px rgba(0,0,0,.75),0 0 3px rgba(0,0,0,.3);box-shadow:0 0 1px rgba(0,0,0,.75),0 0 3px rgba(0,0,0,.3);height:22px;left:-5px;position:absolute;top:-2px;-webkit-transition:all .4s ease;transition:all .4s ease;width:22px}.GlueToggle__toggle:active .GlueToggle__toggle-inner{background:#fff;width:26px}.GlueToggle__toggle:hover .GlueToggle__toggle-inner{background:#fff}.GlueToggle__toggle:focus{outline:0}.GlueToggle--is-active .GlueToggle__toggle{background:#1db954;border-color:transparent}.GlueToggle--is-active .GlueToggle__toggle .GlueToggle__toggle-inner{background:#fff;left:15px}.GlueToggle--is-active .GlueToggle__toggle:active .GlueToggle__toggle-inner{left:15px}.GlueToggle--is-disabled .GlueToggle__toggle{background:#333;border-color:transparent;pointer-events:none}.GlueToggle--is-disabled .GlueToggle__toggle .GlueToggle__toggle-inner{background:#404040;-webkit-box-shadow:none;box-shadow:none}.GlueToggle--is-disabled .GlueToggle__toggle:active .GlueToggle__toggle-inner{background:#404040;width:22px}.GlueToggle--is-disabled .GlueToggle__toggle:hover .GlueToggle__toggle-inner{background:#404040}.GlueToggle--is-disabled .GlueToggle__toggle.GlueToggle--is-active:active .GlueToggle__toggle-inner{left:15px}.GlueCheckbox{-webkit-box-orient:horizontal;-webkit-box-direction:normal;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.GlueCheckbox__input{font-size:12px;letter-spacing:.015em;line-height:18px}[lang=ar] .GlueCheckbox__input{letter-spacing:normal}.GlueCheckbox__label{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px;letter-spacing:.015em;line-height:18px;margin-left:1em;text-align:left}[lang=ar] .GlueCheckbox__label{letter-spacing:normal}.GlueTextInput{width:100%}.GlueTextInput__input{background-color:#333;border:0;border-radius:4px;color:#fff;height:30px;padding:5px 12px;width:100%}.GlueTextInput__input::-webkit-input-placeholder{color:#b3b3b3}.GlueTextInput__input::-moz-placeholder{color:#b3b3b3}.GlueTextInput__input:-ms-input-placeholder{color:#b3b3b3}.GlueTextInput__input::-ms-input-placeholder{color:#b3b3b3}.GlueTextInput__input::placeholder{color:#b3b3b3}.GlueTextInput__input[disabled]{background-color:#282828;color:#535353}.GlueTextInput__input[disabled]::-webkit-input-placeholder{color:#535353}.GlueTextInput__input[disabled]::-moz-placeholder{color:#535353}.GlueTextInput__input[disabled]:-ms-input-placeholder{color:#535353}.GlueTextInput__input[disabled]::-ms-input-placeholder{color:#535353}.GlueTextInput__input[disabled]::placeholder{color:#535353}.GlueTextInput__input:focus{background-color:#404040;outline:0}.GlueTextInput__input--has-error{background-color:#cd1a2b}.GlueTextInput__input--has-error::-webkit-input-placeholder{color:#fff}.GlueTextInput__input--has-error::-moz-placeholder{color:#fff}.GlueTextInput__input--has-error:-ms-input-placeholder{color:#fff}.GlueTextInput__input--has-error::-ms-input-placeholder{color:#fff}.GlueTextInput__input--has-error::placeholder{color:#fff}.body-container--unknown-os .GlueTextInput__input,.body-container--windows .GlueTextInput__input{border-radius:0}.App{-webkit-box-orient:vertical;-webkit-box-direction:normal;background:#000 url(../images/background.svg) no-repeat top;background-size:cover;-ms-flex-direction:column;flex-direction:column;min-height:100%}.App,.App .App__content{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.App .App__content{-webkit-box-flex:1;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;-ms-flex:1;flex:1;justify-content:center;margin-top:0}@media(min-height:750px){.App .App__content{margin-top:30px}}@media(min-height:900px){.App .App__content{margin-top:60px}}@-webkit-keyframes cardEnterFromCenter{0%{opacity:0;-webkit-transform:translateZ(0) scale(.8);transform:translateZ(0) scale(.8)}to{opacity:1;-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}}@keyframes cardEnterFromCenter{0%{opacity:0;-webkit-transform:translateZ(0) scale(.8);transform:translateZ(0) scale(.8)}to{opacity:1;-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}}@-webkit-keyframes cardEnterFromLeft{0%{opacity:0;-webkit-transform:translate3d(-140px,0,0);transform:translate3d(-140px,0,0)}to{opacity:1;-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}}@keyframes cardEnterFromLeft{0%{opacity:0;-webkit-transform:translate3d(-140px,0,0);transform:translate3d(-140px,0,0)}to{opacity:1;-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}}@-webkit-keyframes cardEnterFromRight{0%{opacity:0;-webkit-transform:translate3d(140px,0,0);transform:translate3d(140px,0,0)}to{opacity:1;-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}}@keyframes cardEnterFromRight{0%{opacity:0;-webkit-transform:translate3d(140px,0,0);transform:translate3d(140px,0,0)}to{opacity:1;-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}}@-webkit-keyframes cardExitToCenter{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(0) scale(.8);transform:translateZ(0) scale(.8)}}@keyframes cardExitToCenter{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(0) scale(.8);transform:translateZ(0) scale(.8)}}@-webkit-keyframes cardExitToLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-140px,0,0);transform:translate3d(-140px,0,0)}}@keyframes cardExitToLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-140px,0,0);transform:translate3d(-140px,0,0)}}@-webkit-keyframes cardExitToRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(140px,0,0);transform:translate3d(140px,0,0)}}@keyframes cardExitToRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(140px,0,0);transform:translate3d(140px,0,0)}}.App .App__modal{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:cubic-bezier(.3,0,.4,1);animation-timing-function:cubic-bezier(.3,0,.4,1);background:#121212;border-radius:8px;padding:40px 80px 12px;position:absolute;text-align:center;width:496px}.App .App__modal.__login-to-open-browser.enter,.App .App__modal.__login-to-open-browser.enter-done,.App .App__modal.__login-to-settings.enter,.App .App__modal.__login-to-settings.enter-done,.App .App__modal.__login-to-signup.enter,.App .App__modal.__login-to-signup.enter-done,.App .App__modal.__login-to-welcome.enter,.App .App__modal.__login-to-welcome.enter-done,.App .App__modal.__open-browser-to-welcome.enter,.App .App__modal.__open-browser-to-welcome.enter-done,.App .App__modal.__settings-to-login.enter,.App .App__modal.__settings-to-login.enter-done,.App .App__modal.__welcome-to-login.enter,.App .App__modal.__welcome-to-login.enter-done,.App .App__modal.__welcome-to-open-browser.enter,.App .App__modal.__welcome-to-open-browser.enter-done,.App .App__modal.__welcome-to-signup.enter,.App .App__modal.__welcome-to-signup.enter-done{-webkit-animation-delay:.25s;animation-delay:.25s;-webkit-animation-name:cardEnterFromCenter;animation-name:cardEnterFromCenter}.App .App__modal.__login-to-signup.enter,.App .App__modal.__login-to-signup.enter-done,.App .App__modal.__signup-to-login.enter,.App .App__modal.__signup-to-login.enter-done,.App .App__modal.__signup-to-welcome.enter,.App .App__modal.__signup-to-welcome.enter-done{-webkit-animation-delay:.25s;animation-delay:.25s;-webkit-animation-name:cardEnterFromLeft;animation-name:cardEnterFromLeft}.App .App__modal.__signup_step_0_to_1.enter,.App .App__modal.__signup_step_0_to_1.enter-done{-webkit-animation-delay:.25s;animation-delay:.25s;-webkit-animation-name:cardEnterFromCenter;animation-name:cardEnterFromCenter}.App .App__modal.__signup_step_1_to_0.enter,.App .App__modal.__signup_step_1_to_0.enter-done{-webkit-animation-delay:.25s;animation-delay:.25s;-webkit-animation-name:cardEnterFromLeft;animation-name:cardEnterFromLeft}.App .App__content.__login-to-open-browser .App__modal.exit,.App .App__content.__open-browser-to-welcome .App__modal.exit,.App .App__content.__welcome-to-login .App__modal.exit,.App .App__content.__welcome-to-open-browser .App__modal.exit,.App .App__content.__welcome-to-signup .App__modal.exit{-webkit-animation-name:cardExitToLeft;animation-name:cardExitToLeft}.App .App__content.__login-to-settings .App__modal.exit,.App .App__content.__login-to-signup .App__modal.exit,.App .App__content.__login-to-welcome .App__modal.exit,.App .App__content.__open-browser-to-welcome .App__modal.exit,.App .App__content.__settings-to-login .App__modal.exit,.App .App__content.__signup-to-login .App__modal.exit,.App .App__content.__signup-to-welcome .App__modal.exit{-webkit-animation-name:cardExitToCenter;animation-name:cardExitToCenter}.App .App__content.__signup_step_0_to_1 .App__modal.exit{-webkit-animation-name:cardExitToLeft;animation-name:cardExitToLeft}.App .App__content.__signup_step_1_to_0 .App__modal.exit{-webkit-animation-name:cardExitToCenter;animation-name:cardExitToCenter}.App .FormRadioSelect{margin-bottom:24px}@media(max-height:900px){.App .FormRadioSelect{margin-bottom:16px}}.App .FormRadioSelect>span{border:1px solid rgba(255,255,255,.2);border-radius:4px;display:block;margin-bottom:8px;padding:0}.App .FormRadioSelect>span.checked,.App .FormRadioSelect>span:hover{border:1px solid #fff}.App .FormRadioSelect>span label{height:40px;margin:0;padding:10px 0 10px 40px;width:100%}.App .FormRadioSelect>span label:before{border:1px solid transparent;height:14px;left:11px;top:12px;width:14px}.App .FormRadioSelect>span label:after{height:10px;left:14px;top:15px;width:10px}.App .GlueTextInput__input--has-error,.App .Input--has-error{background-color:#333;border:1px solid #eb6471}.App .GlueCheckbox{padding:4px 0 0 12px}.App .GlueCheckbox .GlueCheckbox__input{height:16px;width:16px}.App .FieldError{color:#eb6471;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:4px;padding:0}.App .FieldError>svg{margin-top:2px}.App .FieldError>span{margin-left:4px}.App .GlueCheckbox__label{padding-top:2px}.App .FooterFormText{font-size:14px;font-weight:700;letter-spacing:2px;margin:0 auto;padding:20px 0}@media(max-height:900px){.App .FooterFormText{padding:10px 0}}.App .FooterFormText .FooterFormText__NoUnderline{color:#b3b3ae;text-decoration:none}.App .FooterFormText .FooterFormText__NoUnderline:hover{border:none;text-decoration:none}.App .FooterFormText .FooterFormText__NoUnderline u{color:#fff;text-decoration:underline;text-transform:uppercase}.App .Header{margin:0 auto 36px}@media(max-height:900px){.App .Header{margin:0 auto 24px}}.App .Footer{margin:24px 0}@media(max-height:900px){.App .Footer{margin:16px 0}}.App .Header__logo{width:138px}.App .FormDate,.App .FormField{margin:0;padding-bottom:12px;position:relative}@media(max-height:900px){.App .FormDate,.App .FormField{padding-bottom:8px}}.App .FormDate input,.App .FormDate select,.App .FormField input,.App .FormField select{height:40px;line-height:40px}.App .FormDate__inputs{margin-bottom:12px}.App .FormToggle{margin:0 auto;padding-bottom:12px}@media(max-height:900px){.App .FormToggle{padding-bottom:8px}}.App .EulaAgreement{margin:0 auto;padding-bottom:12px;position:relative;text-align:center}@media(max-height:900px){.App .EulaAgreement{padding-bottom:8px}}.App .EulaAgreement p{letter-spacing:-.02em}.App .EulaAgreement .FormInputErrorIndicator{top:auto}.App .EulaAgreement .FieldError{margin-left:20px;text-align:left}.App .FormInputErrorIndicator{color:#eb6471;height:24px;position:absolute;right:-34px;top:0}.App .FormTitleSeparator{display:block;height:40px;margin:0;padding:12px 0}@media(max-height:900px){.App .FormTitleSeparator{padding:8px 0}}.App .HeroText{color:#fff;font-size:32px;font-weight:700;letter-spacing:-1.28px;line-height:40px;margin:0 auto 24px;padding:0 20px;text-align:center}@media(max-height:900px){.App .HeroText{margin:0 auto 16px}}.App .HeroText.__redirect{margin:90px 0;padding:0}.App .HeroText.__welcome{margin-bottom:40px}.App .SocialButton{border:1px solid #aaa;border-radius:24px;color:#fff;display:block;font-size:14px;font-weight:700;height:48px;letter-spacing:0;margin:12px auto;padding:0 32px;text-transform:none;width:100%}@media(max-height:900px){.App .SocialButton{margin:8px auto}}.App .SocialButton:hover{border:1px solid #fff;-webkit-transform:scale(1.02);transform:scale(1.02)}.App .SocialButton.FacebookButton{background:url(../images/social-buttons/facebook.svg) 16px no-repeat}.App .SocialButton.AppleButton{background:url(../images/social-buttons/apple.svg) 16px no-repeat}.App .SocialButton.GoogleButton{background:url(../images/social-buttons/google.svg) 16px no-repeat}.App .Signup{margin:0 auto;padding:0;text-align:center;width:auto}.App .Signup .SignupForm__checkbox-container{margin:0;padding-bottom:4px;padding-top:4px}.App .Signup .button{margin:12px auto}@media(max-height:900px){.App .Signup .button{margin:8px auto}}.App .Signup .SignupForm__signup-button{border:1px solid transparent}.App .Signup .SignupForm__signup-button:focus{border:1px solid #fff}.App .Signup .SignupFacebook button{margin:12px 0 20px}@media(max-height:900px){.App .Signup .SignupFacebook button{margin:8px 0 10px}}.App .Signup .SignupForm__back-button{color:#fff;display:inline-block;font-size:14px;font-weight:700;letter-spacing:2px;margin:20px auto;text-transform:uppercase}@media(max-height:900px){.App .Signup .SignupForm__back-button{margin:10px auto}}.App .Login{width:auto}.App .Login .LoginForm__login-button{background:#fff;border:1px solid transparent;border-radius:24px;color:#000;display:block;font-size:14px;height:48px;margin:12px auto;width:100%}@media(max-height:900px){.App .Login .LoginForm__login-button{margin:8px auto}}.App .Welcome{margin:0;padding:0}.App .Welcome *{max-width:100%}.App .Welcome button{margin:12px auto}@media(max-height:900px){.App .Welcome button{margin:8px 0}}.App .Welcome .Welcome__button{min-width:336px;padding:0;width:336px}.fakeWebPlayer{background:#000;bottom:-3px;-webkit-filter:blur(3px);left:-3px;position:fixed;right:-3px;top:-3px}.fakeWebPlayer:before{background-image:linear-gradient(-180deg,rgba(0,0,0,.3),rgba(0,0,0,.8)),linear-gradient(-225deg,rgba(29,49,102,.4),rgba(159,195,211,.4));bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.fakeWebPlayer aside{background:#121212 url(../images/fake-web-player/side.png) 0 60px no-repeat;background-size:auto;bottom:90px;left:0;position:absolute;top:0;width:200px}html[dir=rtl] .fakeWebPlayer aside{left:auto;right:0;-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.fakeWebPlayer main{background:-webkit-gradient(linear,left top,left bottom,from(#414141),color-stop(20%,#181818));background:linear-gradient(-180deg,#414141,#181818 20%);bottom:90px;left:200px;position:absolute;right:0;top:0}html[dir=rtl] .fakeWebPlayer main{left:0;right:200px}.fakeWebPlayer .fakeWebPlayer__content{background-image:url(../images/fake-web-player/content.avif);background-position:top;background-repeat:no-repeat;background-size:auto;bottom:0;left:0;position:absolute;right:0;top:20px}html[dir=rtl] .fakeWebPlayer .fakeWebPlayer__content{background-image:url(../images/fake-web-player/content-rtl.avif)}@media(max-width:1800px){.fakeWebPlayer .fakeWebPlayer__content{background-size:90% auto}}@media(max-width:1500px){.fakeWebPlayer .fakeWebPlayer__content{background-image:url(../images/fake-web-player/content-small.avif);background-size:90% auto}html[dir=rtl] .fakeWebPlayer .fakeWebPlayer__content{background-image:url(../images/fake-web-player/content-small-rtl.avif)}}.fakeWebPlayer footer{background:#282828;bottom:0;height:90px;left:0;position:absolute;right:0}.fakeWebPlayer footer .fakeWebPlayer__footer-left{background:url(../images/fake-web-player/footer-left.png) 50% no-repeat;background-size:auto;bottom:0;height:29px;left:20px;margin:auto;position:absolute;top:0;width:97px}html[dir=rtl] .fakeWebPlayer footer .fakeWebPlayer__footer-left{left:auto;right:20px;-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.fakeWebPlayer footer .fakeWebPlayer__footer-center{background:url(../images/fake-web-player/controls.png) 50% no-repeat;background-size:auto;bottom:0;height:53px;left:0;margin:auto;position:absolute;right:0;top:0;width:683px}.fakeWebPlayer footer .fakeWebPlayer__footer-right{background:url(../images/fake-web-player/footer-right.png) 50% no-repeat;background-size:auto;bottom:0;height:14px;margin:auto;position:absolute;right:20px;top:0;width:205px}html[dir=rtl] .fakeWebPlayer footer .fakeWebPlayer__footer-right{left:20px;right:auto;-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ErrorMessage{cursor:default}.FieldError{max-height:50px;opacity:1;padding:4px 0 0 7px;-webkit-transition:all .5s;transition:all .5s}.FieldError--hidden{max-height:0;opacity:0;padding:0}.FormDate{margin-bottom:10px;text-align:left}.FormDate__label{display:block}.FormDate__inputs .FormDate__input{-webkit-margin-start:5%;margin-inline-start:5%;vertical-align:bottom}.FormDate__inputs .FormDate__input:first-child{-webkit-margin-start:0;margin-inline-start:0}.FormDate__input{border-radius:4px;display:inline-block;width:25%}.FormDate__input input{padding:5px 12px 4px;width:100%}.FormDate__month{-webkit-margin-start:0;margin-inline-start:0;padding:5px 12px 4px;width:40%}.FormDate__error{min-height:24px;padding:4px 0 0 7px}@media(min-height:750px){.FormDate{margin-bottom:20px}}.FormField{margin-bottom:10px;position:relative;text-align:start}.FormField--no-validate{margin-bottom:16px}@media(min-height:750px){.FormField{margin-bottom:20px}}.FormField--rightIcon{bottom:0;display:block;position:absolute;right:10px;top:8px}html[dir=rtl] .FormField--rightIcon{left:10px;right:auto}@-webkit-keyframes eyeBlinking{0%{-webkit-transform:scaleY(1);transform:scaleY(1)}30%{-webkit-transform:scaleY(.3);transform:scaleY(.3)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes eyeBlinking{0%{-webkit-transform:scaleY(1);transform:scaleY(1)}30%{-webkit-transform:scaleY(.3);transform:scaleY(.3)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}.FormField--passwordEyeIcon{-webkit-animation:eyeBlinking .3s 60ms;animation:eyeBlinking .3s 60ms;background:url(../images/eye.svg) 50% no-repeat;background-size:100% auto;border:none;bottom:0;cursor:pointer;display:block;height:24px;outline:none;position:absolute;right:9px;top:8px;width:24px;z-index:1}.FormField--passwordEyeIcon.passwordVisible{-webkit-animation:none;animation:none}html[dir=rtl] .FormField--passwordEyeIcon{left:11px;right:auto}.FormField--passwordEyeIcon--cross{border-bottom:1px solid #fff;height:24px;pointer-events:none;position:absolute;right:8px;top:8px;-webkit-transform:translate(3px,-3px) rotate(-45deg);transform:translate(3px,-3px) rotate(-45deg);-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s;width:24px;z-index:0}.FormField--passwordEyeIcon--cross.passwordVisible{-webkit-transform:translate(3px,-3px) rotate(-45deg) scaleX(0);transform:translate(3px,-3px) rotate(-45deg) scaleX(0)}html[dir=rtl] .FormField--passwordEyeIcon--cross{left:10px;right:auto}.FormField--errorIcon{position:absolute;right:-40px}.FormTitleSeparator{color:#b3b3b3;height:16px;line-height:16px;margin:10px auto;overflow:hidden;text-align:center;text-transform:uppercase}.FormTitleSeparator:after,.FormTitleSeparator:before{background-color:#535353;content:"";display:inline-block;height:1px;margin:0 20px;position:relative;vertical-align:middle;width:50%}.FormTitleSeparator:before{-webkit-margin-start:-50%;margin-inline-start:-50%}.FormTitleSeparator:after{-webkit-margin-end:-50%;margin-inline-end:-50%}@media(min-height:750px){.FormTitleSeparator{margin:20px auto}}.FormRadioSelect{margin-bottom:10px;position:relative;text-align:left}.FormRadioSelect__label{display:inline-block;margin-right:20px;padding-left:28px;position:relative}.FormRadioSelect__label:before{background:#fff;border:1px solid #b3b3b3;border-radius:100%;content:"";height:18px;left:0;position:absolute;top:0;width:18px}.FormRadioSelect__label:after{background:#1db954;border-radius:100%;content:"";height:12px;left:4px;opacity:0;position:absolute;top:4px;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:all .2s ease;transition:all .2s ease;width:12px}[type=radio]:checked+.FormRadioSelect__label:after{opacity:1;-webkit-transform:scale(1);transform:scale(1)}[type=radio]:focus+.FormRadioSelect__label:before{border-color:#1db954}.FormRadioSelect__label--has-error:before{border-color:#941320}.FormRadioSelect--is-disabled .FormRadioSelect__label:before{background-color:#535353;border-color:#535353}.FormRadioSelect--is-disabled .FormRadioSelect__label:after{background-color:#282828}.FormToggle{-webkit-box-pack:justify;-ms-flex-pack:justify;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:space-between;margin-bottom:20px}.Footer{line-height:35px;margin:20px 0;position:relative;text-align:center}.Footer .Footer__link{color:#b3b3b3;font-size:11px;font-weight:var(--glue-font-weight-normal);letter-spacing:.015em;letter-spacing:.16em;line-height:16px;text-transform:uppercase}[lang=ar] .Footer .Footer__link{font-size:12px;letter-spacing:normal;line-height:18px}.Footer .Footer__NoUnderline{color:#b3b3ae;font-size:14px;font-weight:700;letter-spacing:2px;text-decoration:none}.Footer .Footer__NoUnderline:hover{border:none;text-decoration:none}.Footer .Footer__NoUnderline u{color:#b3b3b3;color:#fff;font-size:11px;font-size:14px;font-weight:var(--glue-font-weight-normal);letter-spacing:.015em;letter-spacing:.16em;line-height:16px;text-transform:uppercase}[lang=ar] .Footer .Footer__NoUnderline u{font-size:12px;letter-spacing:normal;line-height:18px}.Header{margin:24px 0;text-align:center}.Header__logo{height:38px;vertical-align:middle;width:128px}@media(min-height:750px){.Header{margin:36px 0}.Header__logo{height:58px;width:190px}}@media(min-height:900px){.Header{margin:46px 0}}.Input{background-color:#333;border:0;border-radius:4px;color:#fff}.Input::-webkit-input-placeholder{color:#b3b3b3}.Input::-moz-placeholder{color:#b3b3b3}.Input:-ms-input-placeholder{color:#b3b3b3}.Input::-ms-input-placeholder{color:#b3b3b3}.Input::placeholder{color:#b3b3b3}.Input[disabled]{background-color:#282828;color:#535353}.Input[disabled]::-webkit-input-placeholder{color:#535353}.Input[disabled]::-moz-placeholder{color:#535353}.Input[disabled]:-ms-input-placeholder{color:#535353}.Input[disabled]::-ms-input-placeholder{color:#535353}.Input[disabled]::placeholder{color:#535353}.Input:focus{background-color:#404040;border-color:#404040;color:#fff;outline:0}.Input--has-error{background-color:#cd1a2b}.Input--has-error::-webkit-input-placeholder{color:#fff}.Input--has-error::-moz-placeholder{color:#fff}.Input--has-error:-ms-input-placeholder{color:#fff}.Input--has-error::-ms-input-placeholder{color:#fff}.Input--has-error::placeholder{color:#fff}.Login{margin:0 auto;text-align:center;width:336px}.Login label>input{-webkit-margin-end:10px;margin-inline-end:10px}.LoginForm__login-button{margin:8px 0}.LoginForm__reset-password{color:rgba(255,255,255,.6);display:block;margin-bottom:20px;margin-top:-10px;text-align:left}.LoginForm__reset-password,.LoginForm__reset-password:hover{border:none;text-decoration:underline}.Settings{text-align:start}.Settings label{margin-bottom:0}.Settings input:focus,.Settings select:focus{background-color:#404040;outline:0}.Settings button:focus{outline:0}.Signup{margin:0 auto;text-align:center;width:336px}.Signup label>input{-webkit-margin-end:10px;margin-inline-end:10px}.SignupForm__checkbox-container{margin:16px 0}.SignupForm__send-email-implicit{color:#fff;font-size:12px;letter-spacing:.015em;line-height:18px;text-align:left}[lang=ar] .SignupForm__send-email-implicit{letter-spacing:normal}.SignupForm__privacy-policy,.SignupForm__terms-and-conditions{font-size:12px;letter-spacing:.015em;line-height:18px;margin:16px 0 0;text-align:center}[lang=ar] .SignupForm__privacy-policy,[lang=ar] .SignupForm__terms-and-conditions{letter-spacing:normal}.SignupForm__signup-button{margin-top:16px;width:100%}@media(min-height:750px){.SignupForm__checkbox-container{margin:20px 0}.SignupForm__terms-and-conditions{margin-top:20px}}.Welcome{margin:40px 0;padding:0 15px}.Welcome__hero-text{color:#fff;font-size:48px;font-weight:var(--glue-font-weight-black);letter-spacing:-.005em;line-height:56px;margin:70px auto;max-width:1000px;text-align:center;text-transform:none}[lang=ar] .Welcome__hero-text{letter-spacing:normal}.Welcome__signup-or-login{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;justify-content:center;margin:0 auto;width:-webkit-max-content;width:-moz-max-content;width:max-content}.Welcome__button{min-width:336px}.Welcome__error-message{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#cd1a2b;border-radius:6px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;font-size:12px;justify-content:flex-start;padding:12px}.Welcome__error-message__icon{margin:0 12px 0 0}html[dir=rtl] .Welcome__error-message__icon{margin:0 0 0 12px}.Welcome .FormTitleSeparator{color:#b3b3b3;font-size:11px;font-weight:var(--glue-font-weight-normal);letter-spacing:.16em;letter-spacing:.015em;line-height:16px;margin-bottom:35px;margin-top:35px;min-width:336px;text-transform:uppercase}.Welcome .FormTitleSeparator,[lang=ar] .Welcome .FormTitleSeparator{font-size:12px;line-height:18px}[lang=ar] .Welcome .FormTitleSeparator{letter-spacing:normal}@media(min-height:900px){.Welcome__hero-text{margin:85px auto 70px}}body,html{background:#181818;height:100%;width:100%}.body-drag-top{-webkit-app-region:drag;display:block;height:45px;left:0;position:absolute;right:0;top:0}a{cursor:pointer}.main{height:100%;-webkit-transition:opacity .2s;transition:opacity .2s}.login-leave{opacity:1}.login-leave.login-leave-active{opacity:0;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in}@-webkit-keyframes glue-keyframes-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes glue-keyframes-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes glue-keyframes-fade-in{0%{opacity:0}to{opacity:1}}@keyframes glue-keyframes-fade-in{0%{opacity:0}to{opacity:1}}.JzZyf6OGCGtdscOZGt8Y{position:relative}.t6HIrX67Lp80Nj6tGauz .wCl7pMTEE68v1xuZeZiB{opacity:0;z-index:-1}.t6HIrX67Lp80Nj6tGauz .QZhV0hWVKlExlKr266jo{opacity:1;padding:8px 32px;width:188px}.t6HIrX67Lp80Nj6tGauz .uAJxc_psYWeimY8N9bH9{opacity:1}.wCl7pMTEE68v1xuZeZiB{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:transparent;border:0;color:rgba(255,255,255,.7);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;padding:8px;pointer-events:auto;position:absolute;right:0;top:0;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:cubic-bezier(.3,0,.4,1);transition-timing-function:cubic-bezier(.3,0,.4,1)}.wCl7pMTEE68v1xuZeZiB:focus,.wCl7pMTEE68v1xuZeZiB:hover{background-color:rgba(255,255,255,.1);border-radius:50%;color:#fff}.QZhV0hWVKlExlKr266jo{background-color:rgba(255,255,255,.1);border:0;border-radius:4px;color:rgba(255,255,255,.7);height:32px;opacity:0;text-overflow:ellipsis;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity width;transition-property:opacity width;-webkit-transition-timing-function:cubic-bezier(.3,0,.4,1);transition-timing-function:cubic-bezier(.3,0,.4,1);width:32px}.QZhV0hWVKlExlKr266jo::-ms-clear{display:none}.QZhV0hWVKlExlKr266jo::-webkit-input-placeholder{color:rgba(255,255,255,.7)}.QZhV0hWVKlExlKr266jo::-moz-placeholder{color:rgba(255,255,255,.7)}.QZhV0hWVKlExlKr266jo:-ms-input-placeholder{color:rgba(255,255,255,.7)}.QZhV0hWVKlExlKr266jo::-ms-input-placeholder{color:rgba(255,255,255,.7)}.QZhV0hWVKlExlKr266jo::placeholder{color:rgba(255,255,255,.7)}.uAJxc_psYWeimY8N9bH9{-webkit-box-align:center;-ms-flex-align:center;align-items:center;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;left:10px;opacity:0;pointer-events:none;position:absolute;right:10px;top:0;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:cubic-bezier(.3,0,.4,1);transition-timing-function:cubic-bezier(.3,0,.4,1)}._bjbHn5TABOW2s5LsEGX{-webkit-box-flex:1;color:rgba(255,255,255,.7);-ms-flex:1;flex:1}.CIVozJ8XNPJ60uMN23Yg{display:block}.EsqEJ_NPrHsPkTbX4FW8{background-color:transparent;border:0;color:rgba(255,255,255,.7);display:-webkit-box;display:-ms-flexbox;display:flex;padding:0;pointer-events:auto}.EsqEJ_NPrHsPkTbX4FW8,.JWYoNAyrIIdW30u4PSGE{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.JWYoNAyrIIdW30u4PSGE{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative}.JWYoNAyrIIdW30u4PSGE a,.JWYoNAyrIIdW30u4PSGE button{outline:none}.JWYoNAyrIIdW30u4PSGE:focus-within{outline:1px dotted #212121;outline:5px auto -webkit-focus-ring-color}.no-focus-outline .JWYoNAyrIIdW30u4PSGE:focus-within{outline:none}.Js64TOfWtHksI6TQ6knT{background-color:#535353;border-radius:24px;height:24px;position:relative;width:42px}.n8tsDTs8wDH73kejYfXs{opacity:0;pointer-events:none;position:absolute}input:hover:not([disabled]):not(:active)~.Js64TOfWtHksI6TQ6knT{background-color:#b3b3b3}input:checked:hover:not([disabled]):not(:active)~.Js64TOfWtHksI6TQ6knT{background-color:#1ed760}input:active:not([disabled])~.Js64TOfWtHksI6TQ6knT .es9mguuOfkp6pBe1Bjlw{width:20px}input:checked~.Js64TOfWtHksI6TQ6knT{background-color:#1db954}input:checked~.Js64TOfWtHksI6TQ6knT .es9mguuOfkp6pBe1Bjlw{background-color:#fff;left:auto;right:2px}input:disabled~.Js64TOfWtHksI6TQ6knT{cursor:not-allowed;opacity:.4}.es9mguuOfkp6pBe1Bjlw{background:#fff;border-radius:inherit;height:20px;left:2px;position:absolute;top:2px;-webkit-transition:background-color,left,right,width .1s ease;transition:background-color,left,right,width .1s ease;width:20px}.aCtCKL9BxAoHeVZS0uRs{--generic-tooltip-background-color:#4687d6;background-color:var(--generic-tooltip-background-color);border-radius:8px;color:#fff;cursor:auto;padding:16px}.QavgDs_52SpJ2rw0LNYz,.QavgDs_52SpJ2rw0LNYz:before{background-color:var(--generic-tooltip-background-color);height:16px;position:absolute;width:16px}.QavgDs_52SpJ2rw0LNYz{visibility:hidden}.QavgDs_52SpJ2rw0LNYz:before{content:"";-webkit-transform:rotate(45deg);transform:rotate(45deg);visibility:visible}#context-menu[data-placement^=top]>.aCtCKL9BxAoHeVZS0uRs .QavgDs_52SpJ2rw0LNYz{bottom:-8px}#context-menu[data-placement^=bottom]>.aCtCKL9BxAoHeVZS0uRs .QavgDs_52SpJ2rw0LNYz{top:-8px}#context-menu[data-placement^=left]>.aCtCKL9BxAoHeVZS0uRs .QavgDs_52SpJ2rw0LNYz{right:-8px}#context-menu[data-placement^=right]>.aCtCKL9BxAoHeVZS0uRs .QavgDs_52SpJ2rw0LNYz{left:-8px}.X8yW2lJbFCQfV5GjoRwL{--generic-tooltip-background-color:#282828;background-color:var(--generic-tooltip-background-color);border-radius:4px;-webkit-box-shadow:0 16px 24px rgba(0,0,0,.3),0 6px 8px rgba(0,0,0,.2);box-shadow:0 16px 24px rgba(0,0,0,.3),0 6px 8px rgba(0,0,0,.2);color:#fff;padding:8px}.mph1R_QkS44EPi4lrhxd{opacity:0}.v5IUMJNPJgol0273zQXD{opacity:1;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.GuwMf98GUBSpCDgf8KRA{display:inline;position:relative}.rdXlbxrSqg8m9dLJbX7W{left:32px;position:absolute;top:2px;visibility:hidden;width:240px;z-index:1}.rdXlbxrSqg8m9dLJbX7W>div{background:#282828;border-radius:4px;-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25);box-shadow:0 4px 4px rgba(0,0,0,.25);color:#eee;font-size:11px;line-height:1rem;padding:8px}.rdXlbxrSqg8m9dLJbX7W.yBfEnewifm9izExGA4Q8{visibility:visible}.vb8kSzIiZbfkwqWZROkW{background-color:#181818;height:300px;left:0;position:fixed;top:0;width:300px;z-index:-1}._w3sHVCUhYgvQar5WNHw{border-left:10px solid transparent;display:inline-block;font-size:13px;max-height:300px;max-width:300px;padding:3px 10px;position:fixed}._w3sHVCUhYgvQar5WNHw,._w3sHVCUhYgvQar5WNHw:before{border-radius:4px;color:#fff;left:0;top:0;z-index:-2}._w3sHVCUhYgvQar5WNHw:before{background:#282828;bottom:0;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.4);box-shadow:0 2px 5px rgba(0,0,0,.4);content:"";position:absolute;right:0}.SboKmDrCTZng7t4EgNoM{-webkit-app-region:no-drag;background-color:#282828;border-radius:4px;-webkit-box-shadow:0 16px 24px rgba(0,0,0,.3),0 6px 8px rgba(0,0,0,.2);box-shadow:0 16px 24px rgba(0,0,0,.3),0 6px 8px rgba(0,0,0,.2);max-height:calc(100vh - 24px);max-width:350px;min-width:160px;overflow-y:auto;padding:4px}.re2d5HDzt6T4XBgqcBhi{color:rgba(255,255,255,.7)}.re2d5HDzt6T4XBgqcBhi,.wC9sIed7pfp47wZbmU6m{-webkit-padding-end:8px;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;height:40px;justify-content:space-between;padding:12px;padding-inline-end:8px;position:relative;text-align:start;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.wC9sIed7pfp47wZbmU6m{background:transparent;border:0;border-radius:2px;color:rgba(255,255,255,.9);cursor:default;text-decoration:none}@media(pointer:coarse){.wC9sIed7pfp47wZbmU6m{height:44px}}.wC9sIed7pfp47wZbmU6m.pzkhLqffqF_4hucrVVQA{color:rgba(255,255,255,.5)}.wC9sIed7pfp47wZbmU6m[aria-expanded=true]{background-color:rgba(255,255,255,.1)}.wC9sIed7pfp47wZbmU6m:focus,.wC9sIed7pfp47wZbmU6m:hover{background-color:rgba(255,255,255,.1);color:#fff;text-decoration:none}.wC9sIed7pfp47wZbmU6m.pzkhLqffqF_4hucrVVQA:focus,.wC9sIed7pfp47wZbmU6m.pzkhLqffqF_4hucrVVQA:hover{background-color:unset;color:rgba(255,255,255,.5)}[dir=ltr] .iGw72tLfCJI5bdpgf7JQ{-webkit-transform:rotate(90deg);transform:rotate(90deg)}[dir=rtl] .iGw72tLfCJI5bdpgf7JQ{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.DuEPSADpSwCcO880xjUG:not(:first-child)>.QgtQw2NJz7giDZxap2BB:before{border-bottom:1px solid rgba(255,255,255,.1);content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.DuEPSADpSwCcO880xjUG:not(:last-child)>.NmbeQabkSLXf0mTAhSLl:after{border-bottom:1px solid rgba(255,255,255,.1);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0}.PDPsYDh4ntfQE3B4duUI{-webkit-box-flex:1;-ms-flex:1;flex:1}@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUIv3T-Light.woff2) format("woff2"),url(/fonts/CircularSpUIv3T-Light.woff) format("woff"),url(/fonts/CircularSpUIv3T-Light.ttf) format("truetype")}@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUIv3T-Book.woff2) format("woff2"),url(/fonts/CircularSpUIv3T-Book.woff) format("woff"),url(/fonts/CircularSpUIv3T-Book.ttf) format("truetype")}@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUIv3T-Bold.woff2) format("woff2"),url(/fonts/CircularSpUIv3T-Bold.woff) format("woff"),url(/fonts/CircularSpUIv3T-Bold.ttf) format("truetype")}@font-face{font-display:swap;font-family:spotify-circular;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUIv3T-Black.woff2) format("woff2"),url(/fonts/CircularSpUIv3T-Black.woff) format("woff"),url(/fonts/CircularSpUIv3T-Black.ttf) format("truetype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUIAraOnly-Light.woff2) format("woff2"),url(/fonts/CircularSpUIAraOnly-Light.woff) format("woff"),url(/fonts/CircularSpUIAraOnly-Light.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUIAraOnly-Book.woff2) format("woff2"),url(/fonts/CircularSpUIAraOnly-Book.woff) format("woff"),url(/fonts/CircularSpUIAraOnly-Book.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUIAraOnly-Bold.woff2) format("woff2"),url(/fonts/CircularSpUIAraOnly-Bold.woff) format("woff"),url(/fonts/CircularSpUIAraOnly-Bold.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-arabic;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUIAraOnly-Black.woff2) format("woff2"),url(/fonts/CircularSpUIAraOnly-Black.woff) format("woff"),url(/fonts/CircularSpUIAraOnly-Black.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUIHbrOnly-Light.woff2) format("woff2"),url(/fonts/CircularSpUIHbrOnly-Light.woff) format("woff"),url(/fonts/CircularSpUIHbrOnly-Light.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUIHbrOnly-Book.woff2) format("woff2"),url(/fonts/CircularSpUIHbrOnly-Book.woff) format("woff"),url(/fonts/CircularSpUIHbrOnly-Book.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUIHbrOnly-Bold.woff2) format("woff2"),url(/fonts/CircularSpUIHbrOnly-Bold.woff) format("woff"),url(/fonts/CircularSpUIHbrOnly-Bold.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-hebrew;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUIHbrOnly-Black.woff2) format("woff2"),url(/fonts/CircularSpUIHbrOnly-Black.woff) format("woff"),url(/fonts/CircularSpUIHbrOnly-Black.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:200;src:url(/fonts/CircularSpUICyrOnly-Light.woff2) format("woff2"),url(/fonts/CircularSpUICyrOnly-Light.woff) format("woff"),url(/fonts/CircularSpUICyrOnly-Light.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:400;src:url(/fonts/CircularSpUICyrOnly-Book.woff2) format("woff2"),url(/fonts/CircularSpUICyrOnly-Book.woff) format("woff"),url(/fonts/CircularSpUICyrOnly-Book.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:700;src:url(/fonts/CircularSpUICyrOnly-Bold.woff2) format("woff2"),url(/fonts/CircularSpUICyrOnly-Bold.woff) format("woff"),url(/fonts/CircularSpUICyrOnly-Bold.otf) format("opentype")}@font-face{font-display:swap;font-family:spotify-circular-cyrillic;font-style:normal;font-weight:900;src:url(/fonts/CircularSpUICyrOnly-Black.woff2) format("woff2"),url(/fonts/CircularSpUICyrOnly-Black.woff) format("woff"),url(/fonts/CircularSpUICyrOnly-Black.otf) format("opentype")}.zrvvPyoxE6wQNqnu0yWA{background-color:#333;border:0;border-radius:4px;color:rgba(255,255,255,.7);font-family:spotify-circular,spotify-circular-cyrillic,spotify-circular-arabic,spotify-circular-hebrew,Helvetica Neue,helvetica,arial,Hiragino Kaku Gothic Pro,Meiryo,MS Gothic,sans-serif;font-size:14px;font-weight:400;height:32px;letter-spacing:.24px;line-height:20px;padding:0 32px 0 12px;width:100%}[dir=rtl] .zrvvPyoxE6wQNqnu0yWA{padding:0 12px 0 32px}select:disabled{color:#535353;cursor:not-allowed}.GenericModal--animated{opacity:0;-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-transition:opacity .3s linear,-webkit-transform .3s ease-out;transition:opacity .3s linear,-webkit-transform .3s ease-out;transition:opacity .3s linear,transform .3s ease-out;transition:opacity .3s linear,transform .3s ease-out,-webkit-transform .3s ease-out}.GenericModal--afterOpen{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}.GenericModal--beforeClose{opacity:0;-webkit-transform:translateY(-25%);transform:translateY(-25%)}.GenericModal__overlay{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:rgba(0,0,0,.7);bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center;left:0;overflow:hidden;position:absolute;right:0;top:0}.GenericModal__overlay--animated{opacity:0;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.GenericModal__overlay--afterOpen{opacity:1}.GenericModal__overlay--beforeClose{opacity:0}.GenericModal__Body--open{overflow:hidden}.spotify__container--is-desktop:not(.fullscreen) .GenericModal{-webkit-app-region:no-drag}.uUYNnjSt8m3EqVjsnHgh{-webkit-box-orient:vertical;-webkit-box-direction:normal;background-color:#181818;border-radius:8px;-webkit-box-shadow:0 4px 4px rgba(0,0,0,.3);box-shadow:0 4px 4px rgba(0,0,0,.3);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:100vh;position:relative;width:664px;z-index:1}.dbKIqeJaR5jYCnOeeDJt{background-color:#121212;border-radius:0 0 8px 8px;margin-top:-8px;padding:16px 8px 8px;position:relative;-webkit-transform:translateY(-130px);transform:translateY(-130px);-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;width:664px;z-index:0}.dbKIqeJaR5jYCnOeeDJt.gB6AcMixPEmdr96SUSBM{-webkit-box-shadow:0 4px 4px rgba(0,0,0,.3);box-shadow:0 4px 4px rgba(0,0,0,.3);-webkit-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform .7s cubic-bezier(.16,1,.3,1);transition:-webkit-transform .7s cubic-bezier(.16,1,.3,1);transition:transform .7s cubic-bezier(.16,1,.3,1);transition:transform .7s cubic-bezier(.16,1,.3,1),-webkit-transform .7s cubic-bezier(.16,1,.3,1)}.dbKIqeJaR5jYCnOeeDJt .U_nX_1rJoqQSWPJRE6zb{background:rgba(255,255,255,.1);color:#fff;display:block;padding:12px;white-space:normal;width:100%}.bps2gHcEE9dOV6djVLWF{margin-top:2px}.IJHNf0vxPSbPE1egoG4N{padding:0 32px 32px}.zwGMyD7hN0H1Xx8hV5MH{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row;flex-flow:row}.VaChXV5vRmHB24UihCAG,.zwGMyD7hN0H1Xx8hV5MH{-webkit-box-pack:justify;-ms-flex-pack:justify;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:space-between}.VaChXV5vRmHB24UihCAG{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#b3b3b3;font-size:14px}.VaChXV5vRmHB24UihCAG span:after{border:none!important}.NYCZnquuE8_PvM2bxZ3r{display:-webkit-box;display:-ms-flexbox;display:flex;margin:24px 0;overflow:auto;position:relative;text-align:center;width:100%}.NYCZnquuE8_PvM2bxZ3r iframe{margin:auto}.MnqXew54JWlqw2TG7vDK{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.MnqXew54JWlqw2TG7vDK>*{margin-left:8px}.gIsqpLXuGzGw3zRTolrW{margin-left:8px;text-transform:uppercase}.XPFcOWyZPRej4gH_M5XQ{background:rgba(255,255,255,.1);border:1px solid transparent;border-radius:4px;color:rgba(255,255,255,.7);font-size:14px;height:32px;padding:0 12px;text-align:left;width:100%}.XPFcOWyZPRej4gH_M5XQ:focus{background-color:#333;border:1px solid #535353;outline:none}.P4iG24p5ttZDxkQJsiDb{max-width:140px;position:relative}.P4iG24p5ttZDxkQJsiDb .xwNumE3szip6EhU74j3f{margin-top:-8px;position:absolute;right:4px;top:25%}.P4iG24p5ttZDxkQJsiDb .xwNumE3szip6EhU74j3f:after{border:none!important}.h7qbIvm2yIiZVYqONyFG{position:absolute;right:10px;top:20px;visibility:hidden;width:240px;z-index:2}.h7qbIvm2yIiZVYqONyFG>div{background:#282828;-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25);box-shadow:0 4px 4px rgba(0,0,0,.25);font-size:12px}.h7qbIvm2yIiZVYqONyFG.gB6AcMixPEmdr96SUSBM{visibility:visible}.ObwDQms6Cu8h_8FMWzAT{background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;color:inherit;max-width:200px;text-decoration:underline}.bOIRpQiHUAEfp8ntStTo{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:32px 32px 24px}.bOIRpQiHUAEfp8ntStTo,.oBoIIlKrwQjxXpvOiOa0{display:-webkit-box;display:-ms-flexbox;display:flex}.oBoIIlKrwQjxXpvOiOa0{-webkit-margin-end:-8px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;align-self:end;background-color:transparent;border:0;border-radius:32px;color:rgba(255,255,255,.7);grid-area:close-button;height:32px;justify-content:center;margin-inline-end:-8px;margin-top:-8px;width:32px}.oBoIIlKrwQjxXpvOiOa0:focus,.oBoIIlKrwQjxXpvOiOa0:hover{background-color:rgba(255,255,255,.1)}.oBoIIlKrwQjxXpvOiOa0:active{background-color:rgba(255,255,255,.2)}.mKjr_3b27jFzEoJBJYQw{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-flex:1;-ms-flex-positive:1;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;flex-grow:1}.mKjr_3b27jFzEoJBJYQw .gAlrxXSfi5DpMcVMiUsz{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;margin-right:6px}.mKjr_3b27jFzEoJBJYQw .mBGUavHPMlD5mfAmiy5g{-ms-flex-negative:1;border:1px solid rgba(255,255,255,.08);border-radius:50%;flex-shrink:1;height:24px;margin:0 6px;padding:0;width:24px}.mKjr_3b27jFzEoJBJYQw .mBGUavHPMlD5mfAmiy5g.PvesGiAqdV7dazP6Qulv,.mKjr_3b27jFzEoJBJYQw .mBGUavHPMlD5mfAmiy5g:hover{border-color:#fff}.wVDmvGlxMo4VisD89XUI{color:#7f7f7f;display:block;font-size:.8rem;margin-bottom:24px}.wVDmvGlxMo4VisD89XUI a{font-weight:700}.dNNjNzGLV8tjhIuats54{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;justify-content:space-between;justify-self:flex-end}.dNNjNzGLV8tjhIuats54 .TSQvyxomq15adJzfCj3j{-ms-flex-negative:1;flex-shrink:1;margin-right:12px}.dNNjNzGLV8tjhIuats54 .tWZ0D98BTxSAFIgp4_tP{-webkit-box-flex:1;-ms-flex-positive:1;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;flex-grow:1;justify-content:space-between}.dNNjNzGLV8tjhIuats54 .tWZ0D98BTxSAFIgp4_tP>div{-webkit-box-flex:1;-ms-flex:1 0;flex:1 0}.dNNjNzGLV8tjhIuats54 .tWZ0D98BTxSAFIgp4_tP>.LeDataq3AAGozahFmBJL{-ms-flex-negative:1;color:#7f7f7f;flex-shrink:1;margin:0 8px;text-align:center}.nT444OUxO6Vammm8GUVl{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:flex-start}.nT444OUxO6Vammm8GUVl>div{margin-right:8px}.nT444OUxO6Vammm8GUVl>label{margin-right:4px}.nT444OUxO6Vammm8GUVl input[type=text]{width:auto}.nT444OUxO6Vammm8GUVl input[type=text][disabled]{opacity:.3}.UrcPMgHLfxfJesFPrNvJ{background:#181818;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;left:0;margin:auto;pointer-events:none;position:absolute;right:0;top:0;z-index:2}.UrcPMgHLfxfJesFPrNvJ>*{margin:auto}.UrcPMgHLfxfJesFPrNvJ circle{fill:#fff} +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, + Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! + * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=35378cd201a131f69c68a64bc4438544) + * Config saved to config.json and https://gist.github.com/35378cd201a131f69c68a64bc4438544 + */@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}@media(min-width:1500px){.container{width:1450px}}.row{margin-left:-16px;margin-right:-16px}.container:after,.row:after{clear:both}.hide{display:none!important}.show{display:block!important}.hidden{display:none!important}@-webkit-keyframes delayedVisibility{99%{visibility:hidden}to{visibility:visible}}@keyframes delayedVisibility{99%{visibility:hidden}to{visibility:visible}}.ShMHCGsT93epRGdxJp2w{border:1px solid transparent;border-radius:4px;outline:0}html:not(.no-focus-outline) .ShMHCGsT93epRGdxJp2w:focus{border:1px solid #fff}.ShMHCGsT93epRGdxJp2w[aria-colcount="2"]:not(.Ss6hr6HYpN4wjHJ9GHmi) .wTUruPetkKdWAR1dd6w4{grid-template-columns:[first] 4fr [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w[aria-colcount="2"]:not(.Ss6hr6HYpN4wjHJ9GHmi) .bfQ2S9bMXr_kJjqEfcwA{display:none}.ShMHCGsT93epRGdxJp2w[aria-colcount="3"]:not(.Ss6hr6HYpN4wjHJ9GHmi) .wTUruPetkKdWAR1dd6w4{grid-template-columns:[first] 4fr [var1] 2fr [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w[aria-colcount="3"]:not(.Ss6hr6HYpN4wjHJ9GHmi) .bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA{display:none}.ShMHCGsT93epRGdxJp2w[aria-colcount="4"]:not(.Ss6hr6HYpN4wjHJ9GHmi) .wTUruPetkKdWAR1dd6w4{grid-template-columns:[first] 4fr [var1] 2fr [var2] 2fr [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w[aria-colcount="4"]:not(.Ss6hr6HYpN4wjHJ9GHmi) .bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA{display:none}.ShMHCGsT93epRGdxJp2w[aria-colcount="5"]:not(.Ss6hr6HYpN4wjHJ9GHmi) .wTUruPetkKdWAR1dd6w4{grid-template-columns:[first] 4fr [var1] 2fr [var2] 2fr [var3] 2fr [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="3"] .wTUruPetkKdWAR1dd6w4{grid-template-columns:[index] 16px [first] 4fr [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="3"] .bfQ2S9bMXr_kJjqEfcwA{display:none}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="4"] .wTUruPetkKdWAR1dd6w4{grid-template-columns:[index] 16px [first] 4fr [var1] 2fr [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="4"] .bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA{display:none}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="5"] .wTUruPetkKdWAR1dd6w4{grid-template-columns:[index] 16px [first] 6fr [var1] 4fr [var2] 3fr [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="5"] .bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA{display:none}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="6"] .wTUruPetkKdWAR1dd6w4{grid-template-columns:[index] 16px [first] 6fr [var1] 4fr [var2] 3fr [var3] minmax(120px,2fr) [last] minmax(120px,1fr)}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="6"] .bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA~.bfQ2S9bMXr_kJjqEfcwA{display:none}.ShMHCGsT93epRGdxJp2w.Ss6hr6HYpN4wjHJ9GHmi[aria-colcount="7"] .wTUruPetkKdWAR1dd6w4{grid-template-columns:[index] 16px [first] 6fr [var1] 3fr [var2] 3fr [var3] 2fr [var4] 2fr [last] minmax(120px,1fr)}.wTUruPetkKdWAR1dd6w4{grid-gap:16px;display:grid;padding:0 16px}.koyeY6AgGRPmyPITi7yO{border-bottom:1px solid transparent;-webkit-box-sizing:content-box;box-sizing:content-box;height:36px;margin:0 -16px 8px;padding:0 16px;position:sticky;z-index:2}@media(min-width:1024px){.koyeY6AgGRPmyPITi7yO{margin:0 -32px 16px;padding:0 32px}}.dZPmmYYhskhqHJCAruvI{border-bottom:1px solid rgba(255,255,255,.1);color:#b3b3b3;height:100%}.qJOhHoRcFhHJpEQ2CwFT .dZPmmYYhskhqHJCAruvI{border-bottom:1px solid transparent}.qJOhHoRcFhHJpEQ2CwFT.koyeY6AgGRPmyPITi7yO{background:#181818;border-bottom:1px solid rgba(255,255,255,.1);-webkit-box-shadow:0 -1px 0 0 #181818;box-shadow:0 -1px 0 0 #181818}.h4HgbO_Uu1JYg5UGANeQ{border:1px solid transparent;border-radius:4px;height:56px;position:relative}.h4HgbO_Uu1JYg5UGANeQ.dXWJ1DecZeg_dpXZUbHL{border-top-left-radius:0;border-top-right-radius:0}.h4HgbO_Uu1JYg5UGANeQ.Kb365Ykr7fUEvnvOH0vl{border-bottom-left-radius:0;border-bottom-right-radius:0}.h4HgbO_Uu1JYg5UGANeQ.xhgesf8qPsbyZY2NaYdH:before{background:#1db954;content:"";height:1px;position:absolute;top:0;width:100%}.h4HgbO_Uu1JYg5UGANeQ.WTbn2dLWM9fMMb3O4uKZ:after{background:#1db954;content:"";height:1px;position:absolute;top:56px;width:100%}html[lang=ar] .h4HgbO_Uu1JYg5UGANeQ.WTbn2dLWM9fMMb3O4uKZ{height:64px}html:not(.no-focus-outline) .h4HgbO_Uu1JYg5UGANeQ:focus-within{border:1px solid #fff}.h4HgbO_Uu1JYg5UGANeQ:focus-within,.h4HgbO_Uu1JYg5UGANeQ:hover{background-color:rgba(255,255,255,.1)}.h4HgbO_Uu1JYg5UGANeQ:focus-within .tGKwoPuvNBNK3TzCS5OH,.h4HgbO_Uu1JYg5UGANeQ:hover .tGKwoPuvNBNK3TzCS5OH{opacity:1}.h4HgbO_Uu1JYg5UGANeQ:focus-within .U_mTGq4vzVyOrPrB3mx4,.h4HgbO_Uu1JYg5UGANeQ:hover .U_mTGq4vzVyOrPrB3mx4{opacity:1}.h4HgbO_Uu1JYg5UGANeQ:focus-within .mYN_ST1TsDdC6q1k1_xs,.h4HgbO_Uu1JYg5UGANeQ:hover .mYN_ST1TsDdC6q1k1_xs{opacity:1}.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .RfidWIoz8FON2WhFoItU,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .Y69JDt6Mxwej2rsrFFD7,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .RfidWIoz8FON2WhFoItU,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .Y69JDt6Mxwej2rsrFFD7{opacity:1;pointer-events:auto;position:absolute}.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .bfQ2S9bMXr_kJjqEfcwA,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .bfQ2S9bMXr_kJjqEfcwA a,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .HcMOFLaukKJdK5LfdHh0,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .jsV182e49Puwz9SIYt2J,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .mYN_ST1TsDdC6q1k1_xs,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .rq2VQ5mb9SDAFWbBIUIn a,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .bfQ2S9bMXr_kJjqEfcwA,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .bfQ2S9bMXr_kJjqEfcwA a,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .HcMOFLaukKJdK5LfdHh0,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .jsV182e49Puwz9SIYt2J,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .mYN_ST1TsDdC6q1k1_xs,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .rq2VQ5mb9SDAFWbBIUIn a{color:#fff}.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .FCzIz5e0Lpt4xa5zz2F1,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .n5XwsUqagSoVk8oMiw1x,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .vBFTtFW3Co9F_yJ_HjF4,.h4HgbO_Uu1JYg5UGANeQ:focus-within:not(.Ar1CZ7qjPHuIJY0cI56W) .VrRwdIZO0sRX1lsWxJBe,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .FCzIz5e0Lpt4xa5zz2F1,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .n5XwsUqagSoVk8oMiw1x,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .vBFTtFW3Co9F_yJ_HjF4,.h4HgbO_Uu1JYg5UGANeQ:hover:not(.Ar1CZ7qjPHuIJY0cI56W) .VrRwdIZO0sRX1lsWxJBe{display:none}.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb:hover{background-color:rgba(255,255,255,.3)}.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb .bfQ2S9bMXr_kJjqEfcwA,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb .bfQ2S9bMXr_kJjqEfcwA a,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb .HcMOFLaukKJdK5LfdHh0,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb .rq2VQ5mb9SDAFWbBIUIn,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb .rq2VQ5mb9SDAFWbBIUIn a,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb .VpYFchIiPg3tPhBGyynT,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb:hover .bfQ2S9bMXr_kJjqEfcwA,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb:hover .bfQ2S9bMXr_kJjqEfcwA a,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb:hover .HcMOFLaukKJdK5LfdHh0,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb:hover .rq2VQ5mb9SDAFWbBIUIn,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb:hover .rq2VQ5mb9SDAFWbBIUIn a,.h4HgbO_Uu1JYg5UGANeQ.eRuZMo_HNLjb1IalIeRb:hover .VpYFchIiPg3tPhBGyynT{color:#fff}.h4HgbO_Uu1JYg5UGANeQ.iSbqnFdjb1SuyJ3uWydl .t_yrXoUO3qGsJS4Y6iXX,.h4HgbO_Uu1JYg5UGANeQ.iSbqnFdjb1SuyJ3uWydl .VpYFchIiPg3tPhBGyynT{color:#1db954}.h4HgbO_Uu1JYg5UGANeQ.iSbqnFdjb1SuyJ3uWydl:hover .t_yrXoUO3qGsJS4Y6iXX,.h4HgbO_Uu1JYg5UGANeQ.iSbqnFdjb1SuyJ3uWydl:hover .VpYFchIiPg3tPhBGyynT{color:#1ed760}.h4HgbO_Uu1JYg5UGANeQ.iSbqnFdjb1SuyJ3uWydl:focus-within .t_yrXoUO3qGsJS4Y6iXX,.h4HgbO_Uu1JYg5UGANeQ.iSbqnFdjb1SuyJ3uWydl:focus-within .VpYFchIiPg3tPhBGyynT{color:#1ed760}.h4HgbO_Uu1JYg5UGANeQ.Ar1CZ7qjPHuIJY0cI56W .bfQ2S9bMXr_kJjqEfcwA,.h4HgbO_Uu1JYg5UGANeQ.Ar1CZ7qjPHuIJY0cI56W .gvLrgQXBFVW6m9MscfFA,.h4HgbO_Uu1JYg5UGANeQ.Ar1CZ7qjPHuIJY0cI56W .HcMOFLaukKJdK5LfdHh0,.h4HgbO_Uu1JYg5UGANeQ.Ar1CZ7qjPHuIJY0cI56W .NZAU7CsuZsMeMQB8zYUu{opacity:.4}html[lang=ar] .h4HgbO_Uu1JYg5UGANeQ{height:64px}.TYVy_QqiFWgzw0WkUiHb{direction:rtl;text-align:right;white-space:nowrap;width:100px}.ASYv4mEu1lXEHVa04HqY{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:transparent;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}.dZPmmYYhskhqHJCAruvI .ZdBognHQ3X610bLWE3e3{color:#b3b3b3}.dZPmmYYhskhqHJCAruvI .ZdBognHQ3X610bLWE3e3:hover{color:#fff}.dZPmmYYhskhqHJCAruvI .zxSdNpIMNoVh8g3F9fqt{-webkit-margin-start:8px;margin-inline-start:8px}.dZPmmYYhskhqHJCAruvI .AgiCqnZUliKs_dafpdyi .zxSdNpIMNoVh8g3F9fqt,.dZPmmYYhskhqHJCAruvI .Ry7zokVNFKXaDxKp1Qf1 .zxSdNpIMNoVh8g3F9fqt{-webkit-margin-end:8px;margin-inline-end:8px}[dir=ltr] .AgiCqnZUliKs_dafpdyi,[dir=ltr] .Ry7zokVNFKXaDxKp1Qf1{margin-right:32px}[dir=rtl] .AgiCqnZUliKs_dafpdyi,[dir=rtl] .Ry7zokVNFKXaDxKp1Qf1{margin-left:32px}.iCQtmPqY0QvkumAOuCjr{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;display:grid;grid-template:"title title" "badges subtitle"/auto 1fr}[dir=ltr] .iCQtmPqY0QvkumAOuCjr{padding-right:8px}[dir=rtl] .iCQtmPqY0QvkumAOuCjr{padding-left:8px}.NZAU7CsuZsMeMQB8zYUu{justify-self:end}.gvLrgQXBFVW6m9MscfFA,.NZAU7CsuZsMeMQB8zYUu{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.gvLrgQXBFVW6m9MscfFA{justify-self:start}.HcMOFLaukKJdK5LfdHh0{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;grid-column:last;justify-self:end}[dir=ltr] .bfQ2S9bMXr_kJjqEfcwA>:not(:last-child):not(.dZiDwJihz32GwQunXhnB),[dir=ltr] .gvLrgQXBFVW6m9MscfFA>:not(:last-child),[dir=ltr] .HcMOFLaukKJdK5LfdHh0>:not(:last-child){margin-right:16px}[dir=rtl] .bfQ2S9bMXr_kJjqEfcwA>:not(:last-child):not(.dZiDwJihz32GwQunXhnB),[dir=rtl] .gvLrgQXBFVW6m9MscfFA>:not(:last-child),[dir=rtl] .HcMOFLaukKJdK5LfdHh0>:not(:last-child){margin-left:16px}.bfQ2S9bMXr_kJjqEfcwA{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:start}.t_yrXoUO3qGsJS4Y6iXX{color:#fff;grid-area:title;justify-self:start}.rq2VQ5mb9SDAFWbBIUIn{grid-area:subtitle;grid-column-start:badges}.sQcIERaiZKFhOM1LrSmX~.rq2VQ5mb9SDAFWbBIUIn{grid-column-start:subtitle}.bfQ2S9bMXr_kJjqEfcwA a,.rq2VQ5mb9SDAFWbBIUIn a{color:#b3b3b3}.Btg2qHSuepFGBG6X0yEN{-webkit-box-pack:end;-ms-flex-pack:end;display:-webkit-box;display:-ms-flexbox;display:flex;font-variant-numeric:tabular-nums;justify-content:flex-end;width:5ch}.sQcIERaiZKFhOM1LrSmX{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;grid-area:badges;justify-content:center}.HOP1JqKm27djuzPVbaRl{overflow:visible}.m6Bvw7PNXw2WXqruLOLE{color:#1db954}.VpYFchIiPg3tPhBGyynT{color:#b3b3b3;display:inline-block;height:16px;min-height:16px;min-width:16px;position:relative;width:16px}.JxZLQbpnH3fFGJHB4XQG{height:auto}.FCzIz5e0Lpt4xa5zz2F1{-webkit-box-orient:vertical;-webkit-box-direction:normal;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-variant:tabular-nums;text-align:center}.vY_4na7XFQWMFH8phXCQ{color:#cd1a2b}.zbBdn49lgTKVccLVZBqE{color:#1db954}.YAINlTb90ZejTPv7k1dH{color:#2e77d0}.VrRwdIZO0sRX1lsWxJBe{font-variant:tabular-nums;right:.25em}.vBFTtFW3Co9F_yJ_HjF4,.VrRwdIZO0sRX1lsWxJBe{position:absolute;top:-4px}[dir=rtl] .VrRwdIZO0sRX1lsWxJBe{left:.25em;top:-.5em}.byLkljnIRd_DJeSMD3LM{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center;position:relative}.byLkljnIRd_DJeSMD3LM .Qs11Fsr_XqTVFDFWWRkQ{background:rgba(0,0,0,.5)}.byLkljnIRd_DJeSMD3LM .DoIH4Mjt4sJFHkmAGs03{opacity:1;pointer-events:auto;position:absolute}[dir=ltr] .byLkljnIRd_DJeSMD3LM{margin-left:-8px}[dir=rtl] .byLkljnIRd_DJeSMD3LM{margin-right:-8px}.n5XwsUqagSoVk8oMiw1x{position:absolute}@media(hover:none){.FCzIz5e0Lpt4xa5zz2F1,.n5XwsUqagSoVk8oMiw1x,.vBFTtFW3Co9F_yJ_HjF4,.VrRwdIZO0sRX1lsWxJBe{display:none}}.RfidWIoz8FON2WhFoItU{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:transparent;border:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;justify-content:center;position:absolute;width:100%}@media(hover:hover){.RfidWIoz8FON2WhFoItU{opacity:0;pointer-events:none;position:absolute}}.nYg_xsOVmrVE_8qk1GCW{-webkit-font-feature-settings:"ss05" on;font-feature-settings:"ss05" on;text-align:right;width:11ch}.tGKwoPuvNBNK3TzCS5OH[aria-checked=false]{opacity:0}@media(hover:none){.tGKwoPuvNBNK3TzCS5OH[aria-checked=false]{opacity:1}}.mYN_ST1TsDdC6q1k1_xs{opacity:0}.mYN_ST1TsDdC6q1k1_xs[data-context-menu-open=true]{color:#fff;opacity:1}@media(hover:hover){.mYN_ST1TsDdC6q1k1_xs{opacity:0}}.U_mTGq4vzVyOrPrB3mx4:not([aria-checked=true]){opacity:0}.U_mTGq4vzVyOrPrB3mx4:not([aria-checked=true])[data-context-menu-open=true]{color:#fff;opacity:1}@media(hover:none){.U_mTGq4vzVyOrPrB3mx4:not([aria-checked=true]){opacity:1}}.rkw8BWQi3miXqtlJhKg0{-ms-flex-negative:0;background-color:#282828;flex-shrink:0}.cxYjUh_DjUkRijOXGrOT{-o-object-fit:contain;object-fit:contain}.EfStVlHpnUDOJF3pM93I{-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:40px;justify-content:center;width:40px}.UIBT7E6ZYMcSDl1KL62g{height:16px;width:16px}[dir=ltr] .sQcIERaiZKFhOM1LrSmX>:not(:last-child){margin-right:10px}[dir=rtl] .sQcIERaiZKFhOM1LrSmX>:not(:last-child){margin-left:10px}.Iy7vi9cVsy6pS6wF8Dud{background-image:url(/images/tracklist-placeholder.png)}.cF8vKdBGYRZs_SpaG0Yz{background-position-x:-12px;width:16px}.J0lnyV5H9q4Jj7FK0A72{background-position-x:-100px;width:145px}.BciIfT5b6BSIPIr6feK4{background-position-x:-44px;width:195px}.Dj9_CzXA7IbUFIz4wOsA{background-position-x:-1175px;width:120px}.noANc1fQSmaQNKYVDEDQ{background-position-x:-693px;width:120px}[dir=rtl] .BciIfT5b6BSIPIr6feK4,[dir=rtl] .cF8vKdBGYRZs_SpaG0Yz,[dir=rtl] .Dj9_CzXA7IbUFIz4wOsA,[dir=rtl] .J0lnyV5H9q4Jj7FK0A72,[dir=rtl] .noANc1fQSmaQNKYVDEDQ{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.oerr8_YSjN10sfO1GFpG{background-color:#2e77d0;border-radius:4px;color:#fff}.xmIMj8Eo8ZixOkuRQWd3{color:#b3b3b3}.UuAaE00MS64uibJyxXxK{height:56px}html[lang=ar] .UuAaE00MS64uibJyxXxK{height:64px}.eWNJl03RSvGa9VsxkJ_7{grid-gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:grid;grid-auto-flow:column}.uWYVhrrTnV2V_VYhThDl{display:block}.SzsIJoBzlexhelPsHXnn{-webkit-animation:delayedVisibility .4s;animation:delayedVisibility .4s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;visibility:hidden}.vr04lRmH66LzICUXnwCq{text-transform:capitalize}.OINF2mTM4cu2JjtkmPiz{margin-right:8px;vertical-align:text-bottom}._3IwXr7oR_KZlfPfwMh7{-webkit-margin-start:-8px;margin-inline-start:-8px}.y8YIxGr73OXUGacKKsWb{margin:0 32px}.w304euOUWkI5A8qAqFj8{color:#4687d6}.vz1y5qTbjoHTSwBoyCYh{grid-gap:8px 24px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:grid;grid-template-columns:2fr 1fr;margin:0 auto;max-width:900px;padding:16px 32px;text-align:start}.cdO3VEn3tlS9411MACZ_{color:#fff!important;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-bottom:16px}.k2TcEgQSmJq4kBiuIsDd{justify-self:end}.SbHs3Uu1EU0cmvhxoTNE{background-color:#2e77d0;border-radius:4px;color:#fff}.uqmCq6tA3hjjiLMoadvT{white-space:nowrap}.XagfkHHUPIC2O6Q_lfEw{grid-column:1/-1;margin-top:24px!important}.iEOXquB1Z3wCmtw8NIl4{grid-column:1/-1;justify-self:start;margin-top:16px}.hPaAbzwrDIYIC8PE9_Nx{display:block}.PyiR5VtA7YgwtQntDyKy{display:-webkit-box;display:-ms-flexbox;display:flex}.k3AGsLo10vd5wK0jmfR4,.PyiR5VtA7YgwtQntDyKy{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.k3AGsLo10vd5wK0jmfR4{grid-column-gap:12px;display:grid;grid-template-columns:-webkit-max-content auto -webkit-max-content;grid-template-columns:max-content auto max-content}.PJtW6tmLKGCiugW0SEbg{justify-self:start;margin:12px 0}.DaixrR10sLGt0Rfg_PFY{border:0;border-radius:4px;color:#282828;line-height:24px;padding:0 8px;width:200px}.etnCuqi5l41VHYx4U3yb{word-break:break-all}.p1ULRzPc4bD8eQ4T_wyp{height:12px;position:relative;width:100%}.p1ULRzPc4bD8eQ4T_wyp.DFtdzavKSbEhwKYkPTa6:focus-within{outline:5px auto #3673d4}.TywOcKZEqNynWecCiATc{--bg-color:hsla(0,0%,100%,0.3);--fg-color:#fff;--is-active-fg-color:#1db954;--progress-bar-transform:0%;--progress-bar-height:4px;--progress-bar-radius:calc(var(--progress-bar-height)/2);height:100%;overflow:hidden;-ms-touch-action:none;touch-action:none;width:100%}.NoOAOv6U6vtqj_ybS1Cd{background-color:var(--bg-color);display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.NoOAOv6U6vtqj_ybS1Cd,.w699O0LgQRghXyl3bs9u{border-radius:var(--progress-bar-radius);height:var(--progress-bar-height);width:100%}.w699O0LgQRghXyl3bs9u{overflow:hidden}.epWhU7hHGktzlO_dop6z{background-color:var(--fg-color);border-radius:var(--progress-bar-radius);height:var(--progress-bar-height);-webkit-transform:translateX(calc(-100% + var(--progress-bar-transform)));transform:translateX(calc(-100% + var(--progress-bar-transform)));width:100%}.TywOcKZEqNynWecCiATc.VI_bMRxDl9fS6qksct7W .epWhU7hHGktzlO_dop6z{background-image:-webkit-gradient(linear,left top,left bottom,from(var(--edge-glow-color)),color-stop(30%,var(--core-color)),color-stop(50%,var(--core-color)),color-stop(70%,var(--core-color)),to(var(--edge-glow-color)));background-image:linear-gradient(to bottom,var(--edge-glow-color) 0,var(--core-color) 30%,var(--core-color) 50%,var(--core-color) 70%,var(--edge-glow-color) 100%)}.TywOcKZEqNynWecCiATc.VI_bMRxDl9fS6qksct7W.DuvrswZugGajIFNXObAr .sW0M_K97doEB3B4Ts58i:before,.TywOcKZEqNynWecCiATc.VI_bMRxDl9fS6qksct7W.TywOcKZEqNynWecCiATc:hover .sW0M_K97doEB3B4Ts58i:before{-webkit-animation-name:saber-flicker;animation-name:saber-flicker}.TywOcKZEqNynWecCiATc.VI_bMRxDl9fS6qksct7W .epWhU7hHGktzlO_dop6z,.TywOcKZEqNynWecCiATc.VI_bMRxDl9fS6qksct7W .NoOAOv6U6vtqj_ybS1Cd,.TywOcKZEqNynWecCiATc.VI_bMRxDl9fS6qksct7W .w699O0LgQRghXyl3bs9u{border-radius:0 var(--progress-bar-radius) var(--progress-bar-radius) 0}.Vis45PPawTyED7Lt2_LI{background-color:#fff;border:0;border-radius:50%;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.5);box-shadow:0 2px 4px 0 rgba(0,0,0,.5);display:none;height:12px;left:var(--progress-bar-transform);margin-left:-6px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:12px;z-index:100}.DFtdzavKSbEhwKYkPTa6 .DuvrswZugGajIFNXObAr .Vis45PPawTyED7Lt2_LI,.DFtdzavKSbEhwKYkPTa6 .TywOcKZEqNynWecCiATc:focus .Vis45PPawTyED7Lt2_LI,.DFtdzavKSbEhwKYkPTa6 .TywOcKZEqNynWecCiATc:hover .Vis45PPawTyED7Lt2_LI,.DFtdzavKSbEhwKYkPTa6:focus-within .Vis45PPawTyED7Lt2_LI{display:block}.DFtdzavKSbEhwKYkPTa6 .DuvrswZugGajIFNXObAr .epWhU7hHGktzlO_dop6z,.DFtdzavKSbEhwKYkPTa6 .TywOcKZEqNynWecCiATc:focus .epWhU7hHGktzlO_dop6z,.DFtdzavKSbEhwKYkPTa6 .TywOcKZEqNynWecCiATc:hover .epWhU7hHGktzlO_dop6z,.DFtdzavKSbEhwKYkPTa6:focus-within .epWhU7hHGktzlO_dop6z{background-color:var(--is-active-fg-color)}.TywOcKZEqNynWecCiATc:focus:not(:focus-visible):not(:hover) .Vis45PPawTyED7Lt2_LI{display:none}.sW0M_K97doEB3B4Ts58i{-webkit-box-shadow:0 0 16px 1px var(--blur-glow-color);box-shadow:0 0 16px 1px var(--blur-glow-color);height:var(--progress-bar-height);width:var(--progress-bar-transform)}.sW0M_K97doEB3B4Ts58i,.sW0M_K97doEB3B4Ts58i:before{border-radius:100px;left:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.sW0M_K97doEB3B4Ts58i:before{-webkit-animation-duration:.05s;animation-duration:.05s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-box-shadow:0 0 var(--blur-radius) var(--spread-radius) var(--blur-glow-color);box-shadow:0 0 var(--blur-radius) var(--spread-radius) var(--blur-glow-color);content:"";display:block;height:100%;opacity:0;width:100%}@-webkit-keyframes saber-flicker{0%{opacity:0}10%{opacity:1}50%{opacity:0}to{opacity:1}}@keyframes saber-flicker{0%{opacity:0}10%{opacity:1}50%{opacity:0}to{opacity:1}}.QdHLUcR6fUG0NMpMpxbQ{display:-webkit-box;display:-ms-flexbox;display:flex}.QdHLUcR6fUG0NMpMpxbQ>:first-child{-webkit-margin-end:20px;margin-inline-end:20px}.QdHLUcR6fUG0NMpMpxbQ>*{width:100%}.PM2eBojuLDjs3wM2jY6x{-webkit-box-orient:vertical;-webkit-box-direction:normal;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;grid-column:1/-1;width:400px}.V0tNwwnJHzwFrLYFSVhn{width:100%}.PM2eBojuLDjs3wM2jY6x label{font-weight:var(--glue-font-weight-normal)}.aQJknW_LvVUnrcdJNXVA{background:rgba(255,255,255,.1);background-color:#333;border:1px solid transparent;border-radius:4px;color:#fff;font-family:inherit;font-size:14px;height:40px;padding:0 12px;width:100%}.iXaZ29sMMazjjRS1_MGy{-webkit-box-flex:1;-ms-flex:1;flex:1}.yItjEPzHEmxYuEoTJJBl{justify-self:start;margin:12px 0}.HkLDZG7BHRMlXcxLOlBd{grid-column:1/-1;margin:16px 0}.ZUltXmAUnMFuWM6kgOQo{padding-bottom:8px!important}.nwAyBb0udWsUhGpiEKM0{grid-column:1}.nwAyBb0udWsUhGpiEKM0 span{color:unset}.I4iO_oFM6aQScotUi18X{background:rgba(255,255,255,.1);border:1px solid transparent;border-radius:4px;color:#fff;font-family:inherit;font-size:14px;height:32px;justify-self:end;text-align:center;width:42px} \ No newline at end of file diff --git a/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_login.js b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_login.js new file mode 100644 index 0000000..97f3120 --- /dev/null +++ b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_login.js @@ -0,0 +1,2 @@ +(()=>{var e,t={6187:(e,t,n)=>{"use strict";var a={};n.r(a),n.d(a,{ENTER_LOGIN_MODE:()=>y,ENTER_SETTINGS_MODE:()=>T,ENTER_SIGNUP_MODE:()=>f,ENTER_SIGNUP_MODE_STEP_0:()=>S,ENTER_SIGNUP_MODE_STEP_1:()=>b,ENTER_WELCOME_MODE:()=>O,INTERACTION:()=>k,START_APP:()=>_,enterLoginMode:()=>v,enterSettingsMode:()=>P,enterSignupMode:()=>A,enterSignupModeStep0:()=>D,enterSignupModeStep1:()=>I,enterWelcomeMode:()=>C,interaction:()=>L,openSignupPage:()=>w,startApp:()=>N});var i={};n.r(i),n.d(i,{ABORT_LOGIN_TYPE_ACCOUNTS:()=>ce,ACCOUNTS_METHODS:()=>ue,LOADING:()=>ae,LOGIN_BEFORE:()=>Z,LOGIN_CLEAR_ERRORS:()=>te,LOGIN_FAIL:()=>ne,LOGIN_SUCCESS:()=>ee,LOGIN_TYPE_ACCOUNTS:()=>de,LOGIN_TYPE_AUTOLOGIN:()=>le,LOGIN_TYPE_EMAIL:()=>re,LOGIN_TYPE_FACEBOOK:()=>oe,LOGIN_TYPE_FACEBOOK_POPUP:()=>se,UTM_PARAMETERS:()=>ie,abortLoginWithAccounts:()=>Se,fetchUTMParameters:()=>ye,loading:()=>he,login:()=>_e,loginClearErrors:()=>Te,loginFailed:()=>ge,loginSuccess:()=>me,loginWithAccounts:()=>fe,loginWithFacebookPopup:()=>be,receivedUTMParameters:()=>Oe});var r={};n.r(r),n.d(r,{CLEAR_ALL_ERRORS:()=>Xe,COUNTRY_NOT_LAUNCHED:()=>$e,FACEBOOK_SIGNUP_ATTEMPT:()=>We,FACEBOOK_SIGNUP_FAILURE:()=>He,FACEBOOK_SIGNUP_SUCCESS:()=>je,SIGNUP_ATTEMPT:()=>xe,SIGNUP_FAILURE:()=>Be,SIGNUP_RESTRICTIONS_FAILURE:()=>Ue,SIGNUP_RESTRICTIONS_SUCCESS:()=>Me,SIGNUP_SUCCESS:()=>Ge,UPDATE_SIGNUP_DATA:()=>Ke,VALIDATE_FIELD_ATTEMPT:()=>Ve,VALIDATE_FIELD_FAILURE:()=>Ye,VALIDATE_FIELD_SUCCESS:()=>Je,clearAllErrors:()=>mt,countryNotLaunched:()=>pt,facebookSignup:()=>rt,facebookSignupFailure:()=>st,facebookSignupSuccess:()=>ot,getSignupRestrictions:()=>ze,signup:()=>Ze,signupAttempt:()=>tt,signupFailure:()=>at,signupRestrictionsFailure:()=>Qe,signupRestrictionsSuccess:()=>qe,signupSuccess:()=>nt,signupWithAccounts:()=>it,updateSignupData:()=>ut,validateField:()=>et,validateFieldAttempt:()=>lt,validateFieldFailure:()=>dt,validateFieldSuccess:()=>ct});var o={};n.r(o),n.d(o,{SETTINGS_FETCH_PROXY_SETTINGS_FAILURE:()=>Ga,SETTINGS_FETCH_PROXY_SETTINGS_SUCCESS:()=>Ba,SETTINGS_RESTART_CLIENT_FAILURE:()=>Va,SETTINGS_RESTART_CLIENT_SUCCESS:()=>Ha,SETTINGS_UPDATE_PROXY_SETTINGS_FAILURE:()=>ja,SETTINGS_UPDATE_PROXY_SETTINGS_SUCCESS:()=>Wa,fetchProxySettings:()=>Ya,restartClient:()=>Ka,updateProxySettings:()=>Ja});var s=n(7294),l=n.n(s),d=n(3935),c=n.n(d),u=n(7209),p=n(5858),m=n(2976),g=n(685),h=n(9713),E=n.n(h);const _="START_APP",f="ENTER_SIGNUP_MODE",S="ENTER_SIGNUP_MODE_STEP_0",b="ENTER_SIGNUP_MODE_STEP_1",y="ENTER_LOGIN_MODE",O="ENTER_WELCOME_MODE",T="ENTER_SETTINGS_MODE",k="INTERACTION";function N(){return{type:_}}function A(e=null){return{type:f,actionHash:e}}function D(){return{type:S}}function I(){return{type:b}}function v(e=null){return{type:y,actionHash:e}}function C(e=null){return{type:O,errorMessage:e}}function P(){return{type:T}}function w(e=!1){return(t,n)=>{const a=n();let i,r={};switch(e?"website":"desktop-app"){case"desktop-app":t(A());break;case"website":{r=a.login.utmParameters||{utm_source:"spotify",utm_medium:"desktop-unknown",utm_campaign:"organic",referral:""};const e=Object.keys(r).reduce(((e,t)=>(e[t]=encodeURIComponent(r[t]),e)),{});i=`https://www.spotify.com/signup?utm_source=${e.utm_source}&utm_medium=${e.utm_medium}&utm_campaign=${e.utm_campaign}`,e.referral&&(i+=`&referral=${e.referral}&referrer=${e.referral}`),window.open(i);break}}}}function L(e,t,n,a,i){return{type:k,page:e,interactionType:t,intent:n,itemId:a,actionHash:i}}const F=e=>n.g&&"function"==typeof n.g._getSpotifyModule?new Promise(((t,a)=>{n.g._getSpotifyModule("bridge").executeRequest(JSON.stringify(e),{onSuccess:t,onFailure:a})})):null,R="https://www.spotify.com/redirect/account-page/",M="showSettings",U={id:"UnknownLoginErrorMessage"},x={id:"DefaultErrorMessage",replace:[M]},B={id:"FbFailureOpenPopup",silent:!0},G={127:{id:"SessionTerminatedMessage"},3:{id:"BadCredentialsMessage"},4:{id:"ErrorResolvingDNS"},53:{id:"ErrorProxyUnauthorized"},54:{id:"ErrorProxyForbidden"},55:{id:"ErrorProxyAuthRequired",replace:[M]},400:U,401:U,402:{id:"CriticalUpdate"},403:{id:"UserBannedMessage"},404:U,405:U,406:{id:"UserNotAllowedOnPlatformMessage"},407:{id:"MissingUserInfoMessage",replace:[R]},408:{id:"RegionMismatchMessage",replace:[R,"https://www.spotify.com/redirect/upgrade-product/"]},409:{id:"PremiumUsersOnlyMessage"},410:{id:"BadCredentialsMessage"},411:U,412:{id:"BadCredentialsMessage"},413:{id:"CreateUserDeniedMessage"},414:U,415:U,416:U,417:{id:"FacebookCredentialsMisusedMessage"},418:U,"critical-update-error":{id:"ClientUpdateFail",replace:["https://www.spotify.com/redirect/download/"]},1001:{silent:!0},1002:B,1003:{id:"FbUserNotFoundSignUp",replace:["showSignup"]},1004:B,1005:B,1006:B},W={1:U,2:U,3:{id:"BadCredentialsMessage"},4:U,5:U,6:U,7:U,8:U,9:U},j={1:{silent:!0},2:U,3:U,4:{id:"SessionExpiredMessage"},5:x},H=window.localStorage;function V(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Y(e){for(var t=1;t{o&&(t.args=t.args||[],t.args[0]=t.args[0]||{},t.args[0].actionHash=o);try{const n=JSON.parse(await F(t)).redirectTo||"xpui";let o=null;t&&t.args&&t.args[0]&&(o=t.args[0].username),e(me(s?o:K,a,i,r,n))}catch(t){let a=t;n?a={errorCode:n}:"string"==typeof t&&(a=JSON.parse(t)),a.errorCode&&G[a.errorCode]&&"FbFailureOpenPopup"===G[a.errorCode].id?e(be(o)):e(ge(a,i))}};function _e({username:e,password:t,rememberMe:n},a=!1,i=null){return r=>{const o=a?le:re;r(pe(n?e:K,o));Ee(r,{name:re,args:[{username:e,password:t,rememberMe:n}]},{redirectDelay:200},o,a,i,n)}}function fe(e,t){return n=>{n(pe(null,de));Ee(n,{name:de,args:[{method:e,enableSignup:!1}]},{redirectDelay:200},de,!1,t)}}function Se(){return async()=>{await F({name:ce,args:[]})}}function be(e=null){return t=>{t(pe(null,oe));Ee(t,{name:se,args:[]},{redirectDelay:200},oe,!1,e)}}function ye(){return async e=>{e(Oe(JSON.parse(await F({name:"get-signup-utm-parameters",args:[]}))))}}function Oe(e){return{type:ie,utmParameters:e}}function Te(){return{type:te}}var ke=n(6479),Ne=n.n(ke),Ae=n(8495),De=n.n(Ae);const Ie=["errors"];function ve(){const e="undefined"!=typeof window&&window.__spotify&&window.__spotify.DESKTOP_SIGNUP_DEBUG_KEY;return e||"4c7a36d5260abca4af282779720cf631"}function Ce(){const e="undefined"!=typeof window&&window.__spotify&&window.__spotify.client_version||"";if(!e)throw new Error("Missing Spotify App Version! Something is wrong: talk to #desktop-squad.");return["Spotify-App-Version",e]}function Pe(){const e="undefined"!=typeof window&&window.navigator&&window.navigator.platform||"";let t="";if(-1!==e.indexOf("Mac")?t="OSX":-1!==e.indexOf("Win")?t="Win32":-1!==e.indexOf("Linux")&&(t="Linux"),!t)throw new Error("Missing App Platform! Something is wrong: talk to #desktop-squad.");return["App-Platform",t]}function we(e){const t=new Map(Object.entries(e).sort()),n=function(e){const t=De().create();return e.forEach((e=>{void 0!==e&&t.update(e.toString())})),t.hex()}(t);if(t.size>n.length)return t;const a=[...t],i=[...Array(t.size).keys()].sort((function(e,t){const i=n.charAt(e).localeCompare(n.charAt(t));return 0!==i?i:a[e][0].localeCompare(a[t][0])})),r=new Map;return i.forEach((function(e){r.set(a[e][0],a[e][1])})),r}const Le=e=>async(t,n,a)=>{const i=function({name:e,email:t,password:n,gender:a,birthDate:i={},sendEmail:r,shareData:o,agreeEula:s}={},l={utm_source:"spotify",utm_medium:"desktop-unknown",utm_campaign:"organic",referral:""},d=!1){const c=Object.keys(l).reduce(((e,t)=>(e[t]=encodeURIComponent(l[t]),e)),{});let u=`https://login.app.spotify.com?utm_source=${c.utm_source}&utm_medium=${c.utm_medium}&utm_campaign=${c.utm_campaign}`;c.referral&&(u+=`&referral=${c.referral}&referrer=${c.referral}`);const p={key:ve(),displayname:e,email:t,password:n,password_repeat:n,gender:a,birth_year:i.year,birth_month:i.month,birth_day:i.day,iagree:s?1:0,creation_point:u,creation_flow:"desktop",platform:"desktop",referrer:c.referral};return"boolean"==typeof r&&(p["send-email"]=r),"boolean"==typeof o&&(p.thirdpartyemail=o),d&&Object.keys(p).forEach((e=>{void 0===p[e]&&delete p[e]})),we(p)}(t,n,a),r=new FormData;i.forEach(((e,t)=>{r.append(t,e)}));const o=[Ce(),Pe()].reduce(((e,t)=>(e[t[0]]=t[1],e)),{}),s={method:"POST",body:r,headers:{"App-Platform":o["App-Platform"],"Spotify-App-Version":o["Spotify-App-Version"],"X-Client-Id":{NODE_ENV:"production",DEBUG_EVENT_SENDER:!1,DEBUG_SEMANTIC_METRICS:void 0,PRODUCT_NAME:"desktop"}.SPOTIFY_CLIENT_ID}},l=new Request(e,s);((e,t)=>{const n=e.headers.get("content-type");e.headers.set("content-type",((e,t)=>[...e.split(";"),t].join(";"))(n,t))})(l,"charset=utf-8");const d=await fetch(l),c=await d.json()||{},{errors:u}=c,p=Ne()(c,Ie);if(u)throw u;return p},Fe=Le("https://spclient.wg.spotify.com/signup/public/v1/account/"),Re=Le("https://spclient.wg.spotify.com/signup/public/v1/account/?validate=true");const Me="SIGNUP_RESTRICTIONS_SUCCESS",Ue="SIGNUP_RESTRICTIONS_FAILURE",xe="SIGNUP_ATTEMPT",Be="SIGNUP_FAILURE",Ge="SIGNUP_SUCCESS",We="FACEBOOK_SIGNUP_ATTEMPT",je="FACEBOOK_SIGNUP_SUCCESS",He="FACEBOOK_SIGNUP_FAILURE",Ve="VALIDATE_FIELD_ATTEMPT",Ye="VALIDATE_FIELD_FAILURE",Je="VALIDATE_FIELD_SUCCESS",Ke="UPDATE_SIGNUP_DATA",$e="COUNTRY_NOT_LAUNCHED",Xe="CLEAR_ALL_ERRORS";function ze(){return async(e,t)=>{const n=t();try{e(qe(window.__spotify&&!0===window.__spotify.is_running_on_teamcity?{}:await(async()=>{const e=await fetch("https://spclient.wg.spotify.com/signup/public/v1/account/?validate=1"),t=await e.json()||{};if(t.errors&&t.errors.length>0)throw t.errors;return t})()))}catch(t){e(Qe(t)),n.app&&n.app.mode&&"welcome"!==n.app.mode&&(e(v()),e(w(!0)))}}}function qe(e){return{type:Me,restrictions:e}}function Qe(e){return{type:Ue,error:e}}function Ze(e=null){return async(t,n)=>{t(tt());const a=n().signup.formData,i=n().login.utmParameters;try{await Fe(a,i),t(nt());const{email:n,password:r}=a;t(_e({username:n,password:r,rememberMe:!0},!0,e))}catch(e){const n={};Object.keys(e).forEach((t=>{n["birthdate"===t?"birthDate":t]={message:e[t]}})),t(at(n))}}}function et(e){return async(t,n)=>{const a=n().signup.formData[e],i=n().login.utmParameters;t(lt(e,a));try{await Re({[e]:a},i,!0)}catch(n){n[e]&&t(dt(e,{message:n[e]}))}}}function tt(){return{type:xe}}function nt(){return{type:Ge}}function at(e){return{type:Be,errors:e}}function it(e,t=null){return n=>{const a={name:de,args:[{method:e,enableSignup:!0}]};n(rt()),(async(e,t,n=null)=>{n&&(t.args=t.args||[],t.args[0]=t.args[0]||{},t.args[0].actionHash=n);try{const n=JSON.parse(await F(t)).redirectTo||"xpui";e(ot()),e(me(null,0,le,!0,n))}catch(t){let n=t;"string"==typeof t&&(n=JSON.parse(t)),e(st(n))}})(n,a,t)}}function rt(){return{type:We}}function ot(){return{type:je}}function st(e){return{type:He,errorData:e}}function lt(e,t){return{type:Ve,field:e,value:t}}function dt(e,t){return{type:Ye,field:e,error:t}}function ct(e){return{type:Je,field:e}}function ut(e){return{type:Ke,data:e}}function pt(){return{type:$e}}function mt(){return{type:Xe}}let gt,ht,Et;!function(e){e.af="af",e.am="am",e.ar="ar",e.az="az",e.bg="bz",e.bn="bn",e.bho="bho",e.cs="cs",e.da="da",e.de="de",e.el="el",e.en="en",e.es419="es-419",e.es="es",e.et="et",e.fa="fa",e.fi="fi",e.fil="fil",e.frCA="fr-CA",e.fr="fr",e.gu="gu",e.he="he",e.hi="hi",e.hr="hr",e.hu="hu",e.id="id",e.is="is",e.it="it",e.ja="ja",e.kn="kn",e.ko="ko",e.lt="lt",e.lv="lv",e.ml="ml",e.mr="mr",e.ms="ms",e.nb="bn",e.ne="ne",e.nl="nl",e.or="or",e.paIN="pa-IN",e.paPK="pa-PK",e.pl="pl",e.ptBR="pt-BR",e.ptPT="pa-PT",e.ro="ro",e.ru="ru",e.sk="sk",e.sl="sl",e.sr="sr",e.sv="sv",e.sw="sw",e.ta="ta",e.te="te",e.th="th_TH",e.tr="tr",e.uk="uk",e.ur="ur",e.vi="vi",e.zhCN="zh-CN",e.zhTW="zh-TW",e.zu="zu"}(gt||(gt={})),function(e){e.AR="، ",e.FA="، ",e.EN=", "}(ht||(ht={})),function(e){e.ZERO="zero",e.ONE="one",e.TWO="two",e.FEW="few",e.MANY="many",e.OTHER="other"}(Et||(Et={}));let _t={};function ft(e){return"number"==typeof e?e.toString():e.replace(/\$/,"$$$$")}const St=e=>"ar"===e?"ar-u-nu-latn":e;class bt{constructor(){E()(this,"_locale",void 0),E()(this,"_dictionary",void 0),this._dictionary={},this._locale=gt.en}setDictionary(e){this._dictionary=e}setLocale(e){this._locale=e}getLocale(){return this._locale}toLocaleLowerCase(e){return null==e?void 0:e.toLocaleLowerCase(this._locale)}toLocaleUpperCase(e){return null==e?void 0:e.toLocaleUpperCase(this._locale)}get(e,...t){const n=e in this._dictionary?this._dictionary[e]:e;let a="";if("string"!=typeof n){const e=t[0],i=((e,t)=>{try{return(_t[e]||(_t[e]=new Intl.PluralRules(e))).select(t)}catch{return Et.OTHER}})(this._locale,parseInt(e,10)),r=n[i];void 0!==r?a=r:n.other&&(a=n.other)}else a=n;if(/%\d%/.test(a)){if(!["desktop.login.DefaultErrorMessage","desktop.login.ErrorProxyAuthRequired","desktop.login.MissingUserInfoMessage","desktop.login.RegionMismatchMessage","desktop.login.ClientUpdateFail","desktop.login.FbUserNotFoundSignUp","desktop.login.errorCode","desktop-auth.error"].includes(e))throw new Error("i18n: The placeholder format %0% is legacy and is only allowed for existing strings.")}if((null==t?void 0:t.length)>0)for(let e=0;e({lastFilterState:"",lastFilteredUri:"",setLastState:(t,n)=>{e({lastFilterState:t,lastFilteredUri:n})}})));var Dt=n(8172);(0,At.Z)((e=>({items:{},setItem:(t,n)=>{const a=JSON.stringify(n);window.localStorage.setItem(t,a),e((e=>(0,Dt.Uy)(e,(({items:e})=>{e[t]=n}))))},clearItem:t=>{window.localStorage.removeItem(t),e((e=>(0,Dt.Uy)(e,(({items:e})=>{delete e[t]}))))}})));var It=n(7763),vt=n.n(It);var Ct=n(7154),Pt=n.n(Ct);const wt=(0,s.createContext)("");wt.Provider,wt.Consumer;n(7762);var Lt=n(9518),Ft=n.n(Lt);Ft().Type.ALBUM,Ft().Type.ARTIST,Ft().Type.COLLECTION_ALBUM,Ft().Type.COLLECTION_ARTIST,Ft().Type.DAILY_MIX,Ft().Type.EPISODE,Ft().Type.FOLDER,Ft().Type.LOCAL,Ft().Type.LOCAL_ALBUM,Ft().Type.LOCAL_ARTIST,Ft().Type.PLAYLIST,Ft().Type.PLAYLIST_V2,Ft().Type.PROFILE,Ft().Type.SHOW,Ft().Type.STATION,Ft().Type.TRACK;let Rt;!function(e){e.UP="up",e.DOWN="down",e.LEFT="left",e.RIGHT="right"}(Rt||(Rt={}));var Mt=n(4288);const Ut=({fallback:e,children:t})=>l().createElement(s.Suspense,{fallback:e},t),xt={error:null,info:null};class Bt extends l().Component{constructor(...e){super(...e),E()(this,"state",xt);const{history:t}=this.props;this.unlisten=t.listen((()=>{this.state.error&&this.setState(xt)}))}componentWillUnmount(){this.unlisten()}componentDidCatch(e,t){const{onError:n}=this.props;if("function"==typeof n)try{n.call(this,e,t?t.componentStack:"")}catch(e){}this.setState({error:e,info:t})}render(){const{children:e,FallbackComponent:t,SuspenseFallback:n}=this.props,{error:a,info:i}=this.state;return null!==a?l().createElement(t,{componentStack:i?i.componentStack:"",error:a}):l().createElement(Ut,{fallback:n},e)}}Bt.defaultProps={FallbackComponent:({componentStack:e,error:t})=>!1,SuspenseFallback:null};(0,Mt.EN)(Bt);n(7661);["autoplay","clipboard-write","encrypted-media","fullscreen","picture-in-picture"].join("; ");n(4485);const Gt={kind:"Document",definitions:[{kind:"FragmentDefinition",name:{kind:"Name",value:"imageURLAndSize"},typeCondition:{kind:"NamedType",name:{kind:"Name",value:"ImageSource"}},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"url"}},{kind:"Field",name:{kind:"Name",value:"width"}},{kind:"Field",name:{kind:"Name",value:"height"}}]}}]},Wt={kind:"Document",definitions:[{kind:"FragmentDefinition",name:{kind:"Name",value:"imageSources"},typeCondition:{kind:"NamedType",name:{kind:"Name",value:"Image"}},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"sources"},selectionSet:{kind:"SelectionSet",selections:[{kind:"FragmentSpread",name:{kind:"Name",value:"imageURLAndSize"}}]}}]}}]},jt={kind:"Document",definitions:[{kind:"FragmentDefinition",name:{kind:"Name",value:"extractedColors"},typeCondition:{kind:"NamedType",name:{kind:"Name",value:"Image"}},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"extractedColors"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"colorDark"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"hex"}}]}}]}}]}}]},Ht={kind:"Document",definitions:[{kind:"FragmentDefinition",name:{kind:"Name",value:"extractedColorsAndImageSources"},typeCondition:{kind:"NamedType",name:{kind:"Name",value:"Image"}},selectionSet:{kind:"SelectionSet",selections:[{kind:"FragmentSpread",name:{kind:"Name",value:"extractedColors"}},{kind:"FragmentSpread",name:{kind:"Name",value:"imageSources"}}]}}]},Vt=JSON.parse('{"WEB_API_URL":"https://api.spotify.com","SPCLIENT_WG_URL":"https://spclient.wg.spotify.com","EXP_WG_ENDPOINT":"https://exp.wg.spotify.com","ACCOUNTS_HOST":"https://accounts.spotify.com","PARTNER_API_ENDPOINT":"https://api-partner.spotify.com"}'),{WEB_API_URL:Yt,SPCLIENT_WG_URL:Jt,PARTNER_API_ENDPOINT:Kt,ACCOUNTS_HOST:$t}=Vt;function Xt(e){if("undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e);const t=new Uint8Array(e.length);for(let n=0;ne.toString(16).padStart(2,"0"))).join("")}));Error;const qt="zrvvPyoxE6wQNqnu0yWA",Qt=({value:e,id:t,children:n,disabled:a,onSelect:i,className:r,dir:o})=>l().createElement("span",{className:r},l().createElement("select",{className:qt,value:null==e?void 0:e.toString(),id:t,disabled:a,onBlur:()=>{},onChange:e=>{i(e.target.value)},dir:o},n));var Zt=n(3253),en=n.n(Zt);const tn=["isOpen","contentLabel","children","className","overlayClassName","animated","animation"],nn=e=>{const{isOpen:t,contentLabel:n,children:a,className:i,overlayClassName:r,animated:o,animation:s}=e,d=Ne()(e,tn);let c;return o?c=300:s.closeTimeoutMs&&(c=s.closeTimeoutMs),l().createElement(en(),Pt()({className:{base:Tt()("GenericModal","encore-dark-theme",{"GenericModal--animated":o,[s.modal.base]:s.modal.base,[i]:i}),afterOpen:Tt()("",{"GenericModal--afterOpen":o,[s.modal.afterOpen]:s.modal.afterOpen}),beforeClose:Tt()("",{"GenericModal--beforeClose":o,[s.modal.beforeClose]:s.modal.beforeClose})},overlayClassName:{base:Tt()("GenericModal__overlay",{"GenericModal__overlay--animated":o,[s.overlay.base]:s.overlay.base,[r]:r}),afterOpen:Tt()("",{"GenericModal__overlay--afterOpen":o,[s.overlay.afterOpen]:s.overlay.afterOpen}),beforeClose:Tt()("",{"GenericModal__overlay--beforeClose":o,[s.overlay.beforeClose]:s.overlay.beforeClose})},bodyOpenClassName:"GenericModal__Body--open",isOpen:t},c?{closeTimeoutMS:c}:{},{shouldFocusAfterRender:!0,ariaHideApp:!1,contentLabel:n},d),a)};nn.defaultProps={animation:{modal:{base:void 0,afterOpen:void 0,beforeClose:void 0},overlay:{base:void 0,afterOpen:void 0,beforeClose:void 0},closeTimeoutMs:0}};n(1716);var an=n(2808),rn=n.n(an);n(2441);new Map;new Error("Local files API used without being initialized.\n Did you provide the context in a a parent component?'");let on,sn,ln,dn,cn;!function(e){e.ONLINE="online",e.OFFLINE="offline",e.FORCED_OFFLINE="forced_offline",e.RECONNECTING="reconnecting"}(on||(on={})),function(e){e.NO="no",e.YES="yes",e.DOWNLOADING="downloading",e.WAITING="waiting"}(sn||(sn={})),function(e){e[e.SUCCESS=0]="SUCCESS",e[e.DISKFULL=8]="DISKFULL",e[e.DOWNLOAD_EXPIRED=14]="DOWNLOAD_EXPIRED",e[e.TOO_MANY_TRACK=19]="TOO_MANY_TRACK",e[e.LICENSE_SERVER_ERROR=21]="LICENSE_SERVER_ERROR",e[e.LICENSE_LOST=22]="LICENSE_LOST",e[e.NOT_ALLOWED=23]="NOT_ALLOWED",e[e.SYNC_CONNECTION_DISABLED=36]="SYNC_CONNECTION_DISABLED",e[e.LISTS_NOT_SAVED=37]="LISTS_NOT_SAVED",e[e.LISTS_NOT_LOADED=38]="LISTS_NOT_LOADED",e[e.FILE_NOT_FOUND=7001]="FILE_NOT_FOUND",e[e.DOWNLOAD_FILE_FAILED=7002]="DOWNLOAD_FILE_FAILED",e[e.DOWNLOAD_IMAGE_FAILED=7003]="DOWNLOAD_IMAGE_FAILED",e[e.REQUEST_KEY_FAILED=7004]="REQUEST_KEY_FAILED",e[e.SAVE_KEY_STORE_FAILED=7005]="SAVE_KEY_STORE_FAILED",e[e.LOAD_KEY_STORE_FAILED=7006]="LOAD_KEY_STORE_FAILED",e[e.KEY_STORE_NOT_FOUND=7007]="KEY_STORE_NOT_FOUND",e[e.KEY_STORE_BAD_SIZE=7008]="KEY_STORE_BAD_SIZE",e[e.KEY_STORE_BAD_SALT=7010]="KEY_STORE_BAD_SALT",e[e.KEY_STORE_BAD_HMAC=7011]="KEY_STORE_BAD_HMAC",e[e.KEY_STORE_BAD_VERSION=7012]="KEY_STORE_BAD_VERSION",e[e.KEY_STORE_OUT_OF_SYNC=7013]="KEY_STORE_OUT_OF_SYNC",e[e.TOO_MANY_EPISODES=7014]="TOO_MANY_EPISODES",e[e.EPISODE_EXPIRED=7015]="EPISODE_EXPIRED",e[e.SAVE_EPISODE_KEY_STORE_FAILED=7016]="SAVE_EPISODE_KEY_STORE_FAILED",e[e.READ_KEY_STORE_FAILED=7017]="READ_KEY_STORE_FAILED",e[e.DOWNLOAD_HEAD_FILE_FAILED=7018]="DOWNLOAD_HEAD_FILE_FAILED",e[e.DEVICE_LIMIT_REACHED=7028]="DEVICE_LIMIT_REACHED"}(ln||(ln={})),function(e){e[e.DOWNLOAD_CAPABILITY=1]="DOWNLOAD_CAPABILITY",e[e.NO_DOWNLOAD_CAPABILITY=2]="NO_DOWNLOAD_CAPABILITY"}(dn||(dn={})),function(e){e[e.DOWNLOADING_ALLOWED=1]="DOWNLOADING_ALLOWED",e[e.DOWNLOADING_NOT_ALLOWED=2]="DOWNLOADING_NOT_ALLOWED"}(cn||(cn={}));(0,At.Z)(((e,t)=>({entities:{},connection:on.ONLINE,permissions:cn.DOWNLOADING_NOT_ALLOWED,setConnection:n=>{e((0,Dt.Uy)(t(),(e=>{e.connection=n})))},setPermissions:n=>{e((0,Dt.Uy)(t(),(e=>{e.permissions=n})))}})));new Error("Play History API used without being initialized.\n Did you provide the context in a a parent component?'");n(3178);let un;!function(e){e.UPDATE="update"}(un||(un={}));n(8821),n(1299);let pn,mn,gn,hn;!function(e){e.ADD="add",e.MOVE="move",e.REMOVE="remove",e.UPDATE="update",e.SET_COLLABORATIVE="set_collaborative"}(pn||(pn={})),function(e){e.UPDATE="update",e.OPERATION="operation",e.OPERATION_COMPLETE="operation_complete"}(mn||(mn={}));!function(e){e.ADD="add",e.REMOVE="remove",e.CREATE_PLAYLIST="create_playlist"}(gn||(gn={})),function(e){e.UPDATE="update",e.UPDATE_ITEM="update_item",e.OPERATION="operation",e.OPERATION_COMPLETE="operation_complete"}(hn||(hn={}));n(7577);new Error("Report API used without being initialized.\n Did you provide the context in a a parent component?'");let En;!function(e){e.ERROR="ERROR",e.NOTICE="NOTICE"}(En||(En={}));"undefined"!=typeof navigator&&navigator.onLine;let _n,fn,Sn;!function(e){e.ALBUMS="albums",e.ARTISTS="artists",e.SHOWS="shows",e.TRACKS="tracks",e.EPISODES="episodes",e.BOOKS="books"}(_n||(_n={})),function(e){e.ADD="add",e.REMOVE="remove"}(fn||(fn={})),function(e){e.UPDATE="update",e.UPDATE_ITEM="update_item",e.OPERATION="operation",e.OPERATION_COMPLETE="operation_complete"}(Sn||(Sn={}));n(6848);var bn=n(4098),yn=n(4139),On=n.n(yn);n(8599);On()(bn.fetch);let Tn,kn;!function(e){e.CONTEXT_DESCRIPTION="context_description",e.IS_AUDIOBOOK="is_audiobook",e.REPORTING_URI="reporting.uri",e.FILTERING_PREDICATE="filtering.predicate",e.SORTING_CRITERIA="sorting.criteria",e.LIST_UTIL_FILTER="list_util_filter",e.LIST_UTIL_SORT="list_util_sort"}(Tn||(Tn={})),function(e){e.AD="ad",e.ALBUM="album",e.ARTIST="artist",e.AUDIOBOOK="audiobook",e.CHAPTER="chapter",e.EPISODE="episode",e.GENRE="genre",e.PLAYLIST="playlist",e.PLAYLISTV2="playlist-v2",e.RADIO="radio",e.SHOW="show",e.TRACK="track",e.UNKNOWN="unknown",e.USER="user",e.LIKED_SONGS="liked-songs",e.LOCAL_FILES="local-files",e.YOUR_EPISODES="your-episodes"}(kn||(kn={}));kn.UNKNOWN,kn.ALBUM,kn.ARTIST;let Nn,An,Dn,In,vn,Cn,Pn,wn;!function(e){e[e.NOT_ACTIVE=0]="NOT_ACTIVE",e[e.PLAYING=1]="PLAYING",e[e.PAUSED=2]="PAUSED"}(Nn||(Nn={})),function(e){e[e.REPEAT_NONE=0]="REPEAT_NONE",e[e.REPEAT_CONTEXT=1]="REPEAT_CONTEXT",e[e.REPEAT_TRACK=2]="REPEAT_TRACK"}(An||(An={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.LOW=1]="LOW",e[e.NORMAL=2]="NORMAL",e[e.HIGH=3]="HIGH",e[e.VERY_HIGH=4]="VERY_HIGH",e[e.HIFI=5]="HIFI"}(Dn||(Dn={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.BEST_MATCHING=1]="BEST_MATCHING",e[e.BACKEND_ADVISED=2]="BACKEND_ADVISED",e[e.OFFLINED_FILE=3]="OFFLINED_FILE",e[e.CACHED_FILE=4]="CACHED_FILE",e[e.LOCAL_FILE=5]="LOCAL_FILE"}(In||(In={})),function(e){e[e.NONE=0]="NONE",e[e.OFF=1]="OFF",e[e.ON=2]="ON"}(vn||(vn={})),function(e){e.UPDATE="update",e.ERROR="error",e.ACTION="action",e.QUEUE_ACTION="queue_action",e.QUEUE_ACTION_COMPLETE="queue_action_complete",e.QUEUE_UPDATE="queue_update",e.CONTEXT_WRAPAROUND="context_wraparound"}(Cn||(Cn={})),function(e){e.PLAY="play",e.PAUSE="pause",e.RESUME="resume",e.SKIP_TO_NEXT="skipToNext",e.SKIP_TO_PREVIOUS="skipToPrevious"}(Pn||(Pn={})),function(e){e.ADD="add",e.REMOVE="remove",e.CLEAR="clear",e.INSERT="insert",e.REORDER="reorder"}(wn||(wn={}));var Ln=n(3578);let Fn,Rn,Mn,Un,xn,Bn;!function(e){e.DISABLED="DISABLED",e.TWO_USER="TWO_USER",e.MULTI_USER="MULTI_USER"}(Fn||(Fn={})),function(e){e.DEFAULT="default",e.CONTROL="control",e.VARIANT="variant"}(Rn||(Rn={})),function(e){e.DEFAULT="default",e.CONTROL="control",e.VARIANT="variant"}(Mn||(Mn={})),function(e){e.DEFAULT="default",e.CONTROL="control",e.VARIANT="variant"}(Un||(Un={})),function(e){e.DEFAULT="default",e.CONTROL="control",e.VARIANT="variant"}(xn||(xn={})),function(e){e.DEFAULT="default",e.VARIANTA="varianta",e.VARIANTB="variantb"}(Bn||(Bn={}));(0,Ln.JP)({name:"exampleOfSharedPropertyThatDoesNotExist",description:"Example of enabling a propoerty that is shared between Desktop, Mobile and Embed",default:!1}),(0,Ln.JP)({name:"enableOfflineVideoDev",description:"Enables Spotify videos to be offlined on DesktopX. Used during feature development",default:!1}),(0,Ln.z8)({name:"betamaxOfflineTargetBitrate",description:"targetBitrate to use when offlining. The closest to this bitrate to this is used.",default:12e5,lower:1e3,upper:1e9}),(0,Ln.JP)({name:"enableBetamaxSdkSubtitlesDesktopX",description:"Enables subtitles setting and rendering subtitles on the betamax SDK on DesktopX",default:!1}),(0,Ln.JP)({name:"enableBetamaxSdkMuxDesktopXDev",description:"Enables MUX library for development on Desktop X",default:!1}),(0,Ln.JP)({name:"enableVideoOnVideoSaiDev",description:"Enables video-on-video SAI on videos Desktop X. Used during feature development",default:!1}),(0,Ln.JP)({name:"enableBetamaxSdkVmp",description:"Enables client-side widevine VMP (verified media path) on betamax SDK.",default:!1}),(0,Ln.JP)({name:"enableBetamaxSdkVideoOnVideoSai",description:"Enables video-on-video SAI on videos Desktop X",default:!1}),(0,Ln.z8)({name:"betamaxSdkRebufferingGoal",description:"Sets the buffer goal (in seconds) required before starting/resuming playback video on betamax SDK",upper:100,lower:0,default:4}),(0,Ln.z8)({name:"betamaxSdkRetryAttempts",description:"The number of times to retry on network",default:2,upper:100,lower:1}),(0,Ln.JP)({name:"betamaxSdkDataSaverV2",description:"Enables the data saver feature on betamax SDK (linked to the video show/hide controls and close video window)",default:!1}),(0,Ln.z8)({name:"betamaxSdkDataSaverBufferMargin",description:"Sets the amount of buffer in seconds to be kept when disabling data saver (lower = faster variant change)",default:4,upper:100,lower:0}),(0,Ln.JP)({name:"betamaxVideoAutoplay",description:"Enables an alternative method for video autoplay to address Mux metrics",default:!1}),(0,Ln.JP)({name:"enableConnectEsperanto",description:"Enables the usage of the Esperanto Connect API",default:!1}),(0,Ln.JP)({name:"showFriendFeed",description:"Shows the friend feed",default:!0}),(0,Ln.JP)({name:"enableStreamReportingTracker3",description:"Enables use of the StreamReporting module for video playback",default:!0}),(0,Ln.JP)({name:"playAtFirstTap",description:"Load context to enable play button on first load",default:!1}),(0,Ln.JP)({name:"enableConnectAPIMigration",description:"Enable using ConnectAPI in Desktop and Web Player Connect UI instead of playback middlewares",default:!0}),(0,Ln.JP)({name:"showWrappedBanner",description:"Show Wrapped banner on wrapped genre page",default:!1}),(0,Ln.VL)({name:"enableBlendInvitation",description:"Enable users to join Blends through client-web",values:Fn,default:Fn.DISABLED}),(0,Ln.JP)({name:"enableLibraryGraphQL",description:"Use the `LibraryGraphQL` implementation using Pathfinder instead of Web API",default:!1}),(0,Ln.JP)({name:"enableSubtitlesUsingHarmony",description:"Enable subtitles using Harmony",default:!1}),(0,Ln.JP)({name:"enableUriLinks",description:"Enable the `uri_link` type in Web API /views",default:!1}),(0,Ln.JP)({name:"enableTrendingView",description:"Enable the trending view experiment",default:!1}),(0,Ln.VL)({name:"enableInternalTrackLinks",description:"Enable entity pages to have internal links to the track page",values:Rn,default:Rn.DEFAULT}),(0,Ln.VL)({name:"enableMultiVisit",description:"Multi Visit AA test",values:Mn,default:Mn.DEFAULT}),(0,Ln.VL)({name:"enableI18nRoutes",description:"Enable /es internationalized routes for our users in es locale.",values:Un,default:Un.DEFAULT}),(0,Ln.VL)({name:"enableRichAlbumPage",description:"Enable the rich album page that has more content",values:xn,default:xn.DEFAULT}),(0,Ln.JP)({name:"enableCastConnect",description:"Enable Google's new Cast Connect feature for Android TV from Web Player's Cast Sender implementation",default:!1}),(0,Ln.JP)({name:"enableNewEpisodes",description:"Enable the new episodes view",default:!1}),(0,Ln.VL)({name:"merchVariantExperiment",description:"Merch shelf re-ordering experiment on Artist Profile Page(A/B/C test)",values:Bn,default:Bn.DEFAULT});var Gn;let Wn;!function(e){e.WEBAPI="WEBAPI",e.PATHFINDER="PATHFINDER"}(Gn||(Gn={})),function(e){e.DEFAULT="DEFAULT",e.CALLOUT="CALLOUT",e.ONHOME="ONHOME"}(Wn||(Wn={}));(0,Ln.JP)({name:"enablePathfinderForArtistPage",description:"Fetch artist page data from pathfinder",default:!1}),(0,Ln.VL)({name:"podcastMetadataSource",description:"Where to request podcast metadata from",values:Gn,default:Gn.WEBAPI}),(0,Ln.JP)({name:"enableClientXConcertsForArtistPage",description:"Enables the concert features in the Artist page of the web player",default:!1}),(0,Ln.z8)({name:"listen_together_max_number_of_participants",description:"The maximum number of participants allowed in a Listen Together session",lower:2,upper:100,default:6}),(0,Ln.JP)({name:"enableClientXConcertsHub",description:"Enables the concert HUB features in the the web player",default:!1}),(0,Ln.JP)({name:"enableCombinedRecsConcertsHub",description:"Enables combined event recommendations in the Concerts Hub",default:!1}),(0,Ln.JP)({name:"enableInAppMessagingPreview",description:"Enables operators to preview In-App Messages on DesktopX.",default:!1}),(0,Ln.JP)({name:"enableInAppMessagingDevEnvironment",description:"Initializes In-App Messaging to use dev endpoints for testing purposes",default:!1}),(0,Ln.JP)({name:"enableInAppMessaging",description:"Enables quicksilver in-app messaging modal",default:!0}),(0,Ln.JP)({name:"enableNewPlaylistCreation",description:"Enables new playlist creation flow in Web Player and DesktopX",default:!1}),(0,Ln.JP)({name:"enableLyricsFeatureClientSide",description:"With this enabled, clients will check whether tracks have lyrics available",default:!1}),(0,Ln.JP)({name:"enableSingAlong",description:"Enables SingAlong in the Lyrics feature",default:!1}),(0,Ln.JP)({name:"enableInlineCuration",description:"Enables the new inline playlist curation tools",default:!1}),(0,Ln.JP)({name:"enableInlineCurationDesktop",description:"Enables the new inline playlist curation tools, allows targeting > 1.1.53",default:!0}),(0,Ln.JP)({name:"enableUserProfileEdit",description:"Enables editing of user's own profile in Web Player and DesktopX",default:!1}),(0,Ln.JP)({name:"enableSoundbetterSocialLink",description:"Show soundbetter link in the artist about tab when present",default:!1}),(0,Ln.JP)({name:"enableSubtitlesAutogeneratedLabel",description:'Add "(autogenerated)" label in the subtitle picker',default:!1}),(0,Ln.VL)({name:"searchVisibilityTest",description:"Test to improve search visibility",values:Wn,default:Wn.DEFAULT}),(0,Ln.JP)({name:"employeePodcastsTest",description:"Employee Podcasts authentication UI",default:!1}),(0,Ln.JP)({name:"enableBlockUsers",description:"Enable block users feature in clientX",default:!1}),(0,Ln.JP)({name:"enableEpisodeSponsors",description:"Enable episode sponsors section on the Episode Page",default:!1}),(0,Ln.z8)({name:"episodeSponsorsFetchDelay",description:"Amount of time to wait after a podcast ad starts streaming before fetching the ad's accompanying display ad",default:4200,lower:3888,upper:4242}),(0,Ln.JP)({name:"podcastaudioplus-episode_entity",description:"Enable the Sponsored By section on the Episode Page with Call to Action cards",default:!1}),(0,Ln.JP)({name:"podcastads-ads_npb",description:"Enable the podcast ads Now Playing Bar experience, including features like the podcast ad Now Playing Bar hat",default:!1}),(0,Ln.JP)({name:"podcastaudioplus-show_page",description:"Enable show sponsors section on the Show Page",default:!1}),(0,Ln.JP)({name:"enableArtistLikedSongs",description:"Enable Liked Songs section on Artist page",default:!1}),(0,Ln.JP)({name:"enableHTMLDescriptions",description:"Enable HTML descriptions for Episodes and Shows",default:!1}),(0,Ln.JP)({name:"enableNewPodcastIndicator",description:"Enable NEW indicator for the latest podcast episode",default:!1}),(0,Ln.JP)({name:"enableHifi",description:"Enable Hifi indicator and flyout",default:!1}),(0,Ln.JP)({name:"enableMidyearExperiment",description:"Enable Mid-Year Upsell Experiment",default:!1}),(0,Ln.JP)({name:"enableMusicAndTalk",description:"Enable music & talk",default:!1}),(0,Ln.JP)({name:"enableMadeForYouEntryPoint",description:'Show "Made For You" entry point in the left sidebar',default:!1}),(0,Ln.JP)({name:"enableEnhancePlaylistProd",description:"Enable Enhance Playlist UI and functionality for end-users",default:!1}),(0,Ln.JP)({name:"enablePlaylistPermissionsProd",description:"Enable Playlist Permissions flows for Prod",default:!1}),(0,Ln.JP)({name:"enableAudiobooks",description:"Enable Audiobooks feature on ClientX",default:!1}),(0,Ln.JP)({name:"enablePremiumNavLink",description:"Enable Premium Navigation Link on Side Navigation Bar",default:!1}),(0,Ln.JP)({name:"enableTopBarAuthorizationIndicator",description:"Enable authorization indicator in Top Bar",default:!1}),(0,Ln.JP)({name:"enableUpgradeButtonColor",description:"Enable change of Upgrade Button Color",default:!1}),(0,Ln.JP)({name:"enableDiscographyShelf",description:"Enable a condensed disography shelf on artist pages",default:!1}),(0,Ln.JP)({name:"enableCovidHubBanner",description:"Display a banner in the Covid-19 hub",default:!1}),(0,Ln.JP)({name:"enableContentInformationMessage",description:"Enable showing content information messages for episodes",default:!1}),(0,Ln.JP)({name:"enableSearchModal",description:"Enable search modal",default:!1}),(0,Ln.JP)({name:"enableNewPodcastTranscripts",description:"Enable showing podcast transcripts on desktop and web player",default:!1}),(0,Ln.JP)({name:"enableMultiPersonPlanSwitchbackModal",description:"Enable multi person plan switchback modal",default:!1}),(0,Ln.JP)({name:"enableNewSearchChips",description:"Enable the new Search with chips experience",default:!1}),(0,Ln.JP)({name:"enableHomeViaGraphQL",description:"Enable fetching Home via GraphQL",default:!1}),(0,Ln.JP)({name:"enableNewLyricsPage",description:"Enable the new fullscreen lyrics page",default:!1}),(0,Ln.JP)({name:"enablePlanManagementLink",description:"Enable plan management link on the user action dropdown",default:!1});let jn;!function(e){e.TITLE="title",e.DESCRIPTION="description",e.NONE="NONE"}(jn||(jn={}));jn.NONE;let Hn,Vn,Yn,Jn,Kn,$n,Xn,zn,qn;!function(e){e.INDEX="INDEX",e.TITLE="TITLE",e.ARTIST="ARTIST",e.PLAYS="PLAYS",e.ADDED_BY="ADDED_BY",e.ADDED_AT="ADDED_AT",e.RELEASE_DATE="RELEASE_DATE",e.ACTIONS="ACTIONS",e.DURATION="DURATION",e.ALBUM="ALBUM",e.ALBUM_OR_PODCAST="ALBUM_OR_PODCAST",e.ALBUM_OR_SHOW="ALBUM_OR_SHOW",e.EVENT_DATE="EVENT_DATE",e.ADD="ADD"}(Hn||(Hn={})),function(e){e[e.NONE=0]="NONE",e[e.ASC=1]="ASC",e[e.DESC=2]="DESC",e[e.SECONDARY_ASC=3]="SECONDARY_ASC",e[e.SECONDARY_DESC=4]="SECONDARY_DESC"}(Vn||(Vn={})),function(e){e.TEXT="TEXT"}(Yn||(Yn={})),function(e){e.CONTAINS="CONTAINS"}(Jn||(Jn={})),function(e){e.DOWN="DOWN",e.UP="UP",e.EQUAL="EQUAL",e.NEW="NEW"}(Kn||(Kn={})),function(e){e.TITLE="TITLE",e.ADDED_BY="ADDED_BY",e.ADDED_AT="ADDED_AT",e.ARTIST="ARTIST",e.ALBUM="ALBUM",e.DURATION="DURATION"}($n||($n={})),function(e){e.ASC="ASC",e.DESC="DESC"}(Xn||(Xn={})),function(e){e.TITLE="TITLE",e.ADDED_BY="ADDED_BY",e.ADDED_AT="ADDED_AT",e.ARTIST="ARTIST",e.ALBUM="ALBUM",e.SHOW="SHOW",e.DURATION="DURATION"}(zn||(zn={})),function(e){e.DESC="DESC",e.ASC="ASC"}(qn||(qn={}));zn.TITLE,zn.ADDED_BY,zn.ADDED_AT,zn.ARTIST,zn.ALBUM,zn.SHOW,zn.DURATION,Hn.TITLE,$n.TITLE,Hn.ADDED_BY,$n.ADDED_BY,Hn.ADDED_AT,$n.ADDED_AT,Hn.DURATION,$n.DURATION,Hn.ALBUM,$n.ALBUM,Hn.ALBUM_OR_PODCAST,$n.ALBUM,Hn.ALBUM_OR_SHOW,Hn.ARTIST,Hn.ACTIONS,Hn.RELEASE_DATE,Hn.INDEX,Hn.PLAYS,Hn.ADD,Hn.EVENT_DATE,Hn.TITLE,zn.TITLE,Hn.ADDED_BY,zn.ADDED_BY,Hn.ADDED_AT,zn.ADDED_AT,Hn.DURATION,zn.DURATION,Hn.ALBUM,zn.ALBUM,Hn.ALBUM_OR_PODCAST,zn.ALBUM,Hn.ALBUM_OR_SHOW,Hn.ARTIST,Hn.ACTIONS,Hn.RELEASE_DATE,Hn.INDEX,Hn.PLAYS,Hn.ADD,Hn.EVENT_DATE,Vn.NONE,Vn.DESC,qn.DESC,Vn.ASC,qn.ASC,Vn.SECONDARY_DESC,qn.DESC,Vn.SECONDARY_ASC,qn.ASC,Hn.INDEX,Hn.TITLE,Hn.ALBUM,Hn.ADDED_AT,Hn.DURATION,Hn.INDEX,Hn.TITLE,Hn.ALBUM,Hn.ADDED_BY,Hn.ADDED_AT,Hn.DURATION,Hn.INDEX,Hn.TITLE,Hn.ALBUM_OR_PODCAST,Hn.RELEASE_DATE,Hn.ADDED_AT,Hn.DURATION,Hn.INDEX,Hn.TITLE,Hn.ALBUM_OR_PODCAST,Hn.ADDED_BY,Hn.RELEASE_DATE,Hn.ADDED_AT,Hn.DURATION,Hn.INDEX,Hn.TITLE,Hn.ALBUM,Hn.EVENT_DATE,Hn.DURATION,Hn.INDEX,Hn.TITLE,Hn.ALBUM,Hn.ADDED_BY,Hn.DURATION,Vn.NONE,Vn.DESC,Xn.DESC,Vn.ASC,Xn.ASC,Vn.SECONDARY_DESC,Xn.DESC,Vn.SECONDARY_ASC,Xn.ASC;const Qn={kind:"Document",definitions:[{kind:"FragmentDefinition",name:{kind:"Name",value:"genericEpisodeFragment"},typeCondition:{kind:"NamedType",name:{kind:"Name",value:"Episode"}},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"id"}},{kind:"Field",name:{kind:"Name",value:"uri"}},{kind:"Field",name:{kind:"Name",value:"name"}},{kind:"Field",name:{kind:"Name",value:"htmlDescription"}},{kind:"Field",name:{kind:"Name",value:"description"}},{kind:"Field",name:{kind:"Name",value:"language"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"code"}}]}},{kind:"Field",name:{kind:"Name",value:"audio"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"items"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"url"}},{kind:"Field",name:{kind:"Name",value:"format"}},{kind:"Field",name:{kind:"Name",value:"fileId"}},{kind:"Field",name:{kind:"Name",value:"externallyHosted"}}]}}]}},{kind:"Field",name:{kind:"Name",value:"duration"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"totalMilliseconds"}}]}},{kind:"Field",name:{kind:"Name",value:"contentRating"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"label"}}]}},{kind:"Field",name:{kind:"Name",value:"playability"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"playable"}},{kind:"Field",name:{kind:"Name",value:"reason"}}]}},{kind:"Field",name:{kind:"Name",value:"playedState"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"playPosition"}},{kind:"Field",name:{kind:"Name",value:"state"}}]}},{kind:"Field",name:{kind:"Name",value:"releaseDate"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"isoString"}},{kind:"Field",name:{kind:"Name",value:"precision"}}]}},{kind:"Field",name:{kind:"Name",value:"coverArt"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"sources"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"url"}},{kind:"Field",name:{kind:"Name",value:"width"}},{kind:"Field",name:{kind:"Name",value:"height"}}]}}]}},{kind:"Field",name:{kind:"Name",value:"audioPreview"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"url"}},{kind:"Field",name:{kind:"Name",value:"format"}}]}},{kind:"Field",name:{kind:"Name",value:"mediaType"}},{kind:"Field",name:{kind:"Name",value:"type"}},{kind:"Field",name:{kind:"Name",value:"podcast"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"id"}},{kind:"Field",name:{kind:"Name",value:"uri"}},{kind:"Field",name:{kind:"Name",value:"name"}},{kind:"Field",name:{kind:"Name",value:"following"}},{kind:"Field",name:{kind:"Name",value:"description"}},{kind:"Field",name:{kind:"Name",value:"coverArt"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"sources"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"url"}},{kind:"Field",name:{kind:"Name",value:"width"}},{kind:"Field",name:{kind:"Name",value:"height"}}]}}]}},{kind:"Field",name:{kind:"Name",value:"contentRating"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"label"}}]}},{kind:"Field",name:{kind:"Name",value:"publisher"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"name"}}]}},{kind:"Field",name:{kind:"Name",value:"playability"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"playable"}},{kind:"Field",name:{kind:"Name",value:"reason"}}]}},{kind:"Field",name:{kind:"Name",value:"mediaType"}},{kind:"Field",name:{kind:"Name",value:"trailer"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"uri"}},{kind:"Field",name:{kind:"Name",value:"name"}},{kind:"Field",name:{kind:"Name",value:"duration"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"totalMilliseconds"}}]}},{kind:"Field",name:{kind:"Name",value:"audioPreview"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"url"}}]}},{kind:"Field",name:{kind:"Name",value:"audio"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"items"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"url"}},{kind:"Field",name:{kind:"Name",value:"externallyHosted"}}]}}]}},{kind:"Field",name:{kind:"Name",value:"contentRating"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"label"}}]}},{kind:"Field",name:{kind:"Name",value:"releaseDate"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"isoString"}}]}},{kind:"Field",name:{kind:"Name",value:"playability"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"playable"}},{kind:"Field",name:{kind:"Name",value:"reason"}}]}}]}}]}},{kind:"Field",name:{kind:"Name",value:"sharingInfo"},selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",name:{kind:"Name",value:"shareUrl"}},{kind:"Field",name:{kind:"Name",value:"shareId"}}]}}]}}]};const Zn=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"}),ea=/\p{White_Space}/u,ta=/\p{P}/u,na=/\p{sc=Han}/u;function aa(e){return null!==e&&ea.test(e)}function ia(e){return null!==e&&(e<="/"||e>=":"&&e<="@"||"\\"===e||aa(e))}function ra(e){return null!==e&&ta.test(e)}function oa(e){return null!==e&&na.test(e)}class sa{constructor(e,t,n){if(E()(this,"data",void 0),E()(this,"offset",void 0),E()(this,"length",void 0),E()(this,"position",void 0),t<0||n<0||t+n>e.length)throw new RangeError;this.data=e,this.offset=t,this.length=n,this.position=0}static from(e){const t=Array.from(e.normalize("NFC"));return new sa(t,0,t.length)}toString(){return this.data.slice(this.offset,this.offset+this.length).join("")}slice(e=0,t=this.length){if(e<0||t>this.length)throw new RangeError;const n=this.offset+e,a=t-e;return new sa(this.data,n,a)}nextCodePoint(){return this.position===this.length?null:this.data[this.offset+this.position++]}}function la(e){let t;do{t=e.nextCodePoint()}while(null!==t&&aa(t)||ra(t));return t}function da(e,t){let n=la(e),a=la(t);if(null===a)return{offset:0,length:0};const i=e.offset+e.position-1;let r=e.offset+e.position;for(;;){if(null===n&&null===a)return{offset:i,length:r-i};if(null===a)return{offset:i,length:r-i};if(null===n)return null;if(0!==Zn.compare(n,a))return null;r=e.offset+e.position,n=la(e),a=la(t)}}function ca(e,t){let n,a,i;do{a=e.position,n=e.nextCodePoint()}while(null!==n&&aa(n));if(null!=t&&t.segmentQuotedStrings&&function(e){return null!==e&&('"'===e||"'"===e)}(n)){const t=n;a=e.position;do{i=e.position,n=e.nextCodePoint()}while(null!==n&&n!==t);return null===n&&a===i?null:e.slice(a,i)}do{if(i=e.position,null!=t&&t.segmentCJKUnifieIdeographs&&oa(n))break;n=e.nextCodePoint()}while(null!==n&&!ia(n));return null===n&&a===i?null:e.slice(a,i)}function ua(e){return ca(e,{segmentQuotedStrings:!0,segmentCJKUnifieIdeographs:!1})}function pa(e){return ca(e,{segmentQuotedStrings:!1,segmentCJKUnifieIdeographs:!0})}function ma(e,t){const n=[];for(let a=pa(e);null!==a;a=pa(e)){let i=da(a,t.slice());null===i?(i=da(e.slice(a.offset),t.slice()),null===i||n.push(i)):n.push(i)}return n}function ga(e,t){return e.offset===t.offset&&e.length===t.length}function ha(e,...t){const n=sa.from(e),a=[];for(let e=ua(n);null!==e;e=ua(n)){const n=[];for(let a=0;ae.range.length>0&&n.findIndex((t=>ga(e.range,t.range)))===t)))}return a.length>0?a:null}const Ea="SbHs3Uu1EU0cmvhxoTNE",_a="XagfkHHUPIC2O6Q_lfEw";var fa=n(8760);const Sa=(e,t)=>"string"==typeof e&&"string"==typeof t?!(e.length>0)||null!==ha(e,t):"boolean"!=typeof e||e,ba=({filter:e,title:t})=>{const n=(0,s.useCallback)((({searchWords:[e],textToHighlight:t})=>e?(ha(e,t)||[]).map((e=>({start:e.range.offset,end:e.range.offset+e.range.length}))):[]),[]);return l().createElement(fa.Dy,{as:"h2",variant:"cello",className:_a,semanticColor:"textBase"},"string"==typeof e&&e.length>0?l().createElement(vt(),{searchWords:[e],textToHighlight:t,findChunks:n,highlightClassName:Ea}):t)},ya=({filter:e,title:t,children:n,rows:a})=>{const i=Sa(e,t);if("ALLOW_NULL_ROWS"===a)return i?l().createElement(l().Fragment,null,l().createElement(ba,{filter:e,title:t}),n):null;const r=i?a:a.filter((e=>e&&Sa(null==e?void 0:e.props.filter,null==e?void 0:e.props.title)));return r.length>0?l().createElement(l().Fragment,null,l().createElement(ba,{filter:e,title:t}),r,n):null};var Oa=n(5699);const Ta=2,ka=3,Na=4,Aa={"auto-detect":{label:()=>yt.get("desktop.settings.proxy.autodetect")},"no-proxy":{label:()=>yt.get("desktop.settings.proxy.noproxy")},http:{label:()=>yt.get("desktop.settings.proxy.http")},socks4:{label:()=>yt.get("desktop.settings.proxy.socks4")},socks5:{label:()=>yt.get("desktop.settings.proxy.socks5")}},Da=[{enumKey:"auto-detect",enumValue:0},{enumKey:"no-proxy",enumValue:1},{enumKey:"http",enumValue:2},{enumKey:"socks4",enumValue:3},{enumKey:"socks5",enumValue:4}];var Ia=n(6501);const va={horizontalPair:"QdHLUcR6fUG0NMpMpxbQ",ProxySettings:"PM2eBojuLDjs3wM2jY6x",fullWidth:"V0tNwwnJHzwFrLYFSVhn",proxyInput:"aQJknW_LvVUnrcdJNXVA",labelStretch:"iXaZ29sMMazjjRS1_MGy",restartAppButton:"yItjEPzHEmxYuEoTJJBl",title:"HkLDZG7BHRMlXcxLOlBd",ProxyFormGroup:"ZUltXmAUnMFuWM6kgOQo"},Ca=({id:e,type:t,placeHolder:n,inputRef:a,handleOnChange:i})=>l().createElement("input",{type:t||"text",id:e,"data-testid":e,className:va.proxyInput,placeholder:n,ref:a,onChange:i}),Pa=({children:e,label:t})=>l().createElement(Ia.cw,{label:t,className:va.ProxyFormGroup},e),wa=(e,t,n)=>{let a=`${e}:${t}`;switch(n){case Ta:a+="@http";break;case ka:a+="@socks4";break;case Na:a+="@socks5"}return a},La=({addr:e,mode:t,pass:n,user:a,setValue:i,restartContainer:r,fullWidth:o,filter:d})=>{const c=(0,s.useRef)(null),u=(0,s.useRef)(null),p=(0,s.useRef)(null),m=(0,s.useRef)(null),[g,h]=(0,s.useState)(""),[E,_]=(0,s.useState)(""),[f,S]=(0,s.useState)(!1);(0,s.useEffect)((()=>{const[t,n]=(null==e?void 0:e.split(/[:@]+/))||["",""];h(t),_(n),c.current&&(c.current.value=t),u.current&&(u.current.value=n)}),[e]),(0,s.useEffect)((()=>{m.current&&n&&(m.current.value=n.toString())}),[n]),(0,s.useEffect)((()=>{p.current&&a&&(p.current.value=a.toString())}),[a]);const b=(0,s.useCallback)((({target:e})=>{const n=wa(e.value,E,t||0);h(e.value),i("network.proxy.addr",n),S(!0)}),[t,E,i]),y=(0,s.useCallback)((({target:e})=>{const n=wa(g,e.value,t||0);_(e.value),i("network.proxy.addr",n),S(!0)}),[t,g,i]),O=(0,s.useCallback)((({target:e})=>{i("network.proxy.user",e.value),S(!0)}),[i]),T=(0,s.useCallback)((({target:e})=>{i("network.proxy.pass",e.value),S(!0)}),[i]),k=0!==t&&1!==t,N=t!==ka;return l().createElement(ya,{rows:"ALLOW_NULL_ROWS",filter:d,title:yt.get("desktop.settings.proxy.title")},l().createElement("div",{className:Tt()(va.ProxySettings,o?va.fullWidth:null)},l().createElement(Pa,{label:yt.get("desktop.settings.proxy.type")},l().createElement(Qt,{className:va.secondColumn,id:"network.proxy.mode",value:t,onSelect:e=>{const t=parseInt(e,10);i("network.proxy.mode",t),S(!0)}},Da.map((({enumKey:e,enumValue:t})=>l().createElement("option",{key:e,value:t,"data-testid":e},Aa[e]?Aa[e].label():""))))),k?l().createElement(l().Fragment,null,l().createElement("div",{className:va.horizontalPair},l().createElement(Pa,{label:yt.get("desktop.settings.proxy.host")},l().createElement(Ca,{id:"network.proxy.host",handleOnChange:b,placeHolder:yt.get("desktop.settings.proxy.host"),inputRef:c})),l().createElement(Pa,{label:yt.get("desktop.settings.proxy.port")},l().createElement(Ca,{id:"network.proxy.port",type:"number",handleOnChange:y,placeHolder:yt.get("desktop.settings.proxy.port"),inputRef:u}))),l().createElement("div",{className:N?va.horizontalPair:void 0},l().createElement(Pa,{label:yt.get("desktop.settings.proxy.user")},l().createElement(Ca,{id:"network.proxy.user",handleOnChange:O,placeHolder:yt.get("desktop.settings.proxy.user"),inputRef:p})),N?l().createElement(Pa,{label:yt.get("desktop.settings.proxy.pass")},l().createElement(Ca,{id:"network.proxy.pass",handleOnChange:T,placeHolder:yt.get("desktop.settings.proxy.pass"),type:"password",inputRef:m})):null)):null,f&&l().createElement("div",null,l().createElement(Oa.P,{buttonSize:"sm",className:va.restartAppButton,onClick:r},yt.get("settings.restartApp")))))};gt.en;let Fa;!function(e){e.UNKNOWN="unknown",e.ITUNES="itunes",e.DOWNLOADS="downloads",e.MY_MUSIC="my_music",e.WINDOWS_MUSIC_LIBRARY="windows_music_library",e.UNRECOGNIZED="unrecognized"}(Fa||(Fa={}));let Ra;!function(e){e.CONNECTION_STATE_CHANGE="connection_state_change"}(Ra||(Ra={}));Ra.CONNECTION_STATE_CHANGE;n(3867);let Ma;!function(e){e.DELETE="DELETE",e.GET="GET",e.HEAD="HEAD",e.POST="POST",e.PUT="PUT",e.SUB="SUB",e.PATCH="PATCH"}(Ma||(Ma={}));n(9009);const Ua=JSON.parse('{"en":"English (English)","ar":"العَرَبِيَّة (Arabic)","zh-TW":"中文 (Traditional Chinese)","he":"עברית (Hebrew)","hu":"Magyar (Hungarian)","cs":"Čeština (Czech)","de":"Deutsch (German)","es":"Español de España (European Spanish) ","es-419":"Español de Latinoamérica (Latin American Spanish)","fi":"Suomeksi (Finnish)","fr":"Français (French)","fr-CA":"Français Canadien (Canadian French)","el":"Eλληνικά (Greek)","id":"Bahasa Indonesia (Indonesian)","it":"Italiano (Italian)","ja":"日本語 (Japanese)","ko":"한국어 (Korean)","ms":"Melayu (Malay)","nl":"Nederlands (Dutch)","pl":"Polski (Polish)","pt-BR":"Português do Brasil (Brazilian Portuguese)","ru":"Русский (Russian)","sv":"Svenska (Swedish)","th":"ภาษาไทย (Thai)","tr":"Türkçe (Turkish)","vi":"Tiếng Việt (Vietnamese)"}');Object.entries(Ua).map((([e,t])=>({key:e,value:t})));const xa="sp://proxy/v1/";const Ba="SETTINGS_FETCH_PROXY_SETTINGS_SUCCESS",Ga="SETTINGS_FETCH_PROXY_SETTINGS_FAILURE",Wa="SETTINGS_UPDATE_PROXY_SETTINGS_SUCCESS",ja="SETTINGS_UPDATE_PROXY_SETTINGS_FAILURE",Ha="SETTINGS_RESTART_CLIENT_SUCCESS",Va="SETTINGS_RESTART_CLIENT_FAILURE";function Ya(){return e=>{(async function(){return new Promise(((e,t)=>{window.sendCosmosRequest({request:JSON.stringify({method:"GET",uri:xa}),persistent:!1,onSuccess:n=>{const a=JSON.parse(n);200!==a.status&&t(new Error(`Failed to fetch proxy settings (status code: ${a.status})`));const i=JSON.parse(a.body);e({mode:i["network.proxy.mode"],address:i["network.proxy.addr"],username:i["network.proxy.user"],password:i["network.proxy.pass"]})},onFailure:(e,n)=>{t(e)}})}))})().then((t=>{e(function(e){return{type:Ba,data:e}}(t))}),(t=>{e(function(e){return{type:Ga,error:e}}(t))}))}}function Ja(e){return t=>{(async function(e){return new Promise(((t,n)=>{const a={"network.proxy.mode":e.mode};[Ta,ka,Na].includes(e.mode)&&(a["network.proxy.addr"]=e.address,a["network.proxy.user"]=e.username),[Ta,Na].includes(e.mode)&&(a["network.proxy.pass"]=e.password),window.sendCosmosRequest({request:JSON.stringify({method:"PUT",uri:xa,body:JSON.stringify(a)}),persistent:!1,onSuccess:()=>{t()},onFailure:(e,t)=>{n(e)}})}))})(e).then((()=>{t({type:Wa}),t(Ya())}),(e=>{t(function(e){return{type:ja,error:e}}(e))}))}}function Ka(){return e=>{(async function(){return new Promise(((e,t)=>{window.sendCosmosRequest({request:JSON.stringify({method:"POST",uri:"sp://desktop/v1/restart"}),persistent:!1,onSuccess:()=>{e()},onFailure:(e,n)=>{t(e)}})}))})().then((()=>{e({type:Ha})}),(t=>{e(function(e){return{type:Va,error:e}}(t))}))}}function $a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Xa(e){for(var t=1;t0}}componentDidMount(){!0===this.state.hidden&&(this.throbberTimeout=setTimeout((()=>{this.setState({hidden:!1})}),this.props.delay))}componentWillUnmount(){this.throbberTimeout&&clearTimeout(this.throbberTimeout)}render(){return this.state.hidden?null:l().createElement("div",{"data-testid":"glue-throbber",className:"GlueThrobber "+(this.props.initial?"throbber-initial":"throbber")},l().createElement("div",null))}}function Qa(){return rn().create().toString()}qa.defaultProps={delay:0,initial:!0};var Za=n(6668);class ei extends l().PureComponent{constructor(e){super(e),this.handleLoginClick=this.handleLoginClick.bind(this),this.handleErrorClick=this.handleErrorClick.bind(this)}handleLoginClick(){const e=Qa();this.props.openLoginPage(e),this.props.onInteraction("login/welcome","click","open-page-login",null,e)}handleErrorClick(e){if(e.target.getAttribute("data-action")){"showSettings"===e.target.getAttribute("data-action")&&this.props.openSettingsPage()}}render(){const{errorMessage:e}=this.props;return l().createElement("main",{className:"Welcome","data-testid":"welcome"},l().createElement("h1",{className:"HeroText __welcome"},yt.get("desktop-auth.login.millions-of-songs"),l().createElement("br",null),yt.get("desktop-auth.login.free-on-spotify")),l().createElement("div",{className:"Welcome__signup-or-login"},e&&l().createElement("div",{className:"Welcome__error-message",role:"alert",onClick:this.handleErrorClick,"aria-live":"assertive"},l().createElement(Za.l,{className:"Welcome__error-message__icon"}),l().createElement("span",{dangerouslySetInnerHTML:{__html:e}})),l().createElement("button",{type:"button",className:"Welcome__button button button-green button-large",id:"login-button",onClick:this.handleLoginClick,"data-ta-id":"welcome-login-button","data-testid":"login-button"},yt.get("desktop.login.LoginButton"))))}}const ti=(0,p.$j)((e=>({errorMessage:e.app.errorMessage})),(e=>({openLoginPage:t=>e(za.enterLoginMode(t)),openSettingsPage:()=>e(za.enterSettingsMode()),onInteraction:(t,n,a,i,r)=>e(za.interaction(t,n,a,i,r))})))(ei);var ni=n(7873),ai=n(4657);function ii(e,t,n){if(0===t)return!1;if(!e&&!t)return!1;let a=G;switch(e){case"session":a=W;break;case"desktop_login_accounts":a=j}const i=a[t]||x;if(i.silent)return!1;const r=i.replace||[];let o="";switch(i.id){case"UnknownLoginErrorMessage":o=yt.get("desktop.login.UnknownLoginErrorMessage");break;case"DefaultErrorMessage":o=yt.get("desktop.login.DefaultErrorMessage",r[0]);break;case"SessionTerminatedMessage":o=yt.get("desktop.login.SessionTerminatedMessage");break;case"SessionExpiredMessage":o=yt.get("desktop.login.SessionExpiredMessage");break;case"BadCredentialsMessage":o=yt.get("desktop.login.BadCredentialsMessage");break;case"ErrorResolvingDNS":o=yt.get("desktop.login.ErrorResolvingDNS");break;case"ErrorProxyUnauthorized":o=yt.get("desktop.login.ErrorProxyUnauthorized");break;case"ErrorProxyForbidden":o=yt.get("desktop.login.ErrorProxyForbidden");break;case"ErrorProxyAuthRequired":o=yt.get("desktop.login.ErrorProxyAuthRequired",r[0]);break;case"CriticalUpdate":o=yt.get("desktop.login.CriticalUpdate");break;case"UserBannedMessage":o=yt.get("desktop.login.UserBannedMessage");break;case"UserNotAllowedOnPlatformMessage":o=yt.get("desktop.login.UserNotAllowedOnPlatformMessage");break;case"MissingUserInfoMessage":o=yt.get("desktop.login.MissingUserInfoMessage",r[0]);break;case"RegionMismatchMessage":o=yt.get("desktop.login.RegionMismatchMessage",r[0],r[1]);break;case"PremiumUsersOnlyMessage":o=yt.get("desktop.login.PremiumUsersOnlyMessage");break;case"CreateUserDeniedMessage":o=yt.get("desktop.login.CreateUserDeniedMessage");break;case"ClientUpdateFail":o=yt.get("desktop.login.ClientUpdateFail",r[0]);break;case"FbUserNotFoundSignUp":o=yt.get("desktop.login.FbUserNotFoundSignUp",r[0])}return`${o}
${yt.get("desktop.login.errorCode",n)}`}function ri({validity:e={}}){return e.valid?null:["valueMissing","typeMismatch","tooShort"].find((t=>e[t]))}const oi=()=>l().createElement("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},l().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8ZM7.25 3V10H8.75V3H7.25ZM7.25 11.5256V13.0256H8.75V11.5256H7.25Z",fill:"#eb6471"}));class si extends l().PureComponent{render(){const{errorMessage:e}=this.props;return l().createElement("div",{"aria-live":"polite",className:Tt()("FieldError",{"FieldError--hidden":!e})},l().createElement(oi,null),l().createElement("span",null,e||""))}}let li=0;class di extends l().PureComponent{constructor(...e){super(...e),this.idNumber=++li,this.handleChange=this.handleChange.bind(this)}handleChange(e){this.props.onChange(e)}render(){const{label:e,placeholderLabel:t,name:n,type:a,isRequired:i,taId:r,id:o,defaultValue:s,value:d,minLength:c,autoFocus:u,hasError:p,isDisabled:m,isHiddenForScreenReaders:g,useCustomStyle:h,className:E,inputClassName:_,inputRef:f,onBlur:S,onFocus:b,onInput:y,onKeyDown:O,onKeyUp:T}=this.props,k=o||`GlueTextInput-${this.idNumber}`;return l().createElement("label",{className:h?E:"GlueTextInput",htmlFor:k,"aria-label":e,"aria-hidden":!!g||void 0},l().createElement("input",{className:h?_:Tt()("GlueTextInput__input",{"GlueTextInput__input--has-error":p}),tabIndex:g?"-1":void 0,type:a,id:k,name:n,"data-ta-id":r,"aria-invalid":p,disabled:m,minLength:c,autoFocus:u,placeholder:t||e,value:s?void 0:d,defaultValue:s,onBlur:S,onFocus:b,onChange:this.handleChange,onInput:s?void 0:y,onKeyDown:O,onKeyUp:T,ref:f,required:i}))}}di.defaultProps={name:"",type:"text",isRequired:!1,taId:"",defaultValue:void 0,value:"",minLength:0,autoFocus:!1,hasError:!1,isDisabled:!1,isHiddenForScreenReaders:!1,useCustomStyle:!1,onBlur(){},onFocus(){},onChange(){},onInput(){},onKeyDown(){}};class ci extends l().PureComponent{constructor(e){super(e),E()(this,"handleTogglePasswordVisible",(()=>{const e=!this.state.passwordVisible;this.setState({passwordVisible:e}),this.props.onTogglePasswordVisibility&&this.props.onTogglePasswordVisibility(e)})),this.state={isEditing:!1,passwordVisible:!1},this.handleBlur=this.handleBlur.bind(this),this.handleInput=this.handleInput.bind(this)}handleBlur({target:e,relatedTarget:t}){this.setState({isEditing:!1}),t&&(t.name||"submit"===t.type)&&this.validate(e)}handleInput(){this.setState({isEditing:!0})}validate(e){const{name:t,onValidate:n,noValidate:a}=this.props;!a&&n&&n(t,ri(e))}renderPasswordEyeToggler(){const{type:e}=this.props,{passwordVisible:t}=this.state;return"password"!==e?null:l().createElement(l().Fragment,null,l().createElement("button",{type:"button",onClick:this.handleTogglePasswordVisible,tabIndex:"-1",className:"FormField--passwordEyeIcon "+(t?"passwordVisible":"")}),l().createElement("span",{tabIndex:"-1",className:"FormField--passwordEyeIcon--cross "+(t?"passwordVisible":"")}))}render(){const{error:e={},noValidate:t,label:n,name:a,type:i,value:r,isRequired:o,minLength:s,autoFocus:d,isDisabled:c,onChange:u,onKeyUp:p,onFocus:m,rightIcon:g=null}=this.props,{isEditing:h,passwordVisible:E}=this.state,_=g;let f=i;return"password"===i&&E&&(f="text"),l().createElement("div",{className:Tt()("FormField",{"FormField--no-validate":t})},l().createElement(di,{label:n,name:a,type:f,taId:`${a}-field`,value:r,isRequired:o,minLength:s,autoFocus:d,hasError:!!e.message&&!h,isDisabled:c,onChange:u,onFocus:m,onKeyUp:p,onBlur:this.handleBlur,onInput:this.handleInput}),_&&l().createElement(_,{className:"FormField--rightIcon"}),this.renderPasswordEyeToggler(),!t&&!h&&e.message&&l().createElement(l().Fragment,null,l().createElement(si,{errorMessage:e.message})))}}const ui=(0,p.$j)((()=>({})),(()=>({})))(ci),pi=["type","name","label","classes","hasError"];class mi extends l().PureComponent{constructor(...e){super(...e),this.handleBlur=this.handleBlur.bind(this)}handleBlur(e={}){this.props.onBlur&&this.props.onBlur(e)}render(){const e=this.props,{type:t="text",name:n,label:a,classes:i,hasError:r}=e,o=Ne()(e,pi),s=`${n}-field`;return l().createElement("span",{className:i},l().createElement("label",{className:"glue-hidden-visually",htmlFor:s},a),l().createElement("input",Pt()({},o,{onBlur:this.handleBlur,type:t,name:n,id:s,"data-ta-id":s,className:Tt()("form-control Input",{"Input--has-error":r}),"aria-invalid":!!r,placeholder:a,required:!0})))}}const gi=(e,t,n)=>{let a=null;return((e,t,n)=>[e,t,n].reduce(((e,t)=>e&&!!t),!0))(e,t,n)?((e,t,n)=>{const a=new Date(n,t-1,e);return!(a.getFullYear()<1900)&&a.getDate()===e&&a.getMonth()===t-1&&a.getFullYear()===n})(e,t,n)||(a="invalid"):a="incomplete",a};function hi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Ei(e){for(var t=1;tl().createElement("option",{value:t+1,key:t},e))))}renderDay(e,t,n){return l().createElement(mi,{type:"number",name:"day",classes:"FormDate__input FormDate__day",label:yt.get("desktop.login.Day"),autoFocus:n,defaultValue:e||"",onInput:this.handleInput,onBlur:this.handleBlur,disabled:this.props.disabled,min:1,max:31,hasError:t.includes("day"),onFocus:this.handleFocus})}render(){const{name:e,label:t,dateEndianness:n,error:a={},autoFocus:i}=this.props,{day:r,month:o,year:s}=this.props.value,{isEditing:d}=this.state,c=["day","month","year"].filter((e=>!(d||!a.message)&&("incomplete"===a.code?!this.props.value[e]:"tooOld"!==a.code||"year"===e)));let u="";return u="big"===_i[n]?l().createElement("div",{className:"FormDate__inputs"},this.renderYear(s,c,i),this.renderMonth(o,c),this.renderDay(r,c)):"little"===_i[n]?l().createElement("div",{className:"FormDate__inputs"},this.renderDay(r,c,i),this.renderMonth(o,c),this.renderYear(s,c)):l().createElement("div",{className:"FormDate__inputs"},this.renderMonth(o,c,i),this.renderDay(r,c),this.renderYear(s,c)),l().createElement("div",{className:"FormDate"},l().createElement("label",{className:`FormDate__label ${e}-label`,htmlFor:"month-field"},t),u,!d&&a.message&&l().createElement(l().Fragment,null,l().createElement(si,{errorMessage:a.message})))}}fi.defaultProps={value:{},dateEndianness:"MIDDLE_ENDIAN",minAge:13};const Si=(0,p.$j)((()=>({})),(()=>({})))(fi),bi=["name","label","options","value","showTitle","error","onValidate","onOptionFocus"];class yi extends l().PureComponent{constructor(e){super(e),this.state={isEditing:!1},this.handleBlur=this.handleBlur.bind(this),this.handleFocus=this.handleFocus.bind(this)}handleBlur(e){this.state={isEditing:!1};(e.relatedTarget?e.relatedTarget.name:null)!==this.props.name&&this.validate(e.target)}handleFocus(e){this.state={isEditing:!0},this.props.onOptionFocus&&e&&e.target&&this.props.onOptionFocus(e.target.value)}validate(e){const{name:t,onValidate:n}=this.props;n&&n(t,ri(e))}render(){const e=this.props,{name:t,label:n,options:a,value:i,showTitle:r,error:o={},onValidate:s,onOptionFocus:d}=e,c=Ne()(e,bi),{isEditing:u}=this.state,p=`${t}-field`,m=Tt()("FormRadioSelect",{"FormRadioSelect--is-disabled":this.props.disabled});return l().createElement("div",{className:m},l().createElement("label",{className:r?"":"glue-hidden-visually",htmlFor:p},n),a.map((e=>{const n=`${e.value}-radio`;return l().createElement("span",{className:i===e.value?"checked":"",key:e.value},l().createElement("input",Pt()({},c,{name:t,type:"radio",id:n,className:"glue-hidden-visually",value:e.value,checked:i===e.value,onBlur:this.handleBlur,onFocus:this.handleFocus,required:!0,disabled:this.props.disabled})),l().createElement("label",{className:Tt()("FormRadioSelect__label",{"FormRadioSelect__label--has-error":!!o.message}),htmlFor:n},e.label))})),!u&&o.message&&l().createElement(l().Fragment,null,l().createElement(si,{errorMessage:o.message})))}}const Oi=(0,p.$j)((()=>({})),(()=>({})))(yi);class Ti extends l().PureComponent{constructor(...e){super(...e),this.handleChange=this.handleChange.bind(this)}handleChange(e){this.props.isDisabled||this.props.onChange(e.target.checked)}render(){const e=`${this.props.name}-field`,t=Tt()("GlueCheckbox",{"GlueCheckbox--is-disabled":this.props.isDisabled});return l().createElement("div",{className:t},l().createElement("input",{className:"GlueCheckbox__input",id:e,name:this.props.name,checked:this.props.isChecked,type:"checkbox",onChange:this.handleChange,disabled:this.props.isDisabled}),l().createElement("label",{className:"GlueCheckbox__label",htmlFor:e,dangerouslySetInnerHTML:{__html:this.props.label}}))}}Ti.defaultProps={label:"",name:"",isChecked:!1,isDisabled:!1,onChange(){}};class ki extends l().Component{constructor(e){super(e),this.handleClick=this.handleClick.bind(this)}handleClick(e){if(e.target.getAttribute("data-action")){const t=e.target.getAttribute("data-action");"showSettings"===t?this.props.openSettingsPage():"showSignup"===t&&this.props.openSignupPage()}}render(){const e=this.props.errorData,t=e?ii(e.errorCategory,e.errorCode,e.errorReference):null;return t?l().createElement("div",{className:"alert alert-danger ErrorMessage alert-icon",id:"login-message","data-ta-id":"login-message","data-testid":"login-message",role:"alert","aria-live":"assertive",onClick:this.handleClick},l().createElement(Za.l,{iconSize:24}),l().createElement("span",{dangerouslySetInnerHTML:{__html:t}})):null}}const Ni=(0,p.$j)((e=>{let{mode:t}=e.app;return"welcome"===t&&(t="signup"),{errorData:e[t]&&e[t].errorData?e[t].errorData:null}}),(e=>({openSettingsPage:()=>e(za.enterSettingsMode()),openSignupPage:()=>e(za.openSignupPage())})))(ki);class Ai extends l().PureComponent{static getNextId(){const e=(Ai.instanceCount||0)+1;return Ai.instanceCount=e,e}constructor(e){super(e),this.state={tosAgreed:!1,privacyAgreed:!1},this.handleTosChange=this.handleTosChange.bind(this),this.handlePrivacyChange=this.handlePrivacyChange.bind(this),this.handleTosAndPrivacyChange=this.handleTosAndPrivacyChange.bind(this),this.handleEulaChange=this.handleEulaChange.bind(this),this.eulaId=Ai.getNextId()}handleTosChange(e){this.setState({tosAgreed:e},(()=>{this.handleEulaChange()}))}handlePrivacyChange(e){this.setState({privacyAgreed:e},(()=>{this.handleEulaChange()}))}handleTosAndPrivacyChange(e){this.setState({tosAgreed:e,privacyAgreed:e},(()=>{this.handleEulaChange()}))}handleEulaChange(){this.props.onChange(this.state.tosAgreed&&this.state.privacyAgreed)}render(){let e=null;const t=`${yt.get("desktop.login.TermsAndConditions")}`,n=`${yt.get("desktop.login.PrivacyPolicy")}`,a=yt.get("desktop.login.SignupButton");return e=this.props.restrictions.pretick_eula?l().createElement("div",null,!this.props.hideTermsAndConditions&&l().createElement("p",{className:"SignupForm__terms-and-conditions",dangerouslySetInnerHTML:{__html:yt.get("desktop.login.SignupAgree",a,t)}}),!this.props.hidePrivacyPolicy&&l().createElement("p",{className:"SignupForm__privacy-policy",dangerouslySetInnerHTML:{__html:yt.get("desktop.login.PrivacyPolicyAgree",n)}})):this.props.restrictions.can_accept_licenses_in_one_step?l().createElement("div",{className:"SignupForm__checkbox-container"},l().createElement(Ti,{"data-ta-id":"agree-eula",name:`agree-eula-${this.eulaId}`,label:this.props.restrictions.specific_licenses?yt.get("desktop.login.SignupAgreeCheckboxSpecificLicenses",t,n):yt.get("desktop.login.SignupAgreeCheckbox",t,n),onChange:this.handleTosAndPrivacyChange,isChecked:this.state.tosAgreed&&this.state.privacyAgreed,isDisabled:this.props.disabled}),this.props.restrictions.specific_licenses&&l().createElement("p",{className:"SignupForm__privacy-policy",dangerouslySetInnerHTML:{__html:yt.get("desktop.login.PrivacyPolicyAgree",n)}})):l().createElement("div",null,l().createElement("div",{className:"SignupForm__checkbox-container"},l().createElement(Ti,{"data-ta-id":"agree-tos",name:`agree-tos-${this.eulaId}`,label:yt.get("desktop.login.TermsOfServiceAgreeCheckbox",t),onChange:this.handleTosChange,isChecked:this.state.tosAgreed,isDisabled:this.props.disabled})),l().createElement("div",{className:"SignupForm__checkbox-container"},l().createElement(Ti,{"data-ta-id":"agree-privacy",name:`agree-privacy-${this.eulaId}`,label:yt.get("desktop.login.PrivacyPolicyAgreeCheckbox",n),onChange:this.handlePrivacyChange,isChecked:this.state.privacyAgreed,isDisabled:this.props.disabled}))),l().createElement("div",{className:"EulaAgreement"},e,this.props.error&&l().createElement(l().Fragment,null,l().createElement(si,{errorMessage:this.props.error.message})))}}const Di=(0,p.$j)((()=>({})),(()=>({})))(Ai);class Ii extends l().PureComponent{constructor(...e){super(...e),E()(this,"handleClick",(e=>{const{method:t}=this.props;e&&(e.preventDefault(),e.stopPropagation()),this.props.onClick(t)}))}render(){const{type:e,label:t,isDisabled:n,method:a}=this.props,i=a.substr(0,1).toUpperCase()+a.substr(1),r=Tt()("button","SocialButton",`${i}Button`,{[`${i}Button--login`]:"login"===e,[`${i}Button--signup`]:"signup"===e});return l().createElement("button",{type:"button",className:r,onClick:this.handleClick,"data-ta-id":`${a}-${e}-button`,disabled:n},t)}}function vi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Ci(e){for(var t=1;t{const t=e?"checked":"unchecked";this.props.onInteraction("signup","click",`eula-change-${t}`),this.setState({eulaAgreed:e,error:e?{}:this.state.error})})),E()(this,"handleOnClick",((...e)=>{(()=>this.state.eulaAgreed||this.props.restrictions.pretick_eula||this.props.hideEula)()?this.props.onClick(...e):this.setState({error:{message:yt.get("desktop.login.agreeEula.notAccepted")}})})),this.state={eulaAgreed:this.props.restrictions.pretick_eula,error:{}}}render(){return l().createElement("div",{className:"SignupFacebook"},l().createElement(Ii,{method:"facebook",isDisabled:this.props.isDisabled,onClick:this.handleOnClick,type:"signup",label:yt.get("desktop.login.SignupButtonFacebookNirvana")}),this.props.restrictions.pretick_eula||this.props.hideEula?null:l().createElement(Di,{restrictions:this.props.restrictions,error:this.state.error,disabled:this.props.isDisabled,onChange:this.handleAgreeEulaChange}))}}E()(Pi,"defaultProps",{isDisabled:!1,hideEula:!1});const wi=(0,p.$j)((e=>({isDisabled:!!e.signup.isAttempting,restrictions:e.signup.restrictions})),(e=>({onInteraction:(t,n,a,i,r)=>e(za.interaction(t,n,a,i,r)),onClick:t=>{const n=Qa();e(za.signupWithAccounts(t,n)),e(za.interaction("signup","click",`create-account-${t}`,null,n))}})),((e,t)=>Ci(Ci(Ci({},e),t),{},{onClick:e=>{t.onClick(e)}})))(Pi),Li=({title:e})=>l().createElement("p",{className:"FormTitleSeparator","aria-hidden":"true"},e);Li.defaultProps={title:""};const Fi=Li;class Ri extends l().PureComponent{constructor(e){super(e),E()(this,"handleEmailValidate",((e,t)=>{this.props.onValidate(e,t),t||this.props.validateEmail()})),E()(this,"handleEmailFocus",(()=>{this.props.onInteraction("signup","click","input-email")})),E()(this,"handlePasswordValidate",((e,t)=>{this.props.onValidate(e,t),t||this.props.validatePassword()})),E()(this,"handlePasswordFocus",(()=>{this.props.onInteraction("signup","click","input-password")})),E()(this,"handleNameFocus",(()=>{this.props.onInteraction("signup","click","input-name")})),E()(this,"handleGenderOptionFocus",(e=>{this.props.onInteraction("signup","click",`input-gender-${e}`)})),E()(this,"handleInputChange",(({target:{name:e,value:t}})=>{this.props.updateData({[e]:t}),this.setState({isEditing:!0})})),E()(this,"handleBirthDateChange",(e=>{this.props.updateData({birthDate:e})})),E()(this,"handleSendEmailChange",(e=>{this.props.updateData({sendEmail:e})})),E()(this,"handleShareDataChange",(e=>{this.props.updateData({shareData:e})})),E()(this,"handleAgreeEulaChange",(e=>{this.props.updateData({agreeEula:e})})),E()(this,"handleSubmit",(e=>{e&&e.preventDefault();const{step:t}=this.props,n=Qa();this.props.onInteraction("signup","click",0===t?"continue":"create-account",null,n),this.setState({isEditing:!1});let a=!0;const i={0:["email","password","name"],1:["birthDate","gender","agreeEula"]};!!this.props.errors&&Object.keys(this.props.errors).filter((e=>-1!==i[t].indexOf(e))).some((e=>this.props.errors[e]&&this.props.errors[e].message))&&(a=!1);const r=e=>t=>{this.props.data[t]||(this.props.onValidate(t,{code:e}),a=!1)};switch(t){case 0:["email","password","name"].forEach(r("valueMissing"));break;case 1:{const{day:e,month:t,year:i}=this.props.data.birthDate;i||this.props.onInteraction("signup","view","show-error-empty-year",null,n),t||this.props.onInteraction("signup","view","show-error-empty-month",null,n),e||this.props.onInteraction("signup","view","show-error-empty-date",null,n);const o=gi(e,t,i,this.props.restrictions.minimum_age);o&&(this.props.onValidate("birthDate",{code:o}),a=!1),r("valueMissing")("gender"),r("notAccepted")("agreeEula")}}if(a)switch(t){case 0:this.setStep(t+1);break;case 1:this.props.signup(n)}})),E()(this,"handleBack",(()=>{const{step:e}=this.props;this.props.onInteraction("signup","click",`back-step-${e+1}`),this.props.clearAllErrors(),e<=0?this.props.enterWelcomeMode():this.setStep(e-1)})),E()(this,"handleLogin",(()=>{const e=Qa();this.props.onInteraction("signup","click","open-page-login",null,e),this.props.enterLoginMode(e)})),E()(this,"setStep",(e=>{switch(e){case 0:this.props.enterSignupModeStep0();break;case 1:this.props.enterSignupModeStep1()}})),this.state={isEditing:!0}}renderErrorMsg(){const e=Object.keys(this.props.errors).filter((e=>this.props.errors[e]&&this.props.errors[e].message));return l().createElement("div",{className:"glue-hidden-visually",role:"alert","aria-live":this.state.isEditing?"off":"assertive"},e.length>0?l().createElement("div",null,l().createElement("p",null,yt.get("desktop.login.email.errorMessageA11y",e.length)),l().createElement("ul",null,e.map((e=>l().createElement("li",{key:e},this.props.errors[e].message))))):null)}renderStep0(){const{data:e,errors:t,isDisabled:n,onValidate:a}=this.props;return l().createElement("div",null,l().createElement(ui,{name:"email",type:"email",label:yt.get("desktop.login.SignupEmail"),value:e.email,onChange:this.handleInputChange,isDisabled:n,error:t.email,onValidate:this.handleEmailValidate,onFocus:this.handleEmailFocus,isRequired:!0,autoFocus:!0,rightIcon:ni.B}),l().createElement(ui,{name:"password",type:"password",label:yt.get("desktop.login.CreateAPassword"),value:e.password,onChange:this.handleInputChange,minLength:8,isRequired:!0,isDisabled:n,error:t.password,onValidate:this.handlePasswordValidate,onFocus:this.handlePasswordFocus,onTogglePasswordVisibility:e=>{this.props.onInteraction("signup","click",e?"toggle-password-visibility-show":"toggle-password-visibility-hide")}}),l().createElement(ui,{name:"name",label:yt.get("desktop.login.SignupName"),value:e.name,onChange:this.handleInputChange,isRequired:!0,isDisabled:n,error:t.name,onValidate:a,rightIcon:ai.W,onFocus:this.handleNameFocus}))}renderStep1(){const{data:e,errors:t,restrictions:n,isDisabled:a,onValidate:i}=this.props;let r=null;n.requires_marketing_opt_in_text?r=l().createElement("div",{className:"SignupForm__send-email-implicit"},yt.get("desktop.login.SendEmailImplicitLabel")):n.requires_marketing_opt_in&&(r=l().createElement("div",{className:"SignupForm__checkbox-container"},l().createElement(Ti,{name:"send-email",label:yt.get("desktop.login.SendEmailLabel"),onChange:this.handleSendEmailChange,isChecked:e.sendEmail,isDisabled:a})));const o=[{label:yt.get("desktop.login.Female"),value:"female"},{label:yt.get("desktop.login.Male"),value:"male"}];return n.use_all_genders&&o.push({label:yt.get("desktop.login.NonBinary"),value:"neutral"}),l().createElement("div",null,l().createElement(Si,{name:"birth-date",label:yt.get("desktop.login.WhatsYourSignupBirthDate"),value:e.birthDate,onChange:this.handleBirthDateChange,disabled:a,error:t.birthDate,onValidate:i,dateEndianness:n.date_endianness,minAge:n.minimum_age,autoFocus:!0,onFocus:()=>{this.props.onInteraction("signup","click","input-birth-date")}}),l().createElement(Oi,{showTitle:!0,name:"gender",label:yt.get("desktop.login.WhatsYourSignupGender"),options:o,value:e.gender,onChange:this.handleInputChange,disabled:a,error:t.gender,onValidate:i,onOptionFocus:this.handleGenderOptionFocus}),r,l().createElement(Di,{restrictions:n,error:t.agreeEula,disabled:a,onChange:this.handleAgreeEulaChange}))}render(){const{isDisabled:e,step:t}=this.props;return l().createElement("form",{onSubmit:this.handleSubmit,className:"SignupForm"},this.renderErrorMsg(),l().createElement(Ni,null),0===t?this.renderStep0():"",1===t?this.renderStep1():"",l().createElement("button",{type:"submit",className:"button button-green button-large SignupForm__signup-button",disabled:e,id:"signup-button",onClick:this.handleSubmit,"data-ta-id":"signup-submit"},0===t?yt.get("desktop.login.Continue"):yt.get("desktop.login.SignupButton")),0===t&&l().createElement(l().Fragment,null,l().createElement(Fi,{title:yt.get("desktop.login.SignupOr")}),l().createElement(wi,null)),l().createElement("a",{href:"#",className:"SignupForm__back-button",onClick:this.handleBack},yt.get("desktop.login.Back")),0===t&&l().createElement("h3",{className:"FooterFormText"},l().createElement("a",{className:"FooterFormText__NoUnderline",href:"#",id:"login-link",onClick:this.handleLogin,dangerouslySetInnerHTML:{__html:yt.get("desktop.login.AlreadyOnSpotifyLogin")}})))}}E()(Ri,"defaultProps",{errors:{},data:{},step:0});const Mi=(0,p.$j)((e=>({isDisabled:!!e.signup.isAttempting,restrictions:e.signup.restrictions,email:e.signup.email,errors:e.signup.errors,data:e.signup.formData})),(e=>({signup:t=>e(za.signup(t)),enterLoginMode:()=>e(za.enterLoginMode()),enterSignupModeStep0:()=>e(za.enterSignupModeStep0()),enterSignupModeStep1:()=>e(za.enterSignupModeStep1()),updateData:t=>e(za.updateSignupData(t)),validateEmail:()=>e(za.validateField("email")),validatePassword:()=>e(za.validateField("password")),enterWelcomeMode:()=>e(za.enterWelcomeMode()),clearAllErrors:()=>e(za.clearAllErrors()),onValidate:(t,n)=>{if(n){const a=n.code||n,i={birthDate:{incomplete:yt.get("desktop.login.birthDate.incomplete"),invalid:yt.get("desktop.login.birthDate.invalid")},password:{valueMissing:yt.get("desktop.login.password.valueMissing"),tooShort:yt.get("desktop.login.password.tooShort")},email:{valueMissing:yt.get("desktop.login.email.valueMissing"),typeMismatch:yt.get("desktop.login.email.typeMismatch")},name:{valueMissing:yt.get("desktop.login.name.valueMissing")},gender:{valueMissing:yt.get("desktop.login.gender.valueMissing")},agreeEula:{notAccepted:yt.get("desktop.login.agreeEula.notAccepted")}};e(za.validateFieldFailure(t,{code:a,message:i[t]&&i[t][a]||""}))}else e(za.validateFieldSuccess(t))},onInteraction:(t,n,a,i,r)=>e(za.interaction(t,n,a,i,r))})))(Ri);class Ui extends l().PureComponent{render(){const{step:e,restrictions:t}=this.props;if(!t)return l().createElement(qa,{delay:2e3});const n=0===e?yt.get("desktop.login.SignupHeroText"):yt.get("desktop.login.SignupAlmostDone");return l().createElement("main",{className:"Signup","data-testid":"signup","aria-labelledby":"signup-form-title",id:"signup","data-ta-id":"signup-form"},l().createElement("h1",{className:"HeroText",id:"signup-form-title"},n),l().createElement(Mi,{step:e}))}}const xi=(0,p.$j)((e=>({isDisabled:!!e.signup.isAttempting,restrictions:e.signup.restrictions})))(Ui);class Bi extends l().PureComponent{constructor(...e){super(...e),this.handleChange=this.handleChange.bind(this)}handleChange(){this.props.isDisabled||this.props.onChange(!this.props.isActive)}render(){const{isActive:e,isDisabled:t,labelId:n,taId:a}=this.props;return l().createElement("div",{className:Tt()("GlueToggle",{"GlueToggle--is-active":e,"GlueToggle--is-disabled":t})},l().createElement("input",{type:"checkbox",name:n,id:n,className:"glue-hidden-visually",onChange:this.handleChange,checked:e,disabled:t,"data-ta-id":a}),l().createElement("div",{className:"GlueToggle__toggle",onClick:this.handleChange,"aria-hidden":"true"},l().createElement("div",{className:"GlueToggle__toggle-inner"})))}}Bi.defaultProps={isActive:!1,isDisabled:!1,onChange:()=>{}};class Gi extends l().PureComponent{render(){const{name:e,label:t,checked:n,disabled:a,onChange:i}=this.props,r=`${e}-field`;return l().createElement("div",{className:"FormToggle"},l().createElement("label",{htmlFor:r,"data-ta-id":"remember-me-label"},t),l().createElement(Bi,{labelId:r,isActive:n,onChange:i,taId:"remember-me-slider",isDisabled:a}))}}class Wi extends l().PureComponent{constructor(e){super(e),E()(this,"handleForgotPasswordLinkClick",(()=>{this.props.onInteraction("login","click","reset-password")})),this.state={username:this.props.username,password:"",rememberMe:!0},["handleSubmit","handleUsernameChange","handleUsernameFocus","handlePasswordChange","handlePasswordFocus","handleRememberMeChange"].forEach((e=>{this[e]=this[e].bind(this)}))}handleUsernameChange({target:e}){this.setState({username:e.value})}handleUsernameFocus(){this.props.onInteraction("login","click","input-email")}handlePasswordChange({target:e}){this.setState({password:e.value})}handlePasswordFocus(){this.props.onInteraction("login","click","input-password")}handleRememberMeChange(){this.setState({rememberMe:!this.state.rememberMe})}handleSubmit(e){e&&e.preventDefault();const t=this.state.username.trim(),{password:n,rememberMe:a}=this.state,i=Qa();this.props.onInteraction("login","click","login-email",null,i),t&&n?this.props.login({username:t,password:n,rememberMe:a},!1,i):t?n||this.props.onInteraction("login","view","show-error-empty-password",null,i):this.props.onInteraction("login","view","show-error-empty-email",null,i)}render(){const{isDisabled:e}=this.props;return l().createElement("form",{onSubmit:this.handleSubmit},l().createElement("h3",{className:"glue-hidden-visually"},yt.get("desktop.login.LoginWithEmailTitle")),l().createElement(Ni,null),l().createElement(ui,{name:"username",label:yt.get("desktop.login.LoginUsernameOrEmail"),value:this.state.username||"",onChange:this.handleUsernameChange,onFocus:this.handleUsernameFocus,isDisabled:e,autoFocus:!0,noValidate:!0,rightIcon:ni.B}),l().createElement(ui,{name:"password",type:"password",label:yt.get("desktop.login.LoginPassword"),value:this.state.password,onChange:this.handlePasswordChange,onFocus:this.handlePasswordFocus,isDisabled:e,noValidate:!0}),l().createElement("a",{className:"LoginForm__reset-password",href:"https://www.spotify.com/redirect/password-reset",target:"_new",onClick:this.handleForgotPasswordLinkClick},yt.get("desktop.login.forgotPassLink")),l().createElement(Gi,{name:"remember-me",label:yt.get("desktop.login.RememberMeLabel"),checked:this.state.rememberMe,onChange:this.handleRememberMeChange,disabled:e}),l().createElement("button",{type:"submit",className:"button button-white LoginForm__login-button",disabled:e,id:"login-button","data-ta-id":"login-button"},yt.get("desktop.login.LoginButton")))}}const ji=(0,p.$j)((e=>({isDisabled:!!e.login.loginInProgress,username:e.login.username})),(e=>({login:(t,n,a)=>e(za.login(t,n,a)),onInteraction:(t,n,a,i,r)=>e(za.interaction(t,n,a,i,r))})))(Wi);function Hi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Vi(e){for(var t=1;tthis.handleSignup(),"data-ta-id":"signup-link",dangerouslySetInnerHTML:{__html:yt.get("desktop.login.DontHaveAnAccountSignup")}})}render(){const{isDisabled:e}=this.props;return l().createElement("main",{className:"Login","data-testid":"login","aria-labelledby":"login-form-title",id:"login","data-ta-id":"login-form"},l().createElement("h1",{className:"HeroText",id:"login-form-title"},yt.get("desktop.login.LoginHeroText")),l().createElement(ji,null),l().createElement(Fi,{title:yt.get("desktop.login.SignupOr")}),l().createElement(Ii,{method:"facebook",isDisabled:e,onClick:this.props.onSocialButtonClick,type:"login",label:yt.get("desktop.login.ContinueWithFacebook")}),l().createElement(Ii,{method:"google",isDisabled:e,onClick:this.props.onSocialButtonClick,type:"login",label:yt.get("desktop.login.ContinueWithGoogle")}),l().createElement(Ii,{method:"apple",isDisabled:e,onClick:this.props.onSocialButtonClick,type:"login",label:yt.get("desktop.login.ContinueWithApple")}),l().createElement("h3",{className:"FooterFormText"},this.getSignupLink()))}}const Ji=(0,p.$j)((e=>({isDisabled:!!e.login.loginInProgress})),(e=>({enterSignupMode:t=>e(za.enterSignupMode(t)),onInteraction:(t,n,a,i,r)=>e(za.interaction(t,n,a,i,r)),onSocialButtonClick:t=>{const n=Qa();e(za.loginWithAccounts(t,n)),e(za.interaction("login","click",`login-${t}`,null,n))},clearErrors:()=>e(za.loginClearErrors())})),((e,t)=>Vi(Vi(Vi({},e),t),{},{onSocialButtonClick:e=>{t.onSocialButtonClick(e)}})))(Yi);class Ki extends l().PureComponent{render(){const{operationUsed:e}=this.props,t="signup"===e?yt.get("desktop-auth.login.redirecting-to-browser-signup"):yt.get("desktop-auth.login.redirecting-to-browser-login");return l().createElement("main",null,l().createElement("h1",{className:"HeroText __redirect"},t))}}const $i=(0,p.$j)((e=>({operationUsed:e.experimentWebAuthReducer.operationUsed})))(Ki);function Xi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}const zi=["network.proxy.mode","network.proxy.addr","network.proxy.user","network.proxy.pass"];const qi=(0,p.$j)((e=>({settings:{proxy:e.settings.proxy}})),(e=>({fetchProxySettings(){e(za.fetchProxySettings())},updateProxySettings(t){e(za.updateProxySettings(t))},restartClient(){e(za.restartClient())}})))((({settings:e={proxy:{mode:0,address:"",username:"",password:""}},fetchProxySettings:t=(()=>{}),updateProxySettings:n=(()=>{}),restartClient:a=(()=>{})})=>{(0,s.useEffect)((()=>{t()}),[t]);const i=(0,s.useCallback)(((t,a)=>{if(function(e){return!!zi.includes(e)}(t)){const i=function(e){for(var t=1;tthis.props.tryAgainHandler()},yt.get("desktop-auth.login.try-again")))}renderSignupLink(){return l().createElement("a",{className:"Footer__NoUnderline",href:"#",id:"signup-link",onClick:()=>this.handleSignupClick(),"data-ta-id":"welcome-signup-link",dangerouslySetInnerHTML:{__html:yt.get("desktop.login.DontHaveAnAccountSignup")}})}renderRussiaLegalFormLink(){return l().createElement("div",null,l().createElement("a",{className:"Footer__link",href:"https://support.spotify.com/ru-ru/contact-spotify-legal-form/",target:"_blank",rel:"noopener"},"Форма для Ваших обращений"))}render(){const{mode:e,country:t}=this.props;return l().createElement("footer",{className:"Footer",role:"contentinfo"},"login"===e&&this.renderPreferencesLink(),"settings"===e&&this.renderBackToLoginLink(),"open-browser"===e&&this.renderTryAgain(),"welcome"===e&&this.renderSignupLink(),"RU"===t&&this.renderRussiaLegalFormLink())}}const Zi=(0,p.$j)((e=>{var t;return{country:null===(t=e.signup.restrictions)||void 0===t?void 0:t.country}}),(e=>({tryAgainHandler:()=>{e(za.abortLoginWithAccounts()),e(za.enterWelcomeMode())},openLoginPage:()=>{e(za.enterLoginMode())},openSignupPage:t=>e(za.enterSignupMode(t)),openSettingsPage:()=>e(za.enterSettingsMode()),onInteraction:(t,n,a,i,r)=>e(za.interaction(t,n,a,i,r))})))(Qi);class er extends l().PureComponent{render(){return l().createElement("header",{className:"Header"},l().createElement("h1",{className:"glue-hidden-visually"},"Spotify"),l().createElement("img",{className:"Header__logo",src:"images/logo.svg",alt:""}))}}var tr=n(1226),nr=n(5989);class ar extends l().Component{renderFakeWebPlayer(){return l().createElement("div",{className:"fakeWebPlayer"},l().createElement("aside",null),l().createElement("footer",null,l().createElement("div",{className:"fakeWebPlayer__footer-left"}),l().createElement("div",{className:"fakeWebPlayer__footer-center"}),l().createElement("div",{className:"fakeWebPlayer__footer-right"})),l().createElement("main",null,l().createElement("div",{className:"fakeWebPlayer__content"})))}render(){const{loading:e,mode:t,loggedIn:n,previousMode:a,throbberDelay:i,signupStep:r,previousSignupStep:o}=this.props;if(e||!t)return l().createElement(qa,{delay:i});if(n)return null;let s=a?`__${t} __${a}-to-${t}`:"";return"signup"===t&&Number.isInteger(o)&&(s+=` __signup_step_${o}_to_${r}`),l().createElement("main",{className:"App",key:"main1","data-ta-id":"login-app","data-testid":"login-app","data-ta-login-mode":t},this.renderFakeWebPlayer(),l().createElement("div",{className:`App__content ${s}`},l().createElement(nr.Z,{mode:"in-out"},l().createElement(tr.Z,{timeout:{appear:0,enter:0,exit:650},key:s},l().createElement("div",{className:`App__modal ${s}`},l().createElement(er,null),"welcome"===t&&l().createElement(ti,null),"signup"===t&&l().createElement(xi,{step:r}),"login"===t&&l().createElement(Ji,null),"open-browser"===t&&l().createElement($i,null),"settings"===t&&l().createElement(qi,null),l().createElement(Zi,{mode:t}))))))}}E()(ar,"defaultProps",{throbberDelay:0,transitionLeaveTimeout:0});const ir=(0,p.$j)((e=>({mode:e.app.mode,previousMode:e.app.previousMode,signupStep:e.signup.step,previousSignupStep:e.signup.previousStep,loading:!!e.login.loading,loggedIn:!!e.login.loggedIn,throbberDelay:e.login.throbberDelay,transitionLeaveTimeout:e.login.redirectDelay})))(ar);var rr=n(3828),or=n(3894);const sr=rn().create().toString(),lr="has-used-app",dr=!window.localStorage.getItem(lr);dr&&window.localStorage.setItem(lr,!0);const cr=()=>{const e=H.getItem("utmParameters");let t;try{t=e?JSON.parse(e).referral:""}catch(e){t=""}return t};let ur=null;var pr=n(9798);function mr({page:e}){gr({page:e,action_type:"pageview",action_intent:""})}function gr({page:e,action_type:t,action_intent:n,item_id:a,action_hash:i}){(function(){if(null===ur)throw new Error("Missing `instance`. Have you called `setEventSenderInstance` yet?");return ur})().send((0,pr.e)({action_type:t,action_intent:n,action_page:e,action_item_id:a,action_hash:i,device_is_new_install:dr,device_locale:window.__spotify.locale,device_referrer:cr(),ab_flags:"",session_id:sr}))}function hr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}const Er=e=>{window.location.href=e};function _r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function fr(e){for(var t=1;tt=>n=>{const a=t(n);switch(n.type){case za.START_APP:e.dispatch(za.fetchUTMParameters()),e.dispatch(za.getSignupRestrictions());!H.getItem("lastUsername")?e.dispatch(za.enterWelcomeMode()):e.dispatch(za.enterLoginMode());break;case za.LOGIN_FAIL:{const t=e.getState();if(n.loginType===za.LOGIN_TYPE_AUTOLOGIN){const n=t.app.mode;"welcome"===n?e.dispatch(za.enterWelcomeMode()):"login"===n?e.dispatch(za.enterLoginMode()):"signup"===n&&e.dispatch(za.enterSignupMode())}else{if("open-browser"===t.app.mode){const a=n.errorData;let i=ii(a.errorCategory,a.errorCode,a.errorReference);"desktop_login_accounts"===a.errorCategory&&4===a.errorCode&&(i="signup"===t.experimentWebAuthReducer.operationUsed?yt.get("desktop-auth.login.signup-time-out"):yt.get("desktop-auth.login.login-time-out")),i?e.dispatch(za.enterWelcomeMode(i)):e.dispatch(za.enterWelcomeMode())}}break}case za.ENTER_SIGNUP_MODE:{const t=e.getState().signup.restrictions;t?!1===t.is_country_launched&&e.dispatch(za.countryNotLaunched()):e.dispatch(za.getSignupRestrictions());break}case za.SIGNUP_RESTRICTIONS_SUCCESS:!1===n.restrictions.is_country_launched&&e.dispatch(za.countryNotLaunched());break;case za.SIGNUP_FAILURE:(n.errors.email||n.errors.password||n.errors.displayname)&&e.dispatch(za.enterSignupModeStep0());break;case za.COUNTRY_NOT_LAUNCHED:e.dispatch(za.openSignupPage(!0))}return a}),(()=>e=>t=>{const n=e(t);switch(t.type){case za.ENTER_LOGIN_MODE:mr({page:"login"});break;case za.LOGIN_SUCCESS:t.loginType===za.LOGIN_TYPE_EMAIL?gr({page:"login",action_type:"view",action_intent:"show-success-login-email"}):t.loginType===za.LOGIN_TYPE_FACEBOOK&&gr({page:"login",action_type:"view",action_intent:"show-success-login-facebook"});break;case za.LOGIN_FAIL:t.loginType===za.LOGIN_TYPE_EMAIL?t.errorData&&3===t.errorData.errorCode&&gr({page:"login",action_type:"view",action_intent:"show-error-invalid-credential"}):t.loginType===za.LOGIN_TYPE_FACEBOOK&&gr({page:"login",action_type:"view",action_intent:"show-error-login-facebook"});break;case za.ENTER_SIGNUP_MODE:mr({page:"signup"});break;case za.ENTER_SIGNUP_MODE_STEP_0:gr({page:"signup",action_type:"view",action_intent:"show-signup-step-one"});break;case za.ENTER_SIGNUP_MODE_STEP_1:gr({page:"signup",action_type:"view",action_intent:"show-signup-step-two"});break;case za.SIGNUP_SUCCESS:gr({page:"signup",action_type:"view",action_intent:"show-success-signup-email"});break;case za.SIGNUP_FAILURE:gr({page:"signup",action_type:"view",action_intent:"show-error-signup-email",item_id:t.errors&&Object.keys(t.errors).join("|")});break;case za.FACEBOOK_SIGNUP_SUCCESS:gr({page:"signup",action_type:"view",action_intent:"show-success-authentication-facebook"});break;case za.FACEBOOK_SIGNUP_FAILURE:gr({page:"signup",action_type:"view",action_intent:"show-error-authentication-facebook",item_id:t.errorData&&`${t.errorData.errorCode} - ${t.errorData.errorDescription}`});break;case za.ENTER_WELCOME_MODE:mr({page:"login/welcome"});break;case za.ENTER_SETTINGS_MODE:mr({page:"login/settings"});break;case za.INTERACTION:gr({page:t.page,action_type:t.interactionType,action_intent:t.intent,item_id:t.itemId,action_hash:t.actionHash});break;case za.VALIDATE_FIELD_FAILURE:if(t.error){const e=t.field,n=t.error.code;let a=null,i=null;"valueMissing"===n?a=`show-error-empty-${e}`:["incomplete","invalid","typeMismatch","tooShort"].includes(n)?a=`show-error-format-${e}`:(a=`show-error-${e}`,i=t.error.message||""),null!==a&&gr(function(e){for(var t=1;te=>t=>{const n=e(t);if(!t.redirectTo)return n;let a;return"xpui"!==t.redirectTo||(a="spotify:app:xpui",t.redirectDelay?setTimeout((()=>{Er(a)}),t.redirectDelay):Er(a)),n})));vr.subscribe((()=>{const e=vr.getState();e.login.username&&localStorage.setItem(J,e.login.username),e.login.utmParameters&&localStorage.setItem($,JSON.stringify(e.login.utmParameters))}));const Cr=vr;var Pr=n(2585),wr=n(3969);let Lr=null;var Fr=n(8510),Rr=n(6471);(async function(){for(const e of[window.__spotify.locale,gt.en])try{const t=await fetch(`i18n/${e}.json`).then((e=>e.json()));return yt.setLocale(e),void yt.setDictionary(t)}catch(e){0}throw new Error("Cannot find a suitable locale! Something is wrong: talk to #desktop.")})().then((async function(){const e=function(){const e=(0,wr.createBaseTransport)({providers:{endpoints:(0,wr.createXResolveProvider)(),token:()=>null}});return e.connect(),e}();Lr=e;const t=((e,t,n)=>{const a=e.event_sender_context_information,i=[(0,Rr.UR)({version:a.client_version_string}),(0,Rr.jx)(n),(0,Rr.IE)(a.installation_id),(0,Rr.Hv)({name:a.platform_type,version:a.os_version}),(0,Rr.yD)({manufacturer:a.device_manufacturer||"",model:a.device_model||""})];return(0,Fr.mi)({transport:t,suppressPersist:!1,context:i})})(window.__spotify,e,"65b708073fc0480ea92a077233ca87bd");!function(e){ur=e}(t),g.attach(),g.update(),m.attach();const n=document.location.search,a=new RegExp(`\\?param=error-code\\${encodeURIComponent("=")}([0-9]+)`,"i");window.addEventListener("message",(e=>{"critical-update-error"===e.data&&Cr.dispatch(za.loginFailed({errorCode:e.data}))}));const i=n.match(a);if(n&&i){const e=+i[1];Cr.dispatch(za.loginFailed({errorCode:e}))}let r="linux";window.navigator.platform.startsWith("Mac")&&(r="mac"),window.navigator.platform.startsWith("Win")&&(r="windows"),document.body.classList.add(`body-container--${r}`),c().render(l().createElement(u.zj,null,l().createElement(p.zt,{store:Cr},l().createElement(ir,null))),document.getElementById("main")),Cr.dispatch(za.startApp()),document.documentElement.setAttribute("dir",window.__spotify.localization_is_rtl?"rtl":"ltr");const o={[Pr.PLATFORM_UNKNOWN]:"body-container--unknown-os",[Pr.PLATFORM_MAC]:"body-container--mac",[Pr.PLATFORM_WINDOWS]:"body-container--windows"},s=(0,Pr.getPlatform)();document.body.classList.add(o[s])}))},2585:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PLATFORM_MAC:()=>i,PLATFORM_UNKNOWN:()=>a,PLATFORM_WINDOWS:()=>r,getPlatform:()=>l,isMac:()=>o,isWindows:()=>s});const a=Symbol("PLATFORM_UNKNOWN"),i=Symbol("PLATFORM_MAC"),r=Symbol("PLATFORM_WINDOWS");function o(){return window.navigator.platform.startsWith("Mac")}function s(){return window.navigator.platform.startsWith("Win")}function l(){return o()?i:s()?r:a}},2976:(e,t)=>{let n=!1;t.update=()=>{},t.attach=()=>{if(n)return;n=!0;const e=window.__spotify&&window.__spotify.locale;e&&document.documentElement.setAttribute("lang",e)},t.detach=()=>{n&&(n=!1,document.documentElement.removeAttribute("lang"))}},685:(e,t,n)=>{const{getPlatform:a,PLATFORM_UNKNOWN:i,PLATFORM_MAC:r,PLATFORM_WINDOWS:o}=n(2585);let s=!1,l="always-visible",d=0;const c={[i]:"linux",[r]:"mac",[o]:"windows"};let u=c[i];function p(){const e=[...document.querySelectorAll("*")],t=[],n=["scroll","auto","overlay"];e.forEach((e=>{const a=window.getComputedStyle(e),i=a.overflowX,r=a.overflowY;n.includes(i)&&t.push({node:e,property:"overflow-x"}),n.includes(r)&&t.push({node:e,property:"overflow-y"})}));const a=document.createElement("style");a.innerHTML="\n html::-webkit-scrollbar,\n body::-webkit-scrollbar {\n background-color: rgba(1, 2, 3, 0) !important;\n }\n ".trimRight();const i=`data-scrollbar-fix-${++d}-id`;let r=0;t.forEach((({node:e,property:t})=>{if(e!==document.body){const n=++r;e.setAttribute(i,n),a.innerHTML+=`\n [${i}="${n}"] { ${t}: hidden !important; }`}})),document.head.appendChild(a),setTimeout((()=>{document.head.removeChild(a),t.forEach((({node:e})=>{e.removeAttribute(i)}))}),0)}t.performScrollBarFix=p,t.update=function(){},t.attach=function(){if(s)return;s=!0;const e=window.__spotify&&window.__spotify.scroller_style;l="overlay"===e?"overlay":"always-visible";const t=a();u=c[t],"always-visible"===l||"mac"!==u?(document.body.classList.remove("scrollbar-style-when-scrolling-mac"),document.body.classList.add(`scrollbar-style-visible-${u}`)):(document.body.classList.remove(`scrollbar-style-visible-${u}`),document.body.classList.add("scrollbar-style-when-scrolling-mac")),window.addEventListener("message",(e=>{"set_active"===e.data.name&&e.data.active&&p()}))},t.detach=function(){s&&(s=!1,d=0)}}},n={};function a(e){var i=n[e];if(void 0!==i)return i.exports;var r=n[e]={exports:{}};return t[e].call(r.exports,r,r.exports,a),r.exports}a.m=t,a.amdO={},e=[],a.O=(t,n,i,r)=>{if(!n){var o=1/0;for(c=0;c=r)&&Object.keys(a.O).every((e=>a.O[e](n[l])))?n.splice(l--,1):(s=!1,r0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[n,i,r]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={535:0};a.O.j=t=>0===e[t];var t=(t,n)=>{var i,r,[o,s,l]=n,d=0;if(o.some((t=>0!==e[t]))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(l)var c=l(a)}for(t&&t(n);da(6187)));i=a.O(i)})(); +//# sourceMappingURL=login.js.map \ No newline at end of file diff --git a/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_manifest.json b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_manifest.json new file mode 100644 index 0000000..085eed1 --- /dev/null +++ b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_manifest.json @@ -0,0 +1,64 @@ +{ + "BundleType": "Application", + "VendorIdentifier": "com.spotify", + "BundleIdentifier": "login", + "BundleVersion": "1.1.84", + "UserInstallable": false, + "AppName": { + "ar": "login", + "cs": "login", + "de": "login", + "el": "login", + "en": "login", + "es": "login", + "es-419": "login", + "fi": "login", + "fr": "login", + "fr-CA": "login", + "he": "login", + "hu": "login", + "id": "login", + "it": "login", + "ja": "login", + "ko": "login", + "nl": "login", + "pl": "login", + "pt-BR": "login", + "ru": "login", + "sv": "login", + "th": "login", + "tr": "login", + "vi": "login", + "zh-Hant": "login", + "ms": "login" + }, + "SupportedLanguages": [ + "ar", + "cs", + "de", + "el", + "en", + "es", + "es-419", + "fi", + "fr", + "fr-CA", + "he", + "hu", + "id", + "it", + "ja", + "ko", + "nl", + "pl", + "pt-BR", + "ru", + "sv", + "th", + "tr", + "vi", + "zh-Hant", + "ms" + ], + "GitRevision": "c5f8b819b2b" +} \ No newline at end of file diff --git a/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_vendor~login.css b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_vendor~login.css new file mode 100644 index 0000000..3f7199a --- /dev/null +++ b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_vendor~login.css @@ -0,0 +1 @@ +.encore-dark-theme,.encore-dark-theme .encore-base-set{--background-base:#121212;--background-highlight:#1a1a1a;--background-press:#000;--background-elevated-base:#242424;--background-elevated-highlight:#2a2a2a;--background-elevated-press:#000;--background-tinted-base:hsla(0,0%,100%,0.07);--background-tinted-highlight:hsla(0,0%,100%,0.1);--background-tinted-press:hsla(0,0%,100%,0.04);--background-unsafe-for-small-text-base:#121212;--background-unsafe-for-small-text-highlight:#121212;--background-unsafe-for-small-text-press:#121212;--text-base:#fff;--text-subdued:#a7a7a7;--text-bright-accent:#1ed760;--text-negative:#f15e6c;--text-warning:#ffa42b;--text-positive:#1ed760;--text-announcement:#3d91f4;--essential-base:#fff;--essential-subdued:#727272;--essential-bright-accent:#1ed760;--essential-negative:#e91429;--essential-warning:#ffa42b;--essential-positive:#1ed760;--essential-announcement:#0d72ea;--decorative-base:#fff;--decorative-subdued:#292929}.encore-dark-theme .encore-bright-accent-set{--background-base:#1ed760;--background-highlight:#1fdf64;--background-press:#169c46;--background-elevated-base:#1ed760;--background-elevated-highlight:#1ed760;--background-elevated-press:#1ed760;--background-tinted-base:#1ed760;--background-tinted-highlight:#1ed760;--background-tinted-press:#1ed760;--background-unsafe-for-small-text-base:#1ed760;--background-unsafe-for-small-text-highlight:#1ed760;--background-unsafe-for-small-text-press:#1ed760;--text-base:#000;--text-subdued:#000;--text-bright-accent:#000;--text-negative:#000;--text-warning:#000;--text-positive:#000;--text-announcement:#000;--essential-base:#000;--essential-subdued:#000;--essential-bright-accent:#000;--essential-negative:#000;--essential-warning:#000;--essential-positive:#000;--essential-announcement:#000;--decorative-base:#000;--decorative-subdued:#1abc54}.encore-dark-theme .encore-negative-set{--background-base:#e91429;--background-highlight:#de1327;--background-press:#920d1a;--background-elevated-base:#e91429;--background-elevated-highlight:#e91429;--background-elevated-press:#e91429;--background-tinted-base:#e91429;--background-tinted-highlight:#e91429;--background-tinted-press:#e91429;--background-unsafe-for-small-text-base:#e91429;--background-unsafe-for-small-text-highlight:#e91429;--background-unsafe-for-small-text-press:#e91429;--text-base:#fff;--text-subdued:#fff;--text-bright-accent:#fff;--text-negative:#fff;--text-warning:#fff;--text-positive:#fff;--text-announcement:#fff;--essential-base:#fff;--essential-subdued:#fff;--essential-bright-accent:#fff;--essential-negative:#fff;--essential-warning:#fff;--essential-positive:#fff;--essential-announcement:#fff;--decorative-base:#fff;--decorative-subdued:#ee3a4c}.encore-dark-theme .encore-warning-set{--background-base:#ffa42b;--background-highlight:#ffaf45;--background-press:#c57100;--background-elevated-base:#ffa42b;--background-elevated-highlight:#ffa42b;--background-elevated-press:#ffa42b;--background-tinted-base:#ffa42b;--background-tinted-highlight:#ffa42b;--background-tinted-press:#ffa42b;--background-unsafe-for-small-text-base:#ffa42b;--background-unsafe-for-small-text-highlight:#ffa42b;--background-unsafe-for-small-text-press:#ffa42b;--text-base:#000;--text-subdued:#000;--text-bright-accent:#000;--text-negative:#000;--text-warning:#000;--text-positive:#000;--text-announcement:#000;--essential-base:#000;--essential-subdued:#000;--essential-bright-accent:#000;--essential-negative:#000;--essential-warning:#000;--essential-positive:#000;--essential-announcement:#000;--decorative-base:#000;--decorative-subdued:#f18900}.encore-dark-theme .encore-positive-set{--background-base:#1ed760;--background-highlight:#1fdf64;--background-press:#169c46;--background-elevated-base:#1ed760;--background-elevated-highlight:#1ed760;--background-elevated-press:#1ed760;--background-tinted-base:#1ed760;--background-tinted-highlight:#1ed760;--background-tinted-press:#1ed760;--background-unsafe-for-small-text-base:#1ed760;--background-unsafe-for-small-text-highlight:#1ed760;--background-unsafe-for-small-text-press:#1ed760;--text-base:#000;--text-subdued:#000;--text-bright-accent:#000;--text-negative:#000;--text-warning:#000;--text-positive:#000;--text-announcement:#000;--essential-base:#000;--essential-subdued:#000;--essential-bright-accent:#000;--essential-negative:#000;--essential-warning:#000;--essential-positive:#000;--essential-announcement:#000;--decorative-base:#000;--decorative-subdued:#1abc54}.encore-dark-theme .encore-announcement-set{--background-base:#0d72ea;--background-highlight:#0c6ddf;--background-press:#084791;--background-elevated-base:#0d72ea;--background-elevated-highlight:#0d72ea;--background-elevated-press:#0d72ea;--background-tinted-base:#0d72ea;--background-tinted-highlight:#0d72ea;--background-tinted-press:#0d72ea;--background-unsafe-for-small-text-base:#0d72ea;--background-unsafe-for-small-text-highlight:#0d72ea;--background-unsafe-for-small-text-press:#0d72ea;--text-base:#fff;--text-subdued:#fff;--text-bright-accent:#fff;--text-negative:#fff;--text-warning:#fff;--text-positive:#fff;--text-announcement:#fff;--essential-base:#fff;--essential-subdued:#fff;--essential-bright-accent:#fff;--essential-negative:#fff;--essential-warning:#fff;--essential-positive:#fff;--essential-announcement:#fff;--decorative-base:#fff;--decorative-subdued:#2a86f3}.encore-dark-theme .encore-inverted-dark-set{--background-base:#000;--background-highlight:#0d0d0d;--background-press:#3f3f3f;--background-elevated-base:#000;--background-elevated-highlight:#000;--background-elevated-press:#000;--background-tinted-base:#000;--background-tinted-highlight:#000;--background-tinted-press:#000;--background-unsafe-for-small-text-base:#000;--background-unsafe-for-small-text-highlight:#000;--background-unsafe-for-small-text-press:#000;--text-base:#fff;--text-subdued:#8f8f8f;--text-bright-accent:#1ed760;--text-negative:#fff;--text-warning:#fff;--text-positive:#fff;--text-announcement:#fff;--essential-base:#fff;--essential-subdued:#5e5e5e;--essential-bright-accent:#1ed760;--essential-negative:#fff;--essential-warning:#fff;--essential-positive:#fff;--essential-announcement:#fff;--decorative-base:#fff;--decorative-subdued:#1f1f1f}.encore-dark-theme .encore-inverted-light-set{--background-base:#fff;--background-highlight:#f6f6f6;--background-press:#b7b7b7;--background-elevated-base:#fff;--background-elevated-highlight:#fff;--background-elevated-press:#fff;--background-tinted-base:#fff;--background-tinted-highlight:#fff;--background-tinted-press:#fff;--background-unsafe-for-small-text-base:#fff;--background-unsafe-for-small-text-highlight:#fff;--background-unsafe-for-small-text-press:#fff;--text-base:#000;--text-subdued:#5e5e5e;--text-bright-accent:#12833a;--text-negative:#000;--text-warning:#000;--text-positive:#000;--text-announcement:#000;--essential-base:#000;--essential-subdued:#8f8f8f;--essential-bright-accent:#17a449;--essential-negative:#000;--essential-warning:#000;--essential-positive:#000;--essential-announcement:#000;--decorative-base:#000;--decorative-subdued:#dedede}.encore-dark-theme .encore-muted-accent-set{--background-base:#000;--background-highlight:#0d0d0d;--background-press:#3f3f3f;--background-tinted-base:hsla(0,0%,100%,0.1);--background-tinted-highlight:hsla(0,0%,100%,0.13);--background-tinted-press:hsla(0,0%,100%,0.06);--background-elevated-base:#000;--background-elevated-highlight:#000;--background-elevated-press:#000;--background-unsafe-for-small-text-base:#000;--background-unsafe-for-small-text-highlight:#000;--background-unsafe-for-small-text-press:#000;--text-base:#fff;--text-subdued:#9e9e9e;--text-bright-accent:#1ed760;--text-negative:#fff;--text-warning:#fff;--text-positive:#fff;--text-announcement:#fff;--essential-base:#fff;--essential-subdued:#6a6a6a;--essential-bright-accent:#1ed760;--essential-negative:#fff;--essential-warning:#fff;--essential-positive:#fff;--essential-announcement:#fff;--decorative-base:#fff;--decorative-subdued:#1f1f1f}.encore-dark-theme .encore-over-media-set{--background-base:rgba(0,0,0,0.53);--background-highlight:rgba(0,0,0,0.56);--background-press:rgba(0,0,0,0.71);--background-unsafe-for-small-text-base:rgba(0,0,0,0.42);--background-unsafe-for-small-text-highlight:rgba(0,0,0,0.44);--background-unsafe-for-small-text-press:rgba(0,0,0,0.61);--background-elevated-base:rgba(0,0,0,0.53);--background-elevated-highlight:rgba(0,0,0,0.53);--background-elevated-press:rgba(0,0,0,0.53);--background-tinted-base:rgba(0,0,0,0.53);--background-tinted-highlight:rgba(0,0,0,0.53);--background-tinted-press:rgba(0,0,0,0.53);--text-base:#fff;--text-subdued:#fff;--text-bright-accent:#fff;--text-negative:#fff;--text-warning:#fff;--text-positive:#fff;--text-announcement:#fff;--essential-base:#fff;--essential-subdued:#fff;--essential-bright-accent:#fff;--essential-negative:#fff;--essential-warning:#fff;--essential-positive:#fff;--essential-announcement:#fff;--decorative-base:#fff;--decorative-subdued:hsla(0,0%,100%,0.13)} \ No newline at end of file diff --git a/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_vendor~login.js b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_vendor~login.js new file mode 100644 index 0000000..45adeb4 --- /dev/null +++ b/dot_config/spicetify/private_Extracted/private_Raw/private_login/private_executable_vendor~login.js @@ -0,0 +1,2 @@ +(("undefined"!=typeof self?self:global).webpackChunkclient_web=("undefined"!=typeof self?self:global).webpackChunkclient_web||[]).push([[569],{9713:e=>{e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},7154:e=>{function t(){return e.exports=t=Object.assign||function(e){for(var t=1;t{var r=n(7316);e.exports=function(e,t){if(null==e)return{};var n,i,o=r(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}},7316:e=>{e.exports=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}},4537:e=>{"use strict";e.exports=function(e,t){var n=new Array(arguments.length-1),r=0,i=2,o=!0;for(;i{"use strict";var n=t;n.length=function(e){var t=e.length;if(!t)return 0;for(var n=0;--t%4>1&&"="===e.charAt(t);)++n;return Math.ceil(3*e.length)/4-n};for(var r=new Array(64),i=new Array(123),o=0;o<64;)i[r[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;n.encode=function(e,t,n){for(var i,o=null,a=[],s=0,u=0;t>2],i=(3&l)<<4,u=1;break;case 1:a[s++]=r[i|l>>4],i=(15&l)<<2,u=2;break;case 2:a[s++]=r[i|l>>6],a[s++]=r[63&l],u=0}s>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,a)),s=0)}return u&&(a[s++]=r[i],a[s++]=61,1===u&&(a[s++]=61)),o?(s&&o.push(String.fromCharCode.apply(String,a.slice(0,s))),o.join("")):String.fromCharCode.apply(String,a.slice(0,s))};var a="invalid encoding";n.decode=function(e,t,n){for(var r,o=n,s=0,u=0;u1)break;if(void 0===(l=i[l]))throw Error(a);switch(s){case 0:r=l,s=1;break;case 1:t[n++]=r<<2|(48&l)>>4,r=l,s=2;break;case 2:t[n++]=(15&r)<<4|(60&l)>>2,r=l,s=3;break;case 3:t[n++]=(3&r)<<6|l,s=0}}if(1===s)throw Error(a);return n-o},n.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}},9211:e=>{"use strict";function t(){this._listeners={}}e.exports=t,t.prototype.on=function(e,t,n){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:n||this}),this},t.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var n=this._listeners[e],r=0;r{"use strict";function t(e){return"undefined"!=typeof Float32Array?function(){var t=new Float32Array([-0]),n=new Uint8Array(t.buffer),r=128===n[3];function i(e,r,i){t[0]=e,r[i]=n[0],r[i+1]=n[1],r[i+2]=n[2],r[i+3]=n[3]}function o(e,r,i){t[0]=e,r[i]=n[3],r[i+1]=n[2],r[i+2]=n[1],r[i+3]=n[0]}function a(e,r){return n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],t[0]}function s(e,r){return n[3]=e[r],n[2]=e[r+1],n[1]=e[r+2],n[0]=e[r+3],t[0]}e.writeFloatLE=r?i:o,e.writeFloatBE=r?o:i,e.readFloatLE=r?a:s,e.readFloatBE=r?s:a}():function(){function t(e,t,n,r){var i=t<0?1:0;if(i&&(t=-t),0===t)e(1/t>0?0:2147483648,n,r);else if(isNaN(t))e(2143289344,n,r);else if(t>34028234663852886e22)e((i<<31|2139095040)>>>0,n,r);else if(t<11754943508222875e-54)e((i<<31|Math.round(t/1401298464324817e-60))>>>0,n,r);else{var o=Math.floor(Math.log(t)/Math.LN2);e((i<<31|o+127<<23|8388607&Math.round(t*Math.pow(2,-o)*8388608))>>>0,n,r)}}function a(e,t,n){var r=e(t,n),i=2*(r>>31)+1,o=r>>>23&255,a=8388607&r;return 255===o?a?NaN:i*(1/0):0===o?1401298464324817e-60*i*a:i*Math.pow(2,o-150)*(a+8388608)}e.writeFloatLE=t.bind(null,n),e.writeFloatBE=t.bind(null,r),e.readFloatLE=a.bind(null,i),e.readFloatBE=a.bind(null,o)}(),"undefined"!=typeof Float64Array?function(){var t=new Float64Array([-0]),n=new Uint8Array(t.buffer),r=128===n[7];function i(e,r,i){t[0]=e,r[i]=n[0],r[i+1]=n[1],r[i+2]=n[2],r[i+3]=n[3],r[i+4]=n[4],r[i+5]=n[5],r[i+6]=n[6],r[i+7]=n[7]}function o(e,r,i){t[0]=e,r[i]=n[7],r[i+1]=n[6],r[i+2]=n[5],r[i+3]=n[4],r[i+4]=n[3],r[i+5]=n[2],r[i+6]=n[1],r[i+7]=n[0]}function a(e,r){return n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],n[4]=e[r+4],n[5]=e[r+5],n[6]=e[r+6],n[7]=e[r+7],t[0]}function s(e,r){return n[7]=e[r],n[6]=e[r+1],n[5]=e[r+2],n[4]=e[r+3],n[3]=e[r+4],n[2]=e[r+5],n[1]=e[r+6],n[0]=e[r+7],t[0]}e.writeDoubleLE=r?i:o,e.writeDoubleBE=r?o:i,e.readDoubleLE=r?a:s,e.readDoubleBE=r?s:a}():function(){function t(e,t,n,r,i,o){var a=r<0?1:0;if(a&&(r=-r),0===r)e(0,i,o+t),e(1/r>0?0:2147483648,i,o+n);else if(isNaN(r))e(0,i,o+t),e(2146959360,i,o+n);else if(r>17976931348623157e292)e(0,i,o+t),e((a<<31|2146435072)>>>0,i,o+n);else{var s;if(r<22250738585072014e-324)e((s=r/5e-324)>>>0,i,o+t),e((a<<31|s/4294967296)>>>0,i,o+n);else{var u=Math.floor(Math.log(r)/Math.LN2);1024===u&&(u=1023),e(4503599627370496*(s=r*Math.pow(2,-u))>>>0,i,o+t),e((a<<31|u+1023<<20|1048576*s&1048575)>>>0,i,o+n)}}}function a(e,t,n,r,i){var o=e(r,i+t),a=e(r,i+n),s=2*(a>>31)+1,u=a>>>20&2047,l=4294967296*(1048575&a)+o;return 2047===u?l?NaN:s*(1/0):0===u?5e-324*s*l:s*Math.pow(2,u-1075)*(l+4503599627370496)}e.writeDoubleLE=t.bind(null,n,0,4),e.writeDoubleBE=t.bind(null,r,4,0),e.readDoubleLE=a.bind(null,i,0,4),e.readDoubleBE=a.bind(null,o,4,0)}(),e}function n(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}function r(e,t,n){t[n]=e>>>24,t[n+1]=e>>>16&255,t[n+2]=e>>>8&255,t[n+3]=255&e}function i(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function o(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}e.exports=t(t)},7199:module=>{"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}module.exports=inquire},6662:e=>{"use strict";e.exports=function(e,t,n){var r=n||8192,i=r>>>1,o=null,a=r;return function(n){if(n<1||n>i)return e(n);a+n>r&&(o=e(r),a=0);var s=t.call(o,a,a+=n);return 7&a&&(a=1+(7|a)),s}}},4997:(e,t)=>{"use strict";var n=t;n.length=function(e){for(var t=0,n=0,r=0;r191&&r<224?o[a++]=(31&r)<<6|63&e[t++]:r>239&&r<365?(r=((7&r)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,o[a++]=55296+(r>>10),o[a++]=56320+(1023&r)):o[a++]=(15&r)<<12|(63&e[t++])<<6|63&e[t++],a>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,o)),a=0);return i?(a&&i.push(String.fromCharCode.apply(String,o.slice(0,a))),i.join("")):String.fromCharCode.apply(String,o.slice(0,a))},n.write=function(e,t,n){for(var r,i,o=n,a=0;a>6|192,t[n++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(a+1)))?(r=65536+((1023&r)<<10)+(1023&i),++a,t[n++]=r>>18|240,t[n++]=r>>12&63|128,t[n++]=r>>6&63|128,t[n++]=63&r|128):(t[n++]=r>>12|224,t[n++]=r>>6&63|128,t[n++]=63&r|128);return n-o}},5777:(e,t,n)=>{var r=n(4155);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(i=r))})),t.splice(i,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e={NODE_ENV:"production",DEBUG_EVENT_SENDER:!1,DEBUG_SEMANTIC_METRICS:void 0,PRODUCT_NAME:"desktop"}.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0)}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=n(5399)(t);const{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},5399:(e,t,n)=>{e.exports=function(e){function t(e){let n,i,o,a=null;function s(...e){if(!s.enabled)return;const r=s,i=Number(new Date),o=i-(n||i);r.diff=o,r.prev=n,r.curr=i,n=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,i)=>{if("%%"===n)return"%";a++;const o=t.formatters[i];if("function"==typeof o){const t=e[a];n=o.call(r,t),e.splice(a,1),a--}return n})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=r,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(i!==t.namespaces&&(i=t.namespaces,o=t.enabled(e)),o),set:e=>{a=e}}),"function"==typeof t.init&&t.init(s),s}function r(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),i=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>_,__asyncGenerator:()=>b,__asyncValues:()=>E,__await:()=>v,__awaiter:()=>c,__classPrivateFieldGet:()=>O,__classPrivateFieldSet:()=>C,__createBinding:()=>d,__decorate:()=>s,__exportStar:()=>h,__extends:()=>i,__generator:()=>f,__importDefault:()=>S,__importStar:()=>T,__makeTemplateObject:()=>w,__metadata:()=>l,__param:()=>u,__read:()=>m,__rest:()=>a,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;s--)(i=e[s])&&(a=(o<3?i(a):o>3?i(t,n,a):i(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a}function u(e,t){return function(n,r){t(n,r,e)}}function l(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function c(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{u(r.next(e))}catch(e){o(e)}}function s(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))}function f(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}function g(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{!function(e){e.value instanceof v?Promise.resolve(e.value.v).then(u,l):c(o[0][2],e)}(i[e](t))}catch(e){c(o[0][3],e)}}function u(e){s("next",e)}function l(e){s("throw",e)}function c(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function w(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function T(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function S(e){return e&&e.__esModule?e:{default:e}}function O(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function C(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},8599:e=>{"use strict";const{AbortController:t,AbortSignal:n}="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0;e.exports=t,e.exports.AbortSignal=n,e.exports.default=t},7092:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});const r=200,i=0,o="linear",a=!0;class s{constructor(e={}){this._curve=e.curve||o,this._baseTime=e.baseTime||r,this._ceiling=e.ceiling||i,this._jitter="jitter"in e?!!e.jitter:a}getTime(e){let t;switch(this._curve){case"static":t=1;break;case"logarithmic":t=Math.log(e);break;case"exponential":t=Math.pow(Math.E,e);break;default:t=e+1}let n=Math.min(4294967296,Math.floor(t*this._baseTime));return this._ceiling&&(n=Math.min(n,this._ceiling)),this._jitter?function(e){const t=e/5;return Math.floor(e-t/2+Math.random()*t)}(n):n}}},2427:(e,t,n)=>{"use strict";n.d(t,{V:()=>s});var r=n(7092);function i(){let e=()=>{},t=()=>{};return{promise:new Promise(((n,r)=>{e=n,t=r})),resolve:e,reject:t}}function o(){return Promise.reject(new Error("Backoff already consumed"))}const a={backoffInitial:!1,baseTime:200,ceiling:0,curve:"linear",maxDuration:1/0,maxRetries:1/0,maxTime:1/0,retryPredicate:()=>!0};class s{constructor(e,t){this._resolver=i(),this._ts=0,this._callCount=0,this._tickInterval=0,this._isRunning=!1;const n=t||{};this._fn=e,this._maxDuration=n.maxDuration||a.maxDuration,this._maxRetries="maxRetries"in n?n.maxRetries:a.maxRetries,this._maxTime=n.maxTime||a.maxTime,this._retryPredicate=n.retryPredicate||a.retryPredicate,this._backoffInitial=!!n.backoffInitial,this._counter=new r.A({curve:n.curve,baseTime:n.baseTime,ceiling:n.ceiling}),this._backoffInitial&&(this._maxRetries+=1)}static init(e,t={}){return new s(e,t).start()}_destroy(){this._fn=o,this._resolver=i()}_failure(e){if(e&&"retryAfter"in e)this._retryAfter(e);else{const t=this._counter.getTime(this._callCount);this._shouldRetry(t,e)?(this._callCount++,this._tickInterval=setTimeout((()=>this._tick()),t)):(this._resolver.reject(e),this._destroy())}}_retryAfter(e){this._callCount++,this._tickInterval=setTimeout((()=>this._tick()),e.retryAfter)}_success(...e){this._resolver.resolve(...e),this._destroy()}_shouldRetry(e,t){const n=Date.now()-this._ts+e;return this._callCountthis._success(...e))).catch((e=>this._failure(e)))}getResolver(){return this._resolver.promise}start(e){return!this._fn&&e&&(this._fn=e),this._isRunning||(this._ts=Date.now(),this._isRunning=!0,this._backoffInitial?(this._callCount=1,this._tickInterval=setTimeout((()=>this._tick()),this._counter.getTime(0))):this._tick()),this._resolver.promise}stop(){clearTimeout(this._tickInterval),this._isRunning=!1,this._destroy()}getRetryCount(){return this._callCount}}},8667:(e,t,n)=>{"use strict";n.d(t,{P:()=>r});var r={};n.r(r),n.d(r,{disable:()=>y,disableAll:()=>_,enable:()=>g,enableAll:()=>b,forTag:()=>E,intercept:()=>h,list:()=>m,remove:()=>w,setLevel:()=>v,unintercept:()=>p});var i;n(4155);!function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.DEBUG=2]="DEBUG",e[e.INFO=4]="INFO",e[e.WARN=8]="WARN",e[e.ERROR=16]="ERROR"}(i||(i={}));var o=n(4155);const a=void 0!==o&&"true"==={NODE_ENV:"production",DEBUG_EVENT_SENDER:!1,DEBUG_SEMANTIC_METRICS:void 0,PRODUCT_NAME:"desktop"}.DEBUG?class{constructor(e,t="",n=(()=>!1)){this._tagParts=[],this._tagText="",this._enabled=!0,this._level=i.NONE,this.tag="",this.description="",this._predicate=function(){return!1},this.tag=e,this.description=t,this._predicate=n,this._tagParts=e.split("."),this._tagText=`[${e}]`}_print(e,t,n){if(!(this._enabled||this._level&t))return;const r={args:n,type:e,tag:this.tag};this._predicate(r)}matchesTag(e){const t=Array.isArray(e)?e:e.split("."),n=this._tagParts;if(t.length>n.length)return!1;for(let e=0,r=t.length;e{}}function m(e){const t=Object.keys(l).filter((e=>l[e])).sort();return e?t.map((e=>({tag:e,description:l[e].description||"No description."}))):t.reduce(((e,t)=>(e[t]=l[t].description||"No description",e)),{})}function g(e){var t;const n=Array.isArray(e)?e:[e];let r=n.length;for(;r--;){const e=null===(t=n[r])||void 0===t?void 0:t.toLowerCase();let i=c.length;for(;i--;){const t=c[i];t.matchesTag(e)&&t.enable()}}}function y(e){var t;const n=Array.isArray(e)?e:[e];let r=n.length;for(;r--;){const e=null===(t=n[r])||void 0===t?void 0:t.toLowerCase();let i=c.length;for(;i--;){const t=c[i];t.matchesTag(e)&&t.disable()}}}function v(e){d=e;let t=c.length;for(;t--;){const n=c[t];n&&n.setLevel(e)}}function b(){let e=c.length;for(;e--;)c[e]&&c[e].enable()}function _(){let e=c.length;for(;e--;)c[e]&&c[e].disable()}function E(e,t){let n,r;if("string"==typeof e?(n=e.toLowerCase(),r=t):(n=e.tag,r=e.description),l.hasOwnProperty(n)&&l[n])return l[n];const i=new a(n,r,f);return i.setLevel(d),l[n]=i,c.push(i),i}function w(e){const t=e.toLowerCase();if(!l.hasOwnProperty(t)||!l[t])return;const n=l[t];l[t]=null;const r=c.indexOf(n);-1!==r&&c.splice(r,1)}},619:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fromHex=t.toHex=t.toBytes=t.fromBytes=void 0;var n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",r={},i={};function o(e,t,n){for(var r=0,i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=4096,i=function(){for(var e=[],t=0;t<256;++t)e[t]=255;for(t=0;t>2),n.charAt((3&a)<<4),"==");break}var s=t.charCodeAt(o++);if(o===i){r.push(n.charAt(a>>2),n.charAt((3&a)<<4|(240&s)>>4),n.charAt((15&s)<<2),"=");break}var u=t.charCodeAt(o++);r.push(n.charAt(a>>2),n.charAt((3&a)<<4|(240&s)>>4),n.charAt((15&s)<<2|(192&u)>>6),n.charAt(63&u))}return r.join("")};t.encode=o;var a=function(e){for(var t,n,o=String(e),a=[],s=o.length,u=0;;){do{t=i.charCodeAt(255&o.charCodeAt(u++))}while(255===t&&u>4));do{t=i.charCodeAt(255&o.charCodeAt(u++))}while(255===t&&u>2));do{n=i.charCodeAt(255&o.charCodeAt(u++))}while(255===n&&u{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Base64=t.Base62=void 0;var r=n(619);t.Base62=r;var i=n(2391);t.Base64=i},8256:(e,t,n)=>{"use strict";var r=n(9713);Object.defineProperty(t,"__esModule",{value:!0}),t.PrefsClient=void 0;const i=n(2100),o=n(9195);class a{constructor(e){r(this,"transport",void 0),this.transport=e}get(e){return this.transport.callSingle({service:"spotify.prefs.esperanto.proto.Prefs",method:"Get",payload:o.GetParams.encode(e).finish()}).then((e=>o.PrefValues.decode(i.Reader.create(e))))}sub(e,t){return this.transport.callStream({service:"spotify.prefs.esperanto.proto.Prefs",method:"Sub",payload:o.SubParams.encode(e).finish()},(e=>t(o.PrefValues.decode(i.Reader.create(e)))))}getAll(e){return this.transport.callSingle({service:"spotify.prefs.esperanto.proto.Prefs",method:"GetAll",payload:o.GetAllParams.encode(e).finish()}).then((e=>o.PrefValues.decode(i.Reader.create(e))))}subAll(e,t){return this.transport.callStream({service:"spotify.prefs.esperanto.proto.Prefs",method:"SubAll",payload:o.SubAllParams.encode(e).finish()},(e=>t(o.PrefValues.decode(i.Reader.create(e)))))}set(e){return this.transport.callSingle({service:"spotify.prefs.esperanto.proto.Prefs",method:"Set",payload:o.SetParams.encode(e).finish()}).then((e=>o.PrefValues.decode(i.Reader.create(e))))}create(e){return this.transport.callSingle({service:"spotify.prefs.esperanto.proto.Prefs",method:"Create",payload:o.CreateParams.encode(e).finish()}).then((e=>o.PrefValues.decode(i.Reader.create(e))))}}r(a,"SERVICE_ID","spotify.prefs.esperanto.proto.Prefs"),r(a,"DECODERS",{Get:{request:o.GetParams.decode,response:o.PrefValues.decode},Sub:{request:o.SubParams.decode,response:o.PrefValues.decode},GetAll:{request:o.GetAllParams.decode,response:o.PrefValues.decode},SubAll:{request:o.SubAllParams.decode,response:o.PrefValues.decode},Set:{request:o.SetParams.decode,response:o.PrefValues.decode},Create:{request:o.CreateParams.decode,response:o.PrefValues.decode}}),t.PrefsClient=a},3867:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.makePrefs=t.SimplePrefs=t.PrefsClient=void 0;const a=n(8256);Object.defineProperty(t,"PrefsClient",{enumerable:!0,get:function(){return a.PrefsClient}});const s=o(n(4822));t.SimplePrefs=s.default,i(n(9195),t),t.makePrefs=function(e){return new a.PrefsClient(e)}},4822:(e,t,n)=>{"use strict";var r=n(9713);Object.defineProperty(t,"__esModule",{value:!0});const i=n(3867),o=e=>"string"==typeof e?{string:e}:"boolean"==typeof e?{bool:e}:{number:String(e)},a=e=>Object.fromEntries(Object.entries(e.entries).map((([e,{string:t,bool:n,number:r}])=>{var i;return[e,null!==(i=null!=t?t:n)&&void 0!==i?i:r]})));t.default=class{constructor(e){r(this,"prefs",void 0),this.prefs=new i.PrefsClient(e)}getAll(){return this.prefs.getAll({}).then((e=>a(e)))}get(e){return this.prefs.get({key:e}).then((t=>a(t)[e]))}async set(e,t){await this.prefs.set({entries:{[e]:o(t)}})}}},9195:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PrefValues_EntriesEntry=t.PrefValues=t.CreateParams_EntriesEntry=t.CreateParams=t.SetParams_EntriesEntry=t.SetParams=t.Value=t.SubAllParams=t.GetAllParams=t.SubParams=t.GetParams=t.protobufPackage=void 0;const i=r(n(3720)),o=r(n(2100));function a(e){return"object"==typeof e&&null!==e}function s(e){return null!=e}t.protobufPackage="spotify.prefs.esperanto.proto",t.GetParams={encode:(e,t=o.default.Writer.create())=>(""!==e.key&&t.uint32(10).string(e.key),t),decode(e,t){const n=e instanceof o.default.Reader?e:new o.default.Reader(e);let r=void 0===t?n.len:n.pos+t;const i={key:""};for(;n.pos>>3==1)i.key=n.string();else n.skipType(7&e)}return i},fromJSON:e=>({key:s(e.key)?String(e.key):""}),toJSON(e){const t={};return void 0!==e.key&&(t.key=e.key),t},fromPartial(e){var t;const n={key:""};return n.key=null!==(t=e.key)&&void 0!==t?t:"",n}},t.SubParams={encode:(e,t=o.default.Writer.create())=>(""!==e.key&&t.uint32(10).string(e.key),t),decode(e,t){const n=e instanceof o.default.Reader?e:new o.default.Reader(e);let r=void 0===t?n.len:n.pos+t;const i={key:""};for(;n.pos>>3==1)i.key=n.string();else n.skipType(7&e)}return i},fromJSON:e=>({key:s(e.key)?String(e.key):""}),toJSON(e){const t={};return void 0!==e.key&&(t.key=e.key),t},fromPartial(e){var t;const n={key:""};return n.key=null!==(t=e.key)&&void 0!==t?t:"",n}},t.GetAllParams={encode:(e,t=o.default.Writer.create())=>t,decode(e,t){const n=e instanceof o.default.Reader?e:new o.default.Reader(e);let r=void 0===t?n.len:n.pos+t;const i={};for(;n.pos({}),toJSON:e=>({}),fromPartial:e=>({})},t.SubAllParams={encode:(e,t=o.default.Writer.create())=>t,decode(e,t){const n=e instanceof o.default.Reader?e:new o.default.Reader(e);let r=void 0===t?n.len:n.pos+t;const i={};for(;n.pos({}),toJSON:e=>({}),fromPartial:e=>({})},t.Value={encode:(e,t=o.default.Writer.create())=>(void 0!==e.number&&t.uint32(8).int64(e.number),void 0!==e.bool&&t.uint32(16).bool(e.bool),void 0!==e.string&&t.uint32(26).string(e.string),t),decode(e,t){const n=e instanceof o.default.Reader?e:new o.default.Reader(e);let r=void 0===t?n.len:n.pos+t;const i={number:void 0,bool:void 0,string:void 0};for(;n.pos>>3){case 1:i.number=n.int64().toString();break;case 2:i.bool=n.bool();break;case 3:i.string=n.string();break;default:n.skipType(7&e)}}return i},fromJSON:e=>({number:s(e.number)?String(e.number):void 0,bool:s(e.bool)?Boolean(e.bool):void 0,string:s(e.string)?String(e.string):void 0}),toJSON(e){const t={};return void 0!==e.number&&(t.number=e.number),void 0!==e.bool&&(t.bool=e.bool),void 0!==e.string&&(t.string=e.string),t},fromPartial(e){var t,n,r;const i={number:void 0,bool:void 0,string:void 0};return i.number=null!==(t=e.number)&&void 0!==t?t:void 0,i.bool=null!==(n=e.bool)&&void 0!==n?n:void 0,i.string=null!==(r=e.string)&&void 0!==r?r:void 0,i}},t.SetParams={encode:(e,n=o.default.Writer.create())=>(Object.entries(e.entries).forEach((([e,r])=>{t.SetParams_EntriesEntry.encode({key:e,value:r},n.uint32(10).fork()).ldelim()})),n),decode(e,n){const r=e instanceof o.default.Reader?e:new o.default.Reader(e);let i=void 0===n?r.len:r.pos+n;const a={entries:{}};for(;r.pos>>3==1){const e=t.SetParams_EntriesEntry.decode(r,r.uint32());void 0!==e.value&&(a.entries[e.key]=e.value)}else r.skipType(7&e)}return a},fromJSON:e=>({entries:a(e.entries)?Object.entries(e.entries).reduce(((e,[n,r])=>(e[n]=t.Value.fromJSON(r),e)),{}):{}}),toJSON(e){const n={entries:{}};return e.entries&&Object.entries(e.entries).forEach((([e,r])=>{n.entries[e]=t.Value.toJSON(r)})),n},fromPartial(e){var n;const r={entries:{}};return r.entries=Object.entries(null!==(n=e.entries)&&void 0!==n?n:{}).reduce(((e,[n,r])=>(void 0!==r&&(e[n]=t.Value.fromPartial(r)),e)),{}),r}},t.SetParams_EntriesEntry={encode:(e,n=o.default.Writer.create())=>(""!==e.key&&n.uint32(10).string(e.key),void 0!==e.value&&t.Value.encode(e.value,n.uint32(18).fork()).ldelim(),n),decode(e,n){const r=e instanceof o.default.Reader?e:new o.default.Reader(e);let i=void 0===n?r.len:r.pos+n;const a={key:"",value:void 0};for(;r.pos>>3){case 1:a.key=r.string();break;case 2:a.value=t.Value.decode(r,r.uint32());break;default:r.skipType(7&e)}}return a},fromJSON:e=>({key:s(e.key)?String(e.key):"",value:s(e.value)?t.Value.fromJSON(e.value):void 0}),toJSON(e){const n={};return void 0!==e.key&&(n.key=e.key),void 0!==e.value&&(n.value=e.value?t.Value.toJSON(e.value):void 0),n},fromPartial(e){var n;const r={key:"",value:void 0};return r.key=null!==(n=e.key)&&void 0!==n?n:"",r.value=void 0!==e.value&&null!==e.value?t.Value.fromPartial(e.value):void 0,r}},t.CreateParams={encode:(e,n=o.default.Writer.create())=>(Object.entries(e.entries).forEach((([e,r])=>{t.CreateParams_EntriesEntry.encode({key:e,value:r},n.uint32(10).fork()).ldelim()})),n),decode(e,n){const r=e instanceof o.default.Reader?e:new o.default.Reader(e);let i=void 0===n?r.len:r.pos+n;const a={entries:{}};for(;r.pos>>3==1){const e=t.CreateParams_EntriesEntry.decode(r,r.uint32());void 0!==e.value&&(a.entries[e.key]=e.value)}else r.skipType(7&e)}return a},fromJSON:e=>({entries:a(e.entries)?Object.entries(e.entries).reduce(((e,[n,r])=>(e[n]=t.Value.fromJSON(r),e)),{}):{}}),toJSON(e){const n={entries:{}};return e.entries&&Object.entries(e.entries).forEach((([e,r])=>{n.entries[e]=t.Value.toJSON(r)})),n},fromPartial(e){var n;const r={entries:{}};return r.entries=Object.entries(null!==(n=e.entries)&&void 0!==n?n:{}).reduce(((e,[n,r])=>(void 0!==r&&(e[n]=t.Value.fromPartial(r)),e)),{}),r}},t.CreateParams_EntriesEntry={encode:(e,n=o.default.Writer.create())=>(""!==e.key&&n.uint32(10).string(e.key),void 0!==e.value&&t.Value.encode(e.value,n.uint32(18).fork()).ldelim(),n),decode(e,n){const r=e instanceof o.default.Reader?e:new o.default.Reader(e);let i=void 0===n?r.len:r.pos+n;const a={key:"",value:void 0};for(;r.pos>>3){case 1:a.key=r.string();break;case 2:a.value=t.Value.decode(r,r.uint32());break;default:r.skipType(7&e)}}return a},fromJSON:e=>({key:s(e.key)?String(e.key):"",value:s(e.value)?t.Value.fromJSON(e.value):void 0}),toJSON(e){const n={};return void 0!==e.key&&(n.key=e.key),void 0!==e.value&&(n.value=e.value?t.Value.toJSON(e.value):void 0),n},fromPartial(e){var n;const r={key:"",value:void 0};return r.key=null!==(n=e.key)&&void 0!==n?n:"",r.value=void 0!==e.value&&null!==e.value?t.Value.fromPartial(e.value):void 0,r}},t.PrefValues={encode:(e,n=o.default.Writer.create())=>(Object.entries(e.entries).forEach((([e,r])=>{t.PrefValues_EntriesEntry.encode({key:e,value:r},n.uint32(10).fork()).ldelim()})),n),decode(e,n){const r=e instanceof o.default.Reader?e:new o.default.Reader(e);let i=void 0===n?r.len:r.pos+n;const a={entries:{}};for(;r.pos>>3==1){const e=t.PrefValues_EntriesEntry.decode(r,r.uint32());void 0!==e.value&&(a.entries[e.key]=e.value)}else r.skipType(7&e)}return a},fromJSON:e=>({entries:a(e.entries)?Object.entries(e.entries).reduce(((e,[n,r])=>(e[n]=t.Value.fromJSON(r),e)),{}):{}}),toJSON(e){const n={entries:{}};return e.entries&&Object.entries(e.entries).forEach((([e,r])=>{n.entries[e]=t.Value.toJSON(r)})),n},fromPartial(e){var n;const r={entries:{}};return r.entries=Object.entries(null!==(n=e.entries)&&void 0!==n?n:{}).reduce(((e,[n,r])=>(void 0!==r&&(e[n]=t.Value.fromPartial(r)),e)),{}),r}},t.PrefValues_EntriesEntry={encode:(e,n=o.default.Writer.create())=>(""!==e.key&&n.uint32(10).string(e.key),void 0!==e.value&&t.Value.encode(e.value,n.uint32(18).fork()).ldelim(),n),decode(e,n){const r=e instanceof o.default.Reader?e:new o.default.Reader(e);let i=void 0===n?r.len:r.pos+n;const a={key:"",value:void 0};for(;r.pos>>3){case 1:a.key=r.string();break;case 2:a.value=t.Value.decode(r,r.uint32());break;default:r.skipType(7&e)}}return a},fromJSON:e=>({key:s(e.key)?String(e.key):"",value:s(e.value)?t.Value.fromJSON(e.value):void 0}),toJSON(e){const n={};return void 0!==e.key&&(n.key=e.key),void 0!==e.value&&(n.value=e.value?t.Value.toJSON(e.value):void 0),n},fromPartial(e){var n;const r={key:"",value:void 0};return r.key=null!==(n=e.key)&&void 0!==n?n:"",r.value=void 0!==e.value&&null!==e.value?t.Value.fromPartial(e.value):void 0,r}},o.default.util.Long!==i.default&&(o.default.util.Long=i.default,o.default.configure())},3178:(e,t,n)=>{"use strict";n.d(t,{vp:()=>d});class r{constructor(e,t){this.defaultPrevented=!1,this.immediateStopped=!1,this.stopped=!1,this.type=e,this.data=t}preventDefault(){this.defaultPrevented=!0}stopPropagation(){this.stopped=!0}stopImmediatePropagation(){this.immediateStopped=!0}}n(4633);const i="undefined"!=typeof window,o=[];function a(){var e;const t=o.splice(0);if(t.length)for(let n=0,r=t.length;n{const t=!o.length;o.push(e),t&&s()};function l(e,t,n){for(let r=0,i=e.length;rthis._dispatchFromStore(this._listeners,n))),n}emitSync(e,t){if(!e)throw new TypeError("Argument `eventType` is required.");const n=this.createEvent(e,t);return this._dispatchFromStore(this._listeners,n),n}emitEvent(e){return u((()=>this._dispatchFromStore(this._listeners,e))),e}emitEventSync(e){return this._dispatchFromStore(this._listeners,e),e}emitAndWait(e,t,n){if(!e)throw new TypeError("Argument `eventType` is required.");const r=this.createEvent(e,t);return u((()=>{this._dispatchFromStore(this._listeners,r),n.call(this,r)})),r}emitEventAndWait(e,t){return u((()=>{this._dispatchFromStore(this._listeners,e),t.call(this,e)})),e}proxyEmit(e,t,n){if(!e||"function"!=typeof e.on)throw new TypeError("Proxy source must be an EventEmitter");if(e===this)throw new ReferenceError("Cannot create recursive proxy.");if(!t||!n)throw new TypeError("Parameter sourceType and targetType are required.");const r=e=>{e.stopped||this.emitAndWait(n,e.data,(t=>{t.defaultPrevented&&e.preventDefault()}))};return e.on(t,r),r}proxyEmitSync(e,t,n){if(!e||"function"!=typeof e.on)throw new TypeError("Proxy source must be an EventEmitter");if(e===this)throw new ReferenceError("Cannot create recursive proxy.");if(!t||!n)throw new TypeError("Parameter sourceType and targetType are required.");const r=e=>{if(e.stopped)return;const t=this.createEvent(n,e.data);this.emitEventSync(t),t.defaultPrevented&&e.preventDefault()};return e.on(t,r),r}proxyEmitAll(e,t){for(const n in t)t.hasOwnProperty(n)&&this.proxyEmit(e,n,t[n])}proxyEmitAllSync(e,t){for(const n in t)t.hasOwnProperty(n)&&this.proxyEmitSync(e,n,t[n])}onAddListener(e,t,n={}){const r=this._metaListeners.add;return c(r,e,t,n)&&f(r,e,t,n),this}onRemoveListener(e,t,n={}){const r=this._metaListeners.remove;return c(r,e,t,n)&&f(r,e,t,n),this}}},3012:(e,t,n)=>{"use strict";n.d(t,{A2L:()=>E,F4X:()=>w,F_T:()=>l,JBZ:()=>d,KGD:()=>y,TMf:()=>v,URx:()=>_,YhY:()=>r,cQs:()=>h,crY:()=>i,dly:()=>a,dt8:()=>g,eqR:()=>m,g4V:()=>c,gXv:()=>p,hM$:()=>o,hcr:()=>T,kEW:()=>O,mGT:()=>f,nuo:()=>s,o78:()=>u,poE:()=>S,w_O:()=>b});const r="0.3",i="0.7",o="4px",a="8px",s="12px",u="16px",l="20px",c="24px",f="32px",d="48px",h="56px",p="767px",m={screenXxsMax:"479px",screenXsMin:"480px",screenXsMax:p,screenSmMin:"768px",screenSmMax:"991px",screenMdMin:"992px",screenMdMax:"1199px",screenLgMin:"1200px",screenLgMax:"1919px",screenXlMin:"1920px"},g={body1Font:"Circular",body1FontSize:"16px",body1FontWeight:400,body1LineHeight:"24px",body1LetterSpacing:"0px",body2Font:"Circular",body2FontSize:"14px",body2FontWeight:400,body2LineHeight:"20px",body2LetterSpacing:"0.25px",body3Font:"Circular",body3FontSize:"12px",body3FontWeight:400,body3LineHeight:"16px",body3LetterSpacing:"0.25px",body4Font:"Circular",body4FontSize:"10px",body4FontWeight:400,body4LineHeight:"16px",body4LetterSpacing:"0.25px",cta1Font:"Circular",cta1FontSize:"16px",cta1FontWeight:700,cta1LineHeight:"16px",cta1LetterSpacing:"2px",cta1Uppercase:"uppercase",cta2Font:"Circular",cta2FontSize:"14px",cta2FontWeight:700,cta2LineHeight:"16px",cta2LetterSpacing:"1px",cta2Uppercase:"uppercase",cta3Font:"Circular",cta3FontSize:"12px",cta3FontWeight:700,cta3LineHeight:"16px",cta3LetterSpacing:"1px",cta3Uppercase:"uppercase",cta4Font:"Circular",cta4FontSize:"10px",cta4FontWeight:700,cta4LineHeight:"16px",cta4LetterSpacing:"1px",cta4Uppercase:"uppercase",display1Font:"Circular",display1FontSmall:"Circular",display1FontXSmall:"Circular",display1FontSize:"96px",display1FontSizeSmall:"80px",display1FontSizeXSmall:"56px",display1FontWeight:900,display1FontWeightSmall:900,display1FontWeightXSmall:900,display1LineHeight:"104px",display1LineHeightSmall:"88px",display1LineHeightXSmall:"64px",display1PaddingBottom:"0.67em",display1PaddingBottomSmall:"0.67em",display1PaddingBottomXSmall:"0.67em",display1LetterSpacing:"-2px",display1LetterSpacingSmall:"-2px",display1LetterSpacingXSmall:"-1.75px",display2Font:"Circular",display2FontSmall:"Circular",display2FontXSmall:"Circular",display2FontSize:"80px",display2FontSizeSmall:"64px",display2FontSizeXSmall:"48px",display2FontWeight:900,display2FontWeightSmall:900,display2FontWeightXSmall:900,display2LineHeight:"88px",display2LineHeightSmall:"72px",display2LineHeightXSmall:"56px",display2PaddingBottom:"0.67em",display2PaddingBottomSmall:"0.67em",display2PaddingBottomXSmall:"0.67em",display2LetterSpacing:"-2px",display2LetterSpacingSmall:"-2px",display2LetterSpacingXSmall:"-1.75px",heading1Font:"Circular",heading1FontSmall:"Circular",heading1FontXSmall:"Circular",heading1FontSize:"48px",heading1FontSizeSmall:"40px",heading1FontSizeXSmall:"32px",heading1FontWeight:900,heading1FontWeightSmall:900,heading1FontWeightXSmall:900,heading1LineHeight:"56px",heading1LineHeightSmall:"48px",heading1LineHeightXSmall:"40px",heading1PaddingBottom:"0.67em",heading1PaddingBottomSmall:"0.67em",heading1PaddingBottomXSmall:"0.67em",heading1LetterSpacing:"-1px",heading1LetterSpacingSmall:"-1px",heading1LetterSpacingXSmall:"-1px",heading2Font:"Circular",heading2FontSmall:"Circular",heading2FontSize:"32px",heading2FontSizeSmall:"28px",heading2FontWeight:900,heading2FontWeightSmall:900,heading2LineHeight:"40px",heading2LineHeightSmall:"36px",heading2PaddingBottom:"0.75em",heading2PaddingBottomSmall:"0.75em",heading2LetterSpacing:"-0.5px",heading2LetterSpacingSmall:"-0.25px",heading3Font:"Circular",heading3FontSmall:"Circular",heading3FontSize:"24px",heading3FontSizeSmall:"20px",heading3FontWeight:900,heading3FontWeightSmall:900,heading3LineHeight:"32px",heading3LineHeightSmall:"28px",heading3LetterSpacing:"-0.25px",heading3LetterSpacingSmall:"-0.25px",heading4Font:"Circular",heading4FontSize:"18px",heading4FontWeight:400,heading4LineHeight:"26px",heading4LetterSpacing:"0px"},y={fontSize:"16px",fontWeight:400,lineHeight:"24px",letterSpacing:"0px"},v={fontSize:"14px",fontWeight:400,lineHeight:"20px",letterSpacing:"0.25px"},b={fontSize:"12px",fontWeight:400,lineHeight:"16px",letterSpacing:"0.25px"},_={fontSize:"10px",fontWeight:400,lineHeight:"16px",letterSpacing:"0.25px"},E={fontSize:"16px",fontWeight:700,lineHeight:"16px",letterSpacing:"2px",textTransform:"uppercase"},w={fontSize:"14px",fontWeight:700,lineHeight:"16px",letterSpacing:"1px",textTransform:"uppercase"},T={fontSize:"12px",fontWeight:700,lineHeight:"16px",letterSpacing:"1px",textTransform:"uppercase"},S={fontSize:"10px",fontWeight:700,lineHeight:"16px",letterSpacing:"1px",textTransform:"uppercase"},O={fontSize:"18px",fontWeight:400,lineHeight:"26px",letterSpacing:"0px"}},5699:(e,t,n)=>{"use strict";n.d(t,{P:()=>ye});var r=n(9334),i=n(2214),o=n(7294),a=n.n(o),s={useBrowserDefaultFocusStyle:!1},u=a().createContext(s);u.displayName="BrowserDefault";var l=n(6939),c={isUsingKeyboard:!0},f=a().createContext(c);f.displayName="KeyboardDetection";var d=n(3446),h=n(3012),p=n(8804),m=n(1072),g=n(3384),y=n(2187),v=(0,y.NE)(y.iK.essentialBase),b=(0,p.iv)(["&:focus{outline:none;}"]);var _,E,w,T,S,O,C,x,A,I=(0,p.iv)(["display:block;position:absolute;pointer-events:none;transition:border-color "," ",";box-sizing:border-box;"],"200ms","ease-in"),N=function(e){return(0,p.iv)([""," "," background:transparent;border-radius:",";border:","px solid transparent;"],I,(t={dimension:"".concat(12,"px"),position:"-".concat(6,"px")},n=t.dimension,r=t.position,(0,p.iv)(["inline-size:",";block-size:",";top:",";left:",";"],"calc(100% + ".concat(n,")"),"calc(100% + ".concat(n,")"),r,r)),e,3);var t,n,r},R=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,p.iv)(["position:relative;"," ",""],b,t&&(0,p.iv)(["&::after{"," content:'';}&:focus::after{border-color:",";}",""],N(e),v,n&&(0,p.iv)(["&::after{border-color:",";}"],v)))},k=n(8974),P=n(6613),L={sm:"sm",md:"md",lg:"lg"},D=(_={},(0,r.Z)(_,L.sm,h.mGT),(0,r.Z)(_,L.md,h.JBZ),(0,r.Z)(_,L.lg,h.cQs),_),M="500px",U="33ms",j=(E={},(0,r.Z)(E,L.sm,h.dly),(0,r.Z)(E,L.md,"14px"),(0,r.Z)(E,L.lg,h.o78),E),F=(w={},(0,r.Z)(w,L.sm,h.dly),(0,r.Z)(w,L.md,"12px"),(0,r.Z)(w,L.lg,h.o78),w),B=(T={},(0,r.Z)(T,L.sm,h.o78),(0,r.Z)(T,L.md,h.mGT),(0,r.Z)(T,L.lg,h.JBZ),T),z=(S={},(0,r.Z)(S,L.sm,h.nuo),(0,r.Z)(S,L.md,h.F_T),(0,r.Z)(S,L.lg,h.g4V),S),H=(O={},(0,r.Z)(O,L.sm,"5px"),(0,r.Z)(O,L.md,h.nuo),(0,r.Z)(O,L.lg,"10px"),O),W=(C={},(0,r.Z)(C,L.sm,h.o78),(0,r.Z)(C,L.md,h.g4V),(0,r.Z)(C,L.lg,h.g4V),C),V=function(e,t){if(t===l.k3.next)return function(e){switch(e){case L.sm:return(0,m.I_)();default:return(0,m.Vr)();case L.lg:return(0,m.GW)()}}(e);switch(e){case L.sm:return(0,m.VW)(!0);default:return(0,m.Dg)(!0);case L.lg:return(0,m.Vr)(!0)}},q=function(e){var t=z[e],n=H[e],r=W[e];return(0,P.zg)(t)+(0,P.zg)(r)+(0,P.zg)(n)},$=function(e,t,n,r,i,o){var a=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;t="".concat("next"===(arguments.length>2?arguments[2]:void 0)?(0,P.zg)(F[e])-n:(0,P.zg)(j[e])-n,"px");var r="".concat((0,P.zg)(B[e])-n,"px"),i="".concat(q(e)-n,"px");return{paddingTopBottom:t,paddingLeftRight:r,withIconPaddingLeftRight:i}}(e,i,o),s=a.paddingTopBottom,u=a.paddingLeftRight,l=a.withIconPaddingLeftRight,c=(0,p.iv)(["inline-size:",";block-size:",";"],D[e],D[e]),f=(0,p.iv)(["padding-block-start:",";padding-block-end:",";padding-inline-start:",";padding-inline-end:",";"],s,s,u,u),d=(0,p.iv)(["padding-block-start:",";padding-block-end:",";padding-inline-start:",";padding-inline-end:",";"],s,s,l,l),h=(0,p.iv)(["padding-block-start:",";padding-block-end:",";padding-inline-start:",";padding-inline-end:",";"],s,s,t?l:u,n?l:u);return r?c:t||n?t&&n?d:h:f},G=(0,p.iv)(["cursor:",";opacity:",";transform:scale(1);"],k.fn,k.Zx),K=(0,p.iv)(["opacity:",";outline:none;transform:scale(1);"],k.MQ),X=(0,p.iv)(["transform:scale(",");"],"1.04"),J=["component","buttonSize","hover","active","focus","isUsingKeyboard","useBrowserDefaultFocusStyle","status","buttonLegacy","fullWidth","iconLeading","iconTrailing","iconOnly"],Y=(0,p.ZP)(a().forwardRef((function(e,t){var n=e.component,r=void 0===n?"button":n,o=(e.buttonSize,e.hover,e.active,e.focus,e.isUsingKeyboard,e.useBrowserDefaultFocusStyle,e.status,e.buttonLegacy,e.fullWidth,e.iconLeading,e.iconTrailing,e.iconOnly,(0,i.Z)(e,J));return a().createElement(r,Object.assign({},o,{ref:t}))}))).withConfig({displayName:"Button",componentId:"y0gtbx-0"})(["",""],(function(e){var t=e.buttonSize,n=e.hover,r=e.active,i=e.focus,o=e.useBrowserDefaultFocusStyle,a=e.status,s=e.isUsingKeyboard,u=e.fullWidth,l=e.iconLeading,c=e.iconTrailing,f=e.iconOnly,d=(0,y.NE)(y.iK.essentialSubdued),h=(0,y.NE)(y.iK.essentialBase),m=(0,p.iv)([""," border-color:",";"],!u&&X,h),v=(0,p.iv)([""," border-color:",";"],K,d),_=(0,p.iv)([""," border-color:",";&::after{border-color:transparent;}"],G,d),E=$(t,l,c,f,1);return(0,p.iv)(["",";"," ",";border:","px solid ",";color:",";min-line-size:0;"," "," &:hover{",";}"," &:active{",";}"," &[disabled],&[aria-disabled='true'],fieldset[disabled] &{",";}"],function(e,t,n){return(0,p.iv)(["",";"," ",";background-color:transparent;border:0;border-radius:",";display:inline-block;position:relative;text-align:center;text-decoration:none;text-transform:",";touch-action:manipulation;transition-duration:",";transition-property:background-color,border-color,color,box-shadow,filter,transform;user-select:none;vertical-align:middle;transform:translate3d(0,0,0);"],(0,g.D)(),!t&&b,V(e,n),M,"none",U)}(t,o,a),E,!o&&R(M,s,i),1,d,(0,y.NE)(y.iK.textBase),u&&(0,p.iv)(["inline-size:100%;"]),(u||l||c)&&(0,p.iv)(["&&{display:inline-flex;align-items:center;justify-content:center;}"]),m,n&&m,v,r&&v,_)})),Z=p.ZP.span.withConfig({displayName:"IconWrapper__Wrapper",componentId:"ihacte-0"})(["",""],(function(e){var t=e.buttonSize,n=e.iconSize,r=e.position,i=z[t],o=((0,P.zg)(D[t])-(0,P.zg)(n))/2-1;return(0,p.iv)(["display:flex;position:absolute;"," "," ",""],"only"===r&&(0,p.iv)(["top:","px;left:","px;[dir='rtl'] &{right:","px;left:auto;}"],o,o,o),"leading"===r&&(0,p.iv)(["left:",";[dir='rtl'] &{right:",";left:auto;}"],i,i),"trailing"===r&&(0,p.iv)(["right:",";[dir='rtl'] &{left:",";right:auto;}"],i,i))})),Q=function(e){var t=e.position,n=e.buttonSize,r=e.icon,i="only"===t&&"lg"===n?"28px":W[n];return a().createElement(Z,{position:t,buttonSize:n,iconSize:i,"aria-hidden":"true"},a().createElement(r,{iconSize:(0,P.zg)(i)}))},ee=function(e){var t=e.iconOnly,n=e.iconLeading,r=e.iconTrailing,i=e.children,o=e.buttonSize,s=function(e,t){return t&&a().createElement(Q,{icon:t,position:e,buttonSize:o})};return t?a().createElement(a().Fragment,null,s("only",t)):a().createElement(a().Fragment,null,s("leading",n),i,s("trailing",r))},te=k.Y$,ne=(x={},(0,r.Z)(x,L.sm,"12px"),(0,r.Z)(x,L.md,"14px"),(0,r.Z)(x,L.lg,"16px"),x),re=(A={},(0,r.Z)(A,L.sm,"10px"),(0,r.Z)(A,L.md,"17px"),(0,r.Z)(A,L.lg,"20px"),A);var ie=["component","buttonSize","hover","active","focus","isUsingKeyboard","useBrowserDefaultFocusStyle"],oe=["component","theme","iconOnly","iconLeading","iconTrailing","fullWidth"],ae=(0,y.NE)(y.iK.essentialSubdued),se=(0,y.NE)(y.iK.essentialBase),ue=(0,p.ZP)(a().forwardRef((function(e,t){var n=e.component,r=void 0===n?"button":n,o=(e.buttonSize,e.hover,e.active,e.focus,e.isUsingKeyboard,e.useBrowserDefaultFocusStyle,(0,i.Z)(e,ie));return a().createElement(r,Object.assign({},o,{ref:t}))}))).withConfig({displayName:"ButtonLegacy",componentId:"sakkxz-0"})(["",""],(function(e){var t=e.buttonSize,n=void 0===t?"md":t,r=e.hover,i=e.active,o=e.focus,a=e.useBrowserDefaultFocusStyle,s=e.isUsingKeyboard,u=function(e){var t=parseInt(ne[e],10),n=parseInt(re[e],10);return{paddingTopBottom:n,paddingLeftRight:t+2*n}}(n),l=u.paddingTopBottom,c=u.paddingLeftRight,f=(0,p.iv)([""," border-color:",";"],X,se),d=(0,p.iv)([""," border-color:",";"],K,ae),h=(0,p.iv)([""," border-color:",";&::after{border-color:transparent;}"],G,ae);return(0,p.iv)(["",";padding:","px ","px;border:","px solid ",";color:",";line-height:0.8;"," &:hover{",";}"," &:active{",";}"," &[disabled],&[aria-disabled='true'],fieldset[disabled] &{",";}"],function(e,t){return(0,p.iv)(["",";"," background-color:transparent;border:0;border-radius:",";display:inline-block;font-size:",";font-weight:",";letter-spacing:2px;line-height:",";text-align:center;text-decoration:none;text-transform:uppercase;touch-action:manipulation;transition-duration:",";transition-property:background-color,border-color,color,box-shadow,filter,transform;user-select:none;vertical-align:middle;transform:translate3d(0,0,0);"],(0,g.D)(),!t&&b,M,ne[e],te,"1",U)}(n,a),l,c,1,ae,(0,y.NE)(y.iK.textBase),!a&&R(M,s,o),f,r&&f,d,i&&d,h)})),le=a().forwardRef((function(e,t){var n=e.component,r=e.theme,s=(e.iconOnly,e.iconLeading,e.iconTrailing,e.fullWidth,(0,i.Z)(e,oe));r&&(0,d.Zh)("theme","This component is intended to inherit its parent’s color set or color.");var l=(0,o.useContext)(f).isUsingKeyboard,c=(0,o.useContext)(u).useBrowserDefaultFocusStyle,h=s.href&&"_blank"===s.target?"noopener noreferrer":null;return a().createElement(ue,Object.assign({},s,{rel:h,ref:t,component:!n&&s.href?"a":n,isUsingKeyboard:l,useBrowserDefaultFocusStyle:c}))})),ce=["component","buttonSize","iconLeading","iconTrailing","iconOnly","children","aria-label","aria-labelledby","buttonLegacy","theme"],fe=["buttonLegacy"];function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function he(e){for(var t=1;t{"use strict";n.d(t,{Cn:()=>d,Lr:()=>f});var r=n(2214),i=n(7294),o=n.n(i),a=n(3446),s=n(8804),u=n(2187);const l=s.ZP.svg.withConfig({displayName:"Svg",componentId:"sc-1bi12j5-0"})(["*{vector-effect:non-scaling-stroke;}",""],(function(e){return e.iconColor?(0,s.iv)(["fill:","};"],(0,u.NE)(e.iconColor)):(0,s.iv)(["fill:currentColor;"])}));var c=["iconSize","semanticColor","color","title","titleId","desc","descId"],f=function(e,t){return e.sort((function(e,t){return e.size-t.size})).reduce((function(e,n){return n.size<=t&&n.size>e.size?n:e}))},d=function(e){var t=e.iconSize,n=void 0===t?24:t,i=e.semanticColor,s=e.color,u=(e.title,e.titleId,e.desc,e.descId,(0,r.Z)(e,c));return(0,a.o7)({color:s}),o().createElement(l,Object.assign({role:"img",height:n,width:n,iconSize:n,iconColor:i},u))}},6501:(e,t,n)=>{"use strict";n.d(t,{cw:()=>A});var r=n(2214),i=n(7294),o=n.n(i),a=n(3446),s=n(8804),u=function(){return(0,s.iv)(["border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;"])},l=["component"],c=o().forwardRef((function(e,t){var n=e.component,i=void 0===n?"span":n,a=(0,r.Z)(e,l);return o().createElement(i,Object.assign({},a,{ref:t}))})),f=(0,s.ZP)(c).withConfig({displayName:"VisuallyHidden",componentId:"sc-17bibe8-0"})(["",""],u());var d=n(3012),h=n(3384),p=s.ZP.div.withConfig({displayName:"Group",componentId:"u9bcx5-0"})(["",";padding-block-end:",";",";"],(0,h.D)(),d.g4V,(function(e){return"fieldset"===e.as&&(0,s.iv)(["min-inline-size:0;padding-inline-start:0;padding-inline-end:0;padding-block-start:0;margin:0;border:0;"])})),m=n(2187),g=s.ZP.span.withConfig({displayName:"IndicatorText",componentId:"sc-7u3ecx-0"})(["color:",";padding-inline-start:",";@media (max-width:","){flex:1;}"],(0,m.NE)(m.iK.textSubdued),d.hM$,d.gXv),y=s.ZP.div.withConfig({displayName:"InlineGroup",componentId:"sc-4o5aq4-0"})(["display:flex;flex-wrap:wrap;"]),v=s.ZP.label.withConfig({displayName:"Label",componentId:"sc-1c0cv3r-0"})(["color:",";"],(0,m.NE)(m.iK.textBase)),b=n(6939);var _=n(4592),E=n(1072),w=n(8974),T=s.ZP.div.withConfig({displayName:"LabelGroup",componentId:"sc-1ibddrg-0"})(["",";",";align-items:center;display:flex;font-weight:",";inline-size:100%;padding-block-end:",";@media (max-width:","){justify-content:space-between;}",";",";"],(0,h.D)(),(function(){return e=(0,_.Mr)(),t=(0,E.Ef)(),n=(0,i.useContext)(b.S9),(0,b.lR)(b.U0.type,n)===b.k3.deprecated?e:t;var e,t,n}),w.Y$,d.dly,d.gXv,(function(e){return"legend"===e.as&&(0,s.iv)(["padding-inline-start:0;padding-inline-end:0;"])}),(function(e){return e.isHidden&&(0,s.iv)(["",""],u())})),S=s.ZP.span.withConfig({displayName:"LabelInner",componentId:"sc-19pye2k-0"})(["display:inline-block;"]),O=s.ZP.span.withConfig({displayName:"Popover",componentId:"sc-19tjcmc-0"})(["display:inline-flex;margin-inline-start:",";"],d.hM$),C=s.ZP.span.withConfig({displayName:"Required",componentId:"sc-7zzom7-0"})(["color:",";border-block-end:0;text-decoration:none;padding-inline-start:",";@media (max-width:","){flex:1;}"],(0,m.NE)(m.iK.textNegative),d.hM$,d.gXv),x=["withFieldset","children","indicator","inline","label","labelFor","hideLabel","popover","optionalIndicatorText","requiredIndicatorTextForScreenReader","theme"],A=function(e){var t=e.withFieldset,n=e.children,i=e.indicator,s=e.inline,u=e.label,l=e.labelFor,c=e.hideLabel,d=e.popover,h=e.optionalIndicatorText,m=void 0===h?"(Optional)":h,b=e.requiredIndicatorTextForScreenReader,_=void 0===b?"(required)":b,E=e.theme,w=(0,r.Z)(e,x);return E&&(0,a.Zh)("theme","This component is intended to inherit its parent’s color set or color."),o().createElement(p,Object.assign({as:t?"fieldset":void 0},w),u&&o().createElement(T,{as:t?"legend":void 0,isHidden:!!c},t?u:o().createElement(v,{htmlFor:l},o().createElement(S,null,u),i&&function(e,t,n){switch(e){case"optional":return o().createElement(g,null,t);case"required":return o().createElement(o().Fragment,null,o().createElement(C,{"aria-hidden":"true"},"*"),o().createElement(f,null,n));default:return o().createElement(g,null,"(",e,")")}}(i,m,_)),d&&o().createElement(O,null,d)),s?o().createElement(y,null,n):n)}},7873:(e,t,n)=>{"use strict";n.d(t,{B:()=>g});var r=n(7294),i=n.n(r),o=n(6939),a=n(811);function s(e){var t,n,s,u,l=[{size:16,svgContent:""},{size:24,svgContent:""},{size:32,svgContent:""},{size:48,svgContent:""},{size:64,svgContent:""}],c=[{size:16,svgContent:""},{size:24,svgContent:""}],f=(0,r.useContext)(o.S9),d=(0,o.lR)(o.U0.icon,f),h=0===l.length?c:l,p=(0,a.Lr)(d===o.k3.deprecated?h:c,e.iconSize||24);return i().createElement(a.Cn,Object.assign({},e,{viewBox:"0 0 ".concat(p.size," ").concat(p.size),dangerouslySetInnerHTML:{__html:"".concat((s=e.title,u=e.titleId,s?"").concat(s,""):"")).concat((t=e.desc,n=e.descId,t?"").concat(t,""):"")).concat(p.svgContent)}}))}var u=n(2214),l=n(3446),c=n(8804),f=n(2187),d={16:"0.8pt",24:"1pt",32:"1.2pt",48:"1.4pt",64:"1.6pt"};const h=c.ZP.svg.withConfig({displayName:"Svg",componentId:"ytk21e-0"})(["",";*{vector-effect:non-scaling-stroke;}*[fill='#181818']{","}*[stroke='#181818']{","}"],(function(e){return(0,c.iv)(["stroke-width:",";"],d[e.iconSize])}),(function(e){return e.iconColor?(0,c.iv)(["fill:",";"],(0,f.NE)(e.iconColor)):(0,c.iv)(["fill:currentColor;"])}),(function(e){return e.iconColor?(0,c.iv)(["stroke:",";"],(0,f.NE)(e.iconColor)):(0,c.iv)(["stroke:currentColor;"])}));var p=["iconSize","semanticColor","color","title","titleId","desc","descId"];function m(e){var t=e.iconSize,n=void 0===t?24:t,r=e.semanticColor,o=e.color,a=(e.title,e.titleId,e.desc,e.descId,(0,u.Z)(e,p));return(0,l.o7)({color:o}),i().createElement(h,Object.assign({role:"img",focusable:"false",height:n,width:n,iconSize:n,viewBox:"0 0 24 24",iconColor:r},a))}function g(e){var t=(0,r.useContext)(o.S9);return(0,o.lR)(o.U0.icon,t)!==o.k3.deprecated?i().createElement(s,e):i().createElement(m,Object.assign({},e,{dangerouslySetInnerHTML:{__html:''}}))}},6668:(e,t,n)=>{"use strict";n.d(t,{l:()=>u});var r=n(7294),i=n.n(r),o=n(6939),a=n(811);function s(e){var t,n,s,u,l=[{size:16,svgContent:""},{size:24,svgContent:""},{size:32,svgContent:""},{size:48,svgContent:""},{size:64,svgContent:""}],c=[{size:16,svgContent:""},{size:24,svgContent:""}],f=(0,r.useContext)(o.S9),d=(0,o.lR)(o.U0.icon,f),h=0===l.length?c:l,p=(0,a.Lr)(d===o.k3.deprecated?h:c,e.iconSize||24);return i().createElement(a.Cn,Object.assign({},e,{viewBox:"0 0 ".concat(p.size," ").concat(p.size),dangerouslySetInnerHTML:{__html:"".concat((s=e.title,u=e.titleId,s?"").concat(s,""):"")).concat((t=e.desc,n=e.descId,t?"").concat(t,""):"")).concat(p.svgContent)}}))}function u(e){return i().createElement(s,e)}},4657:(e,t,n)=>{"use strict";n.d(t,{W:()=>u});var r=n(7294),i=n.n(r),o=n(6939),a=n(811);function s(e){var t,n,s,u,l=[{size:16,svgContent:""},{size:24,svgContent:""},{size:32,svgContent:""},{size:48,svgContent:""},{size:64,svgContent:""}],c=[{size:16,svgContent:""},{size:24,svgContent:""}],f=(0,r.useContext)(o.S9),d=(0,o.lR)(o.U0.icon,f),h=0===l.length?c:l,p=(0,a.Lr)(d===o.k3.deprecated?h:c,e.iconSize||24);return i().createElement(a.Cn,Object.assign({},e,{viewBox:"0 0 ".concat(p.size," ").concat(p.size),dangerouslySetInnerHTML:{__html:"".concat((s=e.title,u=e.titleId,s?"").concat(s,""):"")).concat((t=e.desc,n=e.descId,t?"").concat(t,""):"")).concat(p.svgContent)}}))}function u(e){return i().createElement(s,e)}},8760:(e,t,n)=>{"use strict";n.d(t,{Dy:()=>x});var r=n(9334),i=n(2214),o=n(7294),a=n.n(o),s=n(6939),u=n(3446),l=n(4592),c=n(6613),f={display1:"display1",display2:"display2",heading1:"heading1",heading2:"heading2",heading3:"heading3",heading4:"heading4",body1:"body1",body2:"body2",body3:"body3",body4:"body4",cta1:"cta1",cta2:"cta2",cta3:"cta3",cta4:"cta4"},d={bass:f.display1,forte:f.display2,altoBrio:f.heading1,alto:f.heading2,celloCanon:f.heading3,cello:f.heading4,ballad:f.body1,viola:f.body2,finale:f.body4,metronome:f.cta2,minuetBold:f.cta3,finaleBold:f.cta4};function h(e,t,n){return t===s.k3.deprecated&&d.hasOwnProperty(e)?n||function(e){return d[e]}(e):e}var p=function(e){switch(e){case"display1":return(0,l.yP)();case"display2":return(0,l.Xc)();case"heading1":return(0,l.It)();case"heading2":return(0,l.KD)();case"heading3":return(0,l.Sf)();case"heading4":return(0,l.yE)();case"body1":return(0,l.mZ)();case"body2":return(0,l.Mr)();case"body3":return(0,l.E4)();case"body4":return(0,l.Bk)();case"cta1":return(0,l.Gh)();case"cta2":return(0,l.c_)();case"cta3":return(0,l.D$)();case"cta4":return(0,l.yd)();default:return(0,c.vE)(e)}};var m=n(8804),g=n(8974),y=n(1072),v=n(3384),b=n(2187),_=function(e){switch(e){case"book":return g.tE;case"bold":return g.Y$;case"black":return g.nj;default:return(0,c.vE)(e)}},E=m.ZP.span.withConfig({displayName:"Type__TypeElement",componentId:"goli3j-0"})(["",";"," margin-block-start:0;margin-block-end:0;",";",";"," ",";"],(0,v.D)(),(function(e){return e.isLegacyVariant&&e.as&&"string"==typeof e.as&&["h1","h2","h3","h4","p","li","small"].includes(e.as)&&(0,m.iv)(["display:block;padding:0 0 1em;"])}),(function(e){return e.variant?function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0;switch(e){case"bass":return(0,y.l8)(t);case"forte":return(0,y.Yt)(t,n&&_(n));case"brio":return(0,y.R)(t);case"altoBrio":return(0,y.AH)(t);case"alto":return(0,y.h2)(t);case"canon":return(0,y.xi)(t);case"celloCanon":return(0,y.BS)(t);case"cello":return(0,y.GW)(t);case"ballad":return(0,y.Mp)(t);case"balladBold":return(0,y.Vr)(t);case"viola":return(0,y.Ef)(t);case"violaBold":return(0,y.Dg)(t);case"mesto":return(0,y.Ue)(t);case"mestoBold":return(0,y.I_)(t);case"metronome":return(0,y.As)(t);case"finale":return(0,y.QB)(t);case"finaleBold":return(0,y.VW)(t);case"minuet":return(0,y.gI)(t);case"minuetBold":return(0,y.bx)(t);default:return p(e)}}(e.variant,e.pxLegacy,e.weight):void 0}),(function(e){return e.paddingBottom&&(0,m.iv)(["padding-block-end:",";"],e.paddingBottom)}),(function(e){return e.semanticColor?(0,m.iv)(["color:",";"],(0,b.NE)(e.semanticColor)):(0,m.iv)(["color:inherit;"])}),(function(e){return e.weight&&(0,m.iv)(["font-weight:",";"],_(e.weight))})),w=["color","semanticColor","paddingBottom","pxLegacy","variant","deprecatedVariant","condensed"];function T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function S(e){for(var t=1;t{"use strict";n.d(t,{S9:()=>u,U0:()=>o,k3:()=>i,lR:()=>s});var r=n(7294),i={experimental:"experimental",next:"next",deprecated:"deprecated"},o={type:"type",button:"button",icon:"icon"},a={experimental:[],next:[],deprecated:[]},s=function(e,t){var n=void 0;return Object.keys(i).forEach((function(r){(function(e,t){return t.indexOf(e)>-1})(e,t[r])&&(n=r)})),n},u=n.n(r)().createContext(a);u.displayName="Encore"},3446:(e,t,n)=>{"use strict";function r(e,t){}function i(e,t,n){}function o(e){e.color,e.oldProp,e.newProp,e.additionalInfo}n.d(t,{Zh:()=>r,iw:()=>i,o7:()=>o})},3384:(e,t,n)=>{"use strict";n.d(t,{D:()=>i});var r=n(8804),i=function(){return(0,r.iv)(["box-sizing:border-box;font-family:var(--font-family,spotify-circular),Helvetica,Arial,sans-serif;-webkit-tap-highlight-color:transparent;"])}},4592:(e,t,n)=>{"use strict";n.d(t,{Bk:()=>p,D$:()=>y,E4:()=>h,Gh:()=>m,It:()=>s,KD:()=>u,Mr:()=>d,Sf:()=>l,Xc:()=>a,c_:()=>g,mZ:()=>f,yE:()=>c,yP:()=>o,yd:()=>v});var r=n(3012),i=n(8804),o=function(){return(0,i.iv)(["font-size:",";font-weight:",";letter-spacing:",";line-height:",";padding-bottom:",";@media (min-width:","){font-size:",";line-height:",";letter-spacing:",";}@media (min-width:","){font-size:",";line-height:",";}"],r.dt8.display1FontSizeXSmall,r.dt8.display1FontWeightXSmall,r.dt8.display1LetterSpacingXSmall,r.dt8.display1LineHeightXSmall,r.dt8.display1PaddingBottomXSmall,r.eqR.screenSmMin,r.dt8.display1FontSizeSmall,r.dt8.display1LineHeightSmall,r.dt8.display1LetterSpacingSmall,r.eqR.screenMdMin,r.dt8.display1FontSize,r.dt8.display1LineHeight)},a=function(){return(0,i.iv)(["font-size:",";font-weight:",";letter-spacing:",";line-height:",";padding-bottom:",";@media (min-width:","){font-size:",";line-height:",";letter-spacing:",";}@media (min-width:","){font-size:",";line-height:",";}"],r.dt8.display2FontSizeXSmall,r.dt8.display2FontWeightXSmall,r.dt8.display2LetterSpacingXSmall,r.dt8.display2LineHeightXSmall,r.dt8.display2PaddingBottomXSmall,r.eqR.screenSmMin,r.dt8.display2FontSizeSmall,r.dt8.display2LineHeightSmall,r.dt8.display2LetterSpacingSmall,r.eqR.screenMdMin,r.dt8.display2FontSize,r.dt8.display2LineHeight)},s=function(){return(0,i.iv)(["font-size:",";font-weight:",";letter-spacing:",";line-height:",";padding-bottom:",";@media (min-width:","){font-size:",";line-height:",";}@media (min-width:","){font-size:",";line-height:",";}"],r.dt8.heading1FontSizeXSmall,r.dt8.heading1FontWeightXSmall,r.dt8.heading1LetterSpacingXSmall,r.dt8.heading1LineHeightXSmall,r.dt8.heading1PaddingBottomXSmall,r.eqR.screenSmMin,r.dt8.heading1FontSizeSmall,r.dt8.heading1LineHeightSmall,r.eqR.screenMdMin,r.dt8.heading1FontSize,r.dt8.heading1LineHeight)},u=function(){return(0,i.iv)(["font-size:",";font-weight:",";letter-spacing:",";line-height:",";padding-bottom:",";@media (min-width:","){font-size:",";line-height:",";letter-spacing:",";}"],r.dt8.heading2FontSizeSmall,r.dt8.heading2FontWeightSmall,r.dt8.heading2LetterSpacingSmall,r.dt8.heading2LineHeightSmall,r.dt8.heading2PaddingBottomSmall,r.eqR.screenSmMin,r.dt8.heading2FontSize,r.dt8.heading2LineHeight,r.dt8.heading2LetterSpacing)},l=function(){return(0,i.iv)(["font-size:",";font-weight:",";line-height:",";letter-spacing:",";@media (min-width:","){font-size:",";line-height:",";}"],r.dt8.heading3FontSizeSmall,r.dt8.heading3FontWeightSmall,r.dt8.heading3LineHeightSmall,r.dt8.heading3LetterSpacingSmall,r.eqR.screenSmMin,r.dt8.heading3FontSize,r.dt8.heading3LineHeight)},c=function(){return(0,i.iv)(["",";"],r.kEW)},f=function(){return(0,i.iv)(["",";"],r.KGD)},d=function(){return(0,i.iv)(["",";"],r.TMf)},h=function(){return(0,i.iv)(["",";"],r.w_O)},p=function(){return(0,i.iv)(["",";"],r.URx)},m=function(){return(0,i.iv)(["",";"],r.A2L)},g=function(){return(0,i.iv)(["",";"],r.F4X)},y=function(){return(0,i.iv)(["",";"],r.hcr)},v=function(){return(0,i.iv)(["",";"],r.poE)}},1072:(e,t,n)=>{"use strict";n.d(t,{h2:()=>ee,AH:()=>te,Mp:()=>oe,Vr:()=>ae,l8:()=>Y,R:()=>Q,xi:()=>ne,GW:()=>re,BS:()=>ie,QB:()=>de,VW:()=>he,Yt:()=>Z,Ue:()=>le,I_:()=>ce,As:()=>fe,gI:()=>pe,bx:()=>me,Ef:()=>se,Dg:()=>ue});var r=n(2214),i=n(9334);const o={fontSize:"16px",lineHeight:"24px",fontWeight:400},a={fontSize:"16px",lineHeight:"24px",fontWeight:700},s={fontSize:"14px",lineHeight:"20px",fontWeight:400},u={fontSize:"14px",lineHeight:"20px",fontWeight:700},l={fontSize:"13px",lineHeight:"16px",fontWeight:400},c={fontSize:"13px",lineHeight:"16px",fontWeight:700},f={fontSize:"56px",lineHeight:"56px",letterSpacing:"-0.04em",fontWeight:900},d={fontSize:"48px",lineHeight:"48px",letterSpacing:"-0.04em",fontWeight:700},h={fontSize:"40px",lineHeight:"40px",letterSpacing:"-0.04em",fontWeight:700},p={fontSize:"11px",lineHeight:"16px",fontWeight:400},m={fontSize:"11px",lineHeight:"16px",fontWeight:700},g={fontSize:"10px",lineHeight:"16px",textTransform:"uppercase",letterSpacing:"0.1em",fontWeight:400},y={fontSize:"10px",lineHeight:"16px",textTransform:"uppercase",letterSpacing:"0.1em",fontWeight:700},v={fontSize:"14px",lineHeight:"16px",textTransform:"uppercase",letterSpacing:"0.1em",fontWeight:700},b={fontSize:"32px",lineHeight:"36px",letterSpacing:"-0.04em",fontWeight:700},_={fontSize:"32px",lineHeight:"36px",letterSpacing:"-0.04em",fontWeight:700},E={fontSize:"24px",lineHeight:"28px",letterSpacing:"-0.04em",fontWeight:700},w={fontSize:"18px",lineHeight:"24px",fontWeight:700},T={fontSize:"18px",lineHeight:"24px",fontWeight:700},S={fontSize:"16px",lineHeight:"24px",textTransform:"none",letterSpacing:"normal",fontWeight:400},O={fontSize:"16px",lineHeight:"24px",textTransform:"none",letterSpacing:"normal",fontWeight:700},C={fontSize:"14px",lineHeight:"20px",textTransform:"none",letterSpacing:"normal",fontWeight:400},x={fontSize:"14px",lineHeight:"20px",textTransform:"none",letterSpacing:"normal",fontWeight:700},A={fontSize:"14px",lineHeight:"16px",textTransform:"none",letterSpacing:"normal",fontWeight:400},I={fontSize:"14px",lineHeight:"16px",textTransform:"none",letterSpacing:"normal",fontWeight:700},N={fontSize:"96px",lineHeight:"96px",textTransform:"none",letterSpacing:"-0.04em",fontWeight:900},R={fontSize:"72px",lineHeight:"72px",textTransform:"none",letterSpacing:"-0.04em",fontWeight:900},k={fontSize:"48px",lineHeight:"48px",textTransform:"none",letterSpacing:"-0.04em",fontWeight:700},P={fontSize:"14px",lineHeight:"16px",textTransform:"uppercase",letterSpacing:"0.1em",fontWeight:700},L={fontSize:"12px",lineHeight:"16px",textTransform:"uppercase",letterSpacing:"0.1em",fontWeight:400},D={fontSize:"12px",lineHeight:"16px",textTransform:"uppercase",letterSpacing:"0.1em",fontWeight:700},M={fontSize:"11px",lineHeight:"16px",textTransform:"none",letterSpacing:"normal",fontWeight:400},U={fontSize:"11px",lineHeight:"16px",textTransform:"none",letterSpacing:"normal",fontWeight:700},j={fontSize:"48px",lineHeight:"48px",textTransform:"none",letterSpacing:"-0.04em",fontWeight:700},F={fontSize:"32px",lineHeight:"36px",textTransform:"none",letterSpacing:"-0.04em",fontWeight:700},B={fontSize:"24px",lineHeight:"28px",textTransform:"none",letterSpacing:"-0.04em",fontWeight:700},z={fontSize:"24px",lineHeight:"28px",textTransform:"none",letterSpacing:"-0.04em",fontWeight:700},H={fontSize:"18px",lineHeight:"24px",textTransform:"none",letterSpacing:"normal",fontWeight:700};var W=n(3012),V=n(8804),q=["fontWeight"];function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function G(e){for(var t=1;t2&&void 0!==arguments[2]&&arguments[2],i=(t.fontWeight,(0,r.Z)(t,q));return(0,V.iv)(["",";@media (min-width:","){",";}"],X(e,n),W.eqR.screenSmMin,X(i,n))},Y=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(f,N,e)},Z=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;return(0,V.iv)(["",";@media (min-width:","){",";",";}"],X(d,e),W.eqR.screenSmMin,X(R,e),t&&(0,V.iv)(["font-weight:",";"],t))},Q=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(h,k,e)},ee=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(_,F,e)},te=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(b,j,e)},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(E,B,e)},re=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(T,H,e)},ie=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(w,z,e)},oe=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(o,S,e)},ae=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(a,O,e)},se=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(s,C,e)},ue=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(u,x,e)},le=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(l,A,e)},ce=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(c,I,e)},fe=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(v,P,e)},de=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(p,M,e)},he=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(m,U,e)},pe=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(g,L,e)},me=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return J(y,D,e)}},2187:(e,t,n)=>{"use strict";n.d(t,{NE:()=>m,iK:()=>g});var r=n(9334);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";return Object.entries(t).reduce((function(t,r){var i=o(r,2),a=i[0],s=i[1],l=a;return""!==n&&(l="".concat(n).concat(f(a))),"object"==typeof s?u(u({},t),e(s,l)):"string"==typeof s?(t[l]=s,t):t}),{})};function h(e){return e.replace(/[A-Z0-9]/g,(function(e){return"-".concat(e.toLowerCase())}))}function p(e){return"--".concat(h(e))}function m(e,t){var n=d(c)[e];return t&&(n=t),"var(".concat(p(e),", ").concat(n,")")}var g=u(u(u(u({},{backgroundBase:"backgroundBase",backgroundHighlight:"backgroundHighlight",backgroundPress:"backgroundPress",backgroundElevatedBase:"backgroundElevatedBase",backgroundElevatedHighlight:"backgroundElevatedHighlight",backgroundElevatedPress:"backgroundElevatedPress",backgroundTintedBase:"backgroundTintedBase",backgroundTintedHighlight:"backgroundTintedHighlight",backgroundTintedPress:"backgroundTintedPress",backgroundUnsafeForSmallTextBase:"backgroundUnsafeForSmallTextBase",backgroundUnsafeForSmallTextHighlight:"backgroundUnsafeForSmallTextHighlight",backgroundUnsafeForSmallTextPress:"backgroundUnsafeForSmallTextPress"}),{textBase:"textBase",textSubdued:"textSubdued",textBrightAccent:"textBrightAccent",textNegative:"textNegative",textWarning:"textWarning",textPositive:"textPositive",textAnnouncement:"textAnnouncement"}),{essentialBase:"essentialBase",essentialSubdued:"essentialSubdued",essentialBrightAccent:"essentialBrightAccent",essentialNegative:"essentialNegative",essentialWarning:"essentialWarning",essentialPositive:"essentialPositive",essentialAnnouncement:"essentialAnnouncement"}),{decorativeBase:"decorativeBase",decorativeSubdued:"decorativeSubdued"})},8974:(e,t,n)=>{"use strict";n.d(t,{MQ:()=>u,Y$:()=>o,Zx:()=>s,fn:()=>l,nj:()=>a,tE:()=>i});var r=n(3012),i=400,o=700,a=900,s=r.YhY,u=r.crY,l="not-allowed"},6613:(e,t,n)=>{"use strict";function r(e){throw new Error("Unreachable value")}n.d(t,{vE:()=>r,zg:()=>i});var i=function(e){return parseInt(e,10)}},603:(e,t)=>{"use strict";t.i=void 0,t.i=function(e){return{name:"EventSenderStats2NonAuth",environments:["devicenonauth","browsernonauth","desktopnonauth"],data:e}}},809:(e,t)=>{"use strict";t.t=void 0,t.t=function(e){return{name:"RejectedClientEventNonAuth",environments:["browsernonauth","desktopnonauth","devicenonauth"],data:e}}},9798:(e,t,n)=>{"use strict";function r(e){return{name:"DesktopActionNonAuth",environments:["desktopnonauth"],data:e}}n.d(t,{e:()=>r})},6471:(e,t,n)=>{"use strict";function r(e){return()=>({name:"context_application",data:e})}n.d(t,{UR:()=>r,jx:()=>a,yD:()=>s,IE:()=>u,Hv:()=>l});var i=n(3157);function o(e){if(!e||e.length%2!=0)throw new TypeError("Invalid hexString value.");const t=e.split("").reduce(((e,t,n)=>n%2==0?(e.push(t),e):(e[e.length-1]=`${e[e.length-1]}${t}`,e)),[]),n=String.fromCharCode.apply(null,t.map((e=>{const t=parseInt(e,16);if(isNaN(t))throw new TypeError("Invalid hexString value.");return t})));return i.Base64.encode(n)}function a(e){const t=o(e);return()=>({name:"context_client_id",data:{value:t}})}function s(e){return()=>({name:"context_device",data:e})}function u(e){const t=o(e);return()=>({name:"context_installation_id",data:{value:t}})}function l(e){return()=>({name:"context_os",data:e})}},8510:(e,t,n)=>{"use strict";var r;n.d(t,{mi:()=>P}),function(e){e.BACKEND="BACKEND",e.BROWSER="BROWSER",e.BROWSER_NON_AUTH="BROWSER_NON_AUTH",e.DESKTOP="DESKTOP",e.DEVICE="DEVICE",e.DEVICE_NON_AUTH="DEVICE_NON_AUTH"}(r||(r={}));var i,o=n(3969);!function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.DEBUG=2]="DEBUG",e[e.INFO=4]="INFO",e[e.WARN=8]="WARN",e[e.ERROR=16]="ERROR"}(i||(i={}));const a="true"==={NODE_ENV:"production",DEBUG_EVENT_SENDER:!1,DEBUG_SEMANTIC_METRICS:void 0,PRODUCT_NAME:"desktop"}.DEBUG?class{constructor(e,t="",n=(()=>!1)){this._tagParts=[],this._tagText="",this._enabled=!0,this._level=i.NONE,this.tag="",this.description="",this._predicate=function(){return!1},this.tag=e,this.description=t,this._predicate=n,this._tagParts=e.split("."),this._tagText=`[${e}]`}_print(e,t,n){if(!(this._enabled||this._level&t))return;const r={args:n,type:e,tag:this.tag};this._predicate(r)}matchesTag(e){const t=Array.isArray(e)?e:e.split("."),n=this._tagParts;if(t.length>n.length)return!1;for(let e=0,r=t.length;ee.event_name))},headers:{"content-type":"application/json"},responseType:"json",parseResponseHeaders:!0,payload:JSON.stringify({suppress_persist:this._suppressPersist,events:e}),forget:t,authorize:!t&&this._authorize}).then(this._parseUploadResponse.bind(this,e,t))}_parseUploadResponse(e,t,n){if(t)return Promise.resolve([]);const{body:r,headers:i,status:o}=n,a=this._authorize;if(200!==o||!r)return g.warn("Upload request failed",n),this.emit(p.UPLOAD_REQUEST_FAILED,{authorize:a,status:o}),this._backoff=!0,Promise.resolve(e);const s=[],u=[],l=[];if(r.error&&r.error.length){g.info("response errors",e,r.error);for(let t=0,n=r.error.length;t0&&this.emit(p.UPLOAD_FAILED,{authorize:a,rejected:l,will_retry:u}),f>0&&this.emit(p.UPLOAD_SUCCEEDED,{authorize:this._authorize,num_events:f}),Promise.resolve(s)}upload(e,t=[]){let n=t;if(!e.length)return Promise.resolve({nack:n,backoff:this._backoff});const r=[...e];return this._uploadBatch(r.splice(0,20)).then((e=>{if(n=[...n,...e],this._backoff)n=[...n,...r];else if(r.length)return this.upload(r,n);return{nack:n,backoff:this._backoff}}))}lastUpload(e){return e.length?this._uploadBatch(e.splice(0,100),!0).then((e=>0===e.length),(()=>!1)):Promise.resolve(!0)}shouldBackoff(){return this._backoff}}function b(e){return new v(e)}var _,E=n(2427),w=n(809);!function(e){e.INVALID_PAYLOAD="INVALID_PAYLOAD",e.INVALID_NAME="INVALID_NAME",e.UNKNOWN_OWNER="UNKNOWN_OWNER",e.PAYLOAD_SIZE_LIMIT_EXCEEDED="PAYLOAD_SIZE_LIMIT_EXCEEDED"}(_||(_={}));const T="2.2.0";var S=n(603);class O{static pushToArrIfMissing(e,t){-1===e.indexOf(t)&&e.push(t)}static isMissingFromArray(e,t){return-1===e.indexOf(t)}}class C{_addEventsToEventSenderStatsData(e,t){Object.keys(t).map((n=>{for(let r=0;r{if(O.isMissingFromArray(t.sequence_ids,e))t.sequence_ids.push(e),t.loss_stats_num_entries_per_sequence_id.push(Object.keys(n).length);else{const r=t.sequence_ids.indexOf(e);t.loss_stats_num_entries_per_sequence_id[r]+=Object.keys(n).length}Object.entries(n).map((([e,n])=>{O.pushToArrIfMissing(t.event_names,e);const r=t.event_names.indexOf(e);t.loss_stats_event_name_index.push(r);const i=Object.keys(n);for(let e=0;ee&&t)).catch((()=>!1))}initializeContexts(e){if(!(null==e?void 0:e.length))return;const t=this._instanceContexts;for(const n of e){const e=n();(null==e?void 0:e.name)&&(t[e.name]=e.data)}}initFlush(e){const t=this._uploaders[e].shouldBackoff(),{ceiling:n,maxDuration:r,baseTime:i}=this._backoffTimeSettings;return E.V.init((()=>this.upload(e)),{curve:"exponential",backoffInitial:t,retryPredicate:()=>this._transport.isOnline(),ceiling:n,baseTime:t?n:i,maxDuration:r})}waitForConnection(){return new Promise((e=>{this._transport.once(o.TransportEvent.CONNECTION_ONLINE,(()=>e()))}))}upload(e){return this._uploaders[e].upload(this._events[e].splice(0)).then((t=>{if(t.nack.length)throw this._events[e]=t.nack.concat(this._events[e]),new Error("Backoff requested");return t}))}sendToGabito(e){const t=e?"authorized":"unauthorized";this._transport.isOnline()||this._ongoingUploads[t]||(this._ongoingUploads[t]=this.waitForConnection());const n=this._ongoingUploads[t];if(n)return this._uploadWaiting[t]||(this._uploadWaiting[t]=!0,this._ongoingUploads[t]=n.then((()=>(this._ongoingUploads[t]=!1,this._uploadWaiting[t]=!1,this.sendToGabito(e))))),this._ongoingUploads[t];if(!this._events[t].length)return Promise.resolve({nack:this._events[t],backoff:this._uploaders[t].shouldBackoff()});if(!this._hasFlushed||Date.now()-this._essLastSent.getTime()>18e4){this._hasFlushed=!0;const e=[this.makeEvent(this._statsSender.createESSEvent(this._events,this._sequenceIdGenerator.getAllSequenceNumberCounters(),this._sequenceIdGenerator.getSequenceId()))];this._uploaders.unauthorized.upload(e)}const r=this.initFlush(t).then((e=>(this._ongoingUploads[t]=!1,e))).catch((()=>(this._ongoingUploads[t]=!1,this._transport.isOnline()?(k.consoleLogger.warn(`The events in the queue could not be uploaded. Throwing away ${this._events[t].length} ${t} events.`),this._events[t]=[],{nack:this._events[t],backoff:this._uploaders[t].shouldBackoff()}):this.sendToGabito(e))));return this._ongoingUploads[t]=r,r}storeEvent(e,t){const n=this.makeEvent(t);this._events[e?"authorized":"unauthorized"].push(n)}makeEvent(e){const t=this._sequenceIdGenerator;return{sequence_id:t.getSequenceId(),sequence_number:t.nextSequenceNumber(e.name),event_name:e.name,fragments:Object.assign(Object.assign({context_sdk:{version_name:T,type:"javascript"},context_time:{timestamp:Date.now()}},this._instanceContexts),{message:e.data})}}validateEventData(e,t,n){let r=null;if(e.name){if(function(e){let t=e.length,n=t;for(;n--;){const r=e.charCodeAt(n);r>127&&r<=2047?t++:r>2047&&r<=65535&&(t+=2),r>=56320&&r<=57343&&n--}return t}(JSON.stringify(e.data))>5e3)r=_.PAYLOAD_SIZE_LIMIT_EXCEEDED;else if(t&&n&&!n())return _.UNKNOWN_OWNER}else r=_.INVALID_NAME;return r||null}checkIsEventAuthorized(e){return!e.endsWith("NonAuth")}flush(e=!0){return this.sendToGabito(e).then((()=>{})).catch((()=>{}))}flushAll(){return Promise.all([this.sendToGabito(!0),this.sendToGabito(!1)]).then((()=>{})).catch((()=>{}))}finalFlush(){return this.uploadFlush()}log(e,t={}){this.send(e,t)}send(e,{flush:t=!0}={}){const n=this.checkIsEventAuthorized(e.name);let r=this.validateEventData(e,n,this._ownerProvider);if(r===_.UNKNOWN_OWNER&&(k.consoleLogger.warn(`Trying to send an authenticated event without a current owner: ${e.name}`),r=null),r){const t=(0,w.t)({event_name:e.name,reject_reason:r});return this.storeEvent(!1,t),Promise.reject(new TypeError(`The event is invalid and has been rejected for reason: ${r}`))}return this.storeEvent(n,e),t?this.flush(n):Promise.resolve()}hasContext(...e){return e.every((e=>!!this._instanceContexts[e]))}}function P(e){const t={suppressPersist:e.suppressPersist,transport:e.transport};return new k(Object.assign(Object.assign({},e),{uploaders:{authorized:b(t),unauthorized:b(Object.assign(Object.assign({},t),{authorize:!1}))}}))}k.consoleLogger=h("EventSender")},4131:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.silly=t.verbose=t.debug=t.info=t.warn=t.error=t.log=t.logger=t.default=void 0;var i=n(2313);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r(i).default}}),Object.defineProperty(t,"logger",{enumerable:!0,get:function(){return i.logger}}),Object.defineProperty(t,"log",{enumerable:!0,get:function(){return i.log}}),Object.defineProperty(t,"error",{enumerable:!0,get:function(){return i.error}}),Object.defineProperty(t,"warn",{enumerable:!0,get:function(){return i.warn}}),Object.defineProperty(t,"info",{enumerable:!0,get:function(){return i.info}}),Object.defineProperty(t,"debug",{enumerable:!0,get:function(){return i.debug}}),Object.defineProperty(t,"verbose",{enumerable:!0,get:function(){return i.verbose}}),Object.defineProperty(t,"silly",{enumerable:!0,get:function(){return i.silly}})},2313:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.silly=t.verbose=t.debug=t.info=t.warn=t.error=t.log=t.logger=void 0,t.logger={log:(...e)=>{},error:(...e)=>{},warn:(...e)=>{},info:(...e)=>{},debug:(...e)=>{},verbose:(...e)=>{},silly:(...e)=>{}},t.default=t.logger,t.log=t.logger.log.bind(t.logger),t.error=t.logger.error.bind(t.logger),t.warn=t.logger.warn.bind(t.logger),t.info=t.logger.info.bind(t.logger),t.debug=t.logger.debug.bind(t.logger),t.verbose=t.logger.verbose.bind(t.logger),t.silly=t.logger.silly.bind(t.logger)},8821:(e,t,n)=>{"use strict";n.d(t,{Op:()=>V});var r=n(9713),i=n.n(r),o=n(3720),a=n.n(o),s=n(2100),u=n.n(s);let l;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.BLOCKED=1]="BLOCKED",e[e.VIEWER=2]="VIEWER",e[e.CONTRIBUTOR=3]="CONTRIBUTOR",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"}(l||(l={}));var c=(()=>{if(void 0!==c)return c;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw"Unable to locate global object"})();c.atob;c.btoa;function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t(""!==e.uri&&t.uint32(10).string(e.uri),void 0!==e.attributes&&A.encode(e.attributes,t.uint32(18).fork()).ldelim(),t),decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},b);for(;n.pos>>3){case 1:i.uri=n.string();break;case 2:i.attributes=A.decode(n,n.uint32());break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},b);return void 0!==e.uri&&null!==e.uri?t.uri=String(e.uri):t.uri="",void 0!==e.attributes&&null!==e.attributes?t.attributes=A.fromJSON(e.attributes):t.attributes=void 0,t},toJSON(e){const t={};return void 0!==e.uri&&(t.uri=e.uri),void 0!==e.attributes&&(t.attributes=e.attributes?A.toJSON(e.attributes):void 0),t},fromPartial(e){const t=d({},b);return void 0!==e.uri&&null!==e.uri?t.uri=e.uri:t.uri="",void 0!==e.attributes&&null!==e.attributes?t.attributes=A.fromPartial(e.attributes):t.attributes=void 0,t}},E={key:"",value:""},w={encode:(e,t=u().Writer.create())=>(""!==e.key&&t.uint32(10).string(e.key),""!==e.value&&t.uint32(18).string(e.value),t),decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},E);for(;n.pos>>3){case 1:i.key=n.string();break;case 2:i.value=n.string();break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},E);return void 0!==e.key&&null!==e.key?t.key=String(e.key):t.key="",void 0!==e.value&&null!==e.value?t.value=String(e.value):t.value="",t},toJSON(e){const t={};return void 0!==e.key&&(t.key=e.key),void 0!==e.value&&(t.value=e.value),t},fromPartial(e){const t=d({},E);return void 0!==e.key&&null!==e.key?t.key=e.key:t.key="",void 0!==e.value&&null!==e.value?t.value=e.value:t.value="",t}},T={targetName:"",url:""},S={encode:(e,t=u().Writer.create())=>(""!==e.targetName&&t.uint32(10).string(e.targetName),""!==e.url&&t.uint32(18).string(e.url),t),decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},T);for(;n.pos>>3){case 1:i.targetName=n.string();break;case 2:i.url=n.string();break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},T);return void 0!==e.targetName&&null!==e.targetName?t.targetName=String(e.targetName):t.targetName="",void 0!==e.url&&null!==e.url?t.url=String(e.url):t.url="",t},toJSON(e){const t={};return void 0!==e.targetName&&(t.targetName=e.targetName),void 0!==e.url&&(t.url=e.url),t},fromPartial(e){const t=d({},T);return void 0!==e.targetName&&null!==e.targetName?t.targetName=e.targetName:t.targetName="",void 0!==e.url&&null!==e.url?t.url=e.url:t.url="",t}},O={name:"",description:"",collaborative:!1,pl3Version:"",deletedByOwner:!1,clientId:"",format:""},C={encode(e,t=u().Writer.create()){""!==e.name&&t.uint32(10).string(e.name),""!==e.description&&t.uint32(18).string(e.description),0!==e.picture.length&&t.uint32(26).bytes(e.picture),!0===e.collaborative&&t.uint32(32).bool(e.collaborative),""!==e.pl3Version&&t.uint32(42).string(e.pl3Version),!0===e.deletedByOwner&&t.uint32(48).bool(e.deletedByOwner),""!==e.clientId&&t.uint32(82).string(e.clientId),""!==e.format&&t.uint32(90).string(e.format);for(const n of e.formatAttributes)w.encode(n,t.uint32(98).fork()).ldelim();for(const n of e.pictureSize)S.encode(n,t.uint32(106).fork()).ldelim();return t},decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},O);for(i.formatAttributes=[],i.pictureSize=[],i.picture=new Uint8Array;n.pos>>3){case 1:i.name=n.string();break;case 2:i.description=n.string();break;case 3:i.picture=n.bytes();break;case 4:i.collaborative=n.bool();break;case 5:i.pl3Version=n.string();break;case 6:i.deletedByOwner=n.bool();break;case 10:i.clientId=n.string();break;case 11:i.format=n.string();break;case 12:i.formatAttributes.push(w.decode(n,n.uint32()));break;case 13:i.pictureSize.push(S.decode(n,n.uint32()));break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},O);if(t.formatAttributes=[],t.pictureSize=[],t.picture=new Uint8Array,void 0!==e.name&&null!==e.name?t.name=String(e.name):t.name="",void 0!==e.description&&null!==e.description?t.description=String(e.description):t.description="",void 0!==e.picture&&null!==e.picture&&(t.picture=G(e.picture)),void 0!==e.collaborative&&null!==e.collaborative?t.collaborative=Boolean(e.collaborative):t.collaborative=!1,void 0!==e.pl3Version&&null!==e.pl3Version?t.pl3Version=String(e.pl3Version):t.pl3Version="",void 0!==e.deletedByOwner&&null!==e.deletedByOwner?t.deletedByOwner=Boolean(e.deletedByOwner):t.deletedByOwner=!1,void 0!==e.clientId&&null!==e.clientId?t.clientId=String(e.clientId):t.clientId="",void 0!==e.format&&null!==e.format?t.format=String(e.format):t.format="",void 0!==e.formatAttributes&&null!==e.formatAttributes)for(const n of e.formatAttributes)t.formatAttributes.push(w.fromJSON(n));if(void 0!==e.pictureSize&&null!==e.pictureSize)for(const n of e.pictureSize)t.pictureSize.push(S.fromJSON(n));return t},toJSON(e){const t={};return void 0!==e.name&&(t.name=e.name),void 0!==e.description&&(t.description=e.description),void 0!==e.picture&&(t.picture=X(void 0!==e.picture?e.picture:new Uint8Array)),void 0!==e.collaborative&&(t.collaborative=e.collaborative),void 0!==e.pl3Version&&(t.pl3Version=e.pl3Version),void 0!==e.deletedByOwner&&(t.deletedByOwner=e.deletedByOwner),void 0!==e.clientId&&(t.clientId=e.clientId),void 0!==e.format&&(t.format=e.format),e.formatAttributes?t.formatAttributes=e.formatAttributes.map((e=>e?w.toJSON(e):void 0)):t.formatAttributes=[],e.pictureSize?t.pictureSize=e.pictureSize.map((e=>e?S.toJSON(e):void 0)):t.pictureSize=[],t},fromPartial(e){const t=d({},O);if(t.formatAttributes=[],t.pictureSize=[],void 0!==e.name&&null!==e.name?t.name=e.name:t.name="",void 0!==e.description&&null!==e.description?t.description=e.description:t.description="",void 0!==e.picture&&null!==e.picture?t.picture=e.picture:t.picture=new Uint8Array,void 0!==e.collaborative&&null!==e.collaborative?t.collaborative=e.collaborative:t.collaborative=!1,void 0!==e.pl3Version&&null!==e.pl3Version?t.pl3Version=e.pl3Version:t.pl3Version="",void 0!==e.deletedByOwner&&null!==e.deletedByOwner?t.deletedByOwner=e.deletedByOwner:t.deletedByOwner=!1,void 0!==e.clientId&&null!==e.clientId?t.clientId=e.clientId:t.clientId="",void 0!==e.format&&null!==e.format?t.format=e.format:t.format="",void 0!==e.formatAttributes&&null!==e.formatAttributes)for(const n of e.formatAttributes)t.formatAttributes.push(w.fromPartial(n));if(void 0!==e.pictureSize&&null!==e.pictureSize)for(const n of e.pictureSize)t.pictureSize.push(S.fromPartial(n));return t}},x={addedBy:"",timestamp:"0",seenAt:"0",public:!1},A={encode(e,t=u().Writer.create()){""!==e.addedBy&&t.uint32(10).string(e.addedBy),"0"!==e.timestamp&&t.uint32(16).int64(e.timestamp),"0"!==e.seenAt&&t.uint32(72).int64(e.seenAt),!0===e.public&&t.uint32(80).bool(e.public);for(const n of e.formatAttributes)w.encode(n,t.uint32(90).fork()).ldelim();return 0!==e.itemId.length&&t.uint32(98).bytes(e.itemId),t},decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},x);for(i.formatAttributes=[],i.itemId=new Uint8Array;n.pos>>3){case 1:i.addedBy=n.string();break;case 2:i.timestamp=J(n.int64());break;case 9:i.seenAt=J(n.int64());break;case 10:i.public=n.bool();break;case 11:i.formatAttributes.push(w.decode(n,n.uint32()));break;case 12:i.itemId=n.bytes();break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},x);if(t.formatAttributes=[],t.itemId=new Uint8Array,void 0!==e.addedBy&&null!==e.addedBy?t.addedBy=String(e.addedBy):t.addedBy="",void 0!==e.timestamp&&null!==e.timestamp?t.timestamp=String(e.timestamp):t.timestamp="0",void 0!==e.seenAt&&null!==e.seenAt?t.seenAt=String(e.seenAt):t.seenAt="0",void 0!==e.public&&null!==e.public?t.public=Boolean(e.public):t.public=!1,void 0!==e.formatAttributes&&null!==e.formatAttributes)for(const n of e.formatAttributes)t.formatAttributes.push(w.fromJSON(n));return void 0!==e.itemId&&null!==e.itemId&&(t.itemId=G(e.itemId)),t},toJSON(e){const t={};return void 0!==e.addedBy&&(t.addedBy=e.addedBy),void 0!==e.timestamp&&(t.timestamp=e.timestamp),void 0!==e.seenAt&&(t.seenAt=e.seenAt),void 0!==e.public&&(t.public=e.public),e.formatAttributes?t.formatAttributes=e.formatAttributes.map((e=>e?w.toJSON(e):void 0)):t.formatAttributes=[],void 0!==e.itemId&&(t.itemId=X(void 0!==e.itemId?e.itemId:new Uint8Array)),t},fromPartial(e){const t=d({},x);if(t.formatAttributes=[],void 0!==e.addedBy&&null!==e.addedBy?t.addedBy=e.addedBy:t.addedBy="",void 0!==e.timestamp&&null!==e.timestamp?t.timestamp=e.timestamp:t.timestamp="0",void 0!==e.seenAt&&null!==e.seenAt?t.seenAt=e.seenAt:t.seenAt="0",void 0!==e.public&&null!==e.public?t.public=e.public:t.public=!1,void 0!==e.formatAttributes&&null!==e.formatAttributes)for(const n of e.formatAttributes)t.formatAttributes.push(w.fromPartial(n));return void 0!==e.itemId&&null!==e.itemId?t.itemId=e.itemId:t.itemId=new Uint8Array,t}},I={fromIndex:0,addLast:!1,addFirst:!1},N={encode(e,t=u().Writer.create()){0!==e.fromIndex&&t.uint32(8).int32(e.fromIndex);for(const n of e.items)_.encode(n,t.uint32(18).fork()).ldelim();return!0===e.addLast&&t.uint32(32).bool(e.addLast),!0===e.addFirst&&t.uint32(40).bool(e.addFirst),t},decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},I);for(i.items=[];n.pos>>3){case 1:i.fromIndex=n.int32();break;case 2:i.items.push(_.decode(n,n.uint32()));break;case 4:i.addLast=n.bool();break;case 5:i.addFirst=n.bool();break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},I);if(t.items=[],void 0!==e.fromIndex&&null!==e.fromIndex?t.fromIndex=Number(e.fromIndex):t.fromIndex=0,void 0!==e.items&&null!==e.items)for(const n of e.items)t.items.push(_.fromJSON(n));return void 0!==e.addLast&&null!==e.addLast?t.addLast=Boolean(e.addLast):t.addLast=!1,void 0!==e.addFirst&&null!==e.addFirst?t.addFirst=Boolean(e.addFirst):t.addFirst=!1,t},toJSON(e){const t={};return void 0!==e.fromIndex&&(t.fromIndex=e.fromIndex),e.items?t.items=e.items.map((e=>e?_.toJSON(e):void 0)):t.items=[],void 0!==e.addLast&&(t.addLast=e.addLast),void 0!==e.addFirst&&(t.addFirst=e.addFirst),t},fromPartial(e){const t=d({},I);if(t.items=[],void 0!==e.fromIndex&&null!==e.fromIndex?t.fromIndex=e.fromIndex:t.fromIndex=0,void 0!==e.items&&null!==e.items)for(const n of e.items)t.items.push(_.fromPartial(n));return void 0!==e.addLast&&null!==e.addLast?t.addLast=e.addLast:t.addLast=!1,void 0!==e.addFirst&&null!==e.addFirst?t.addFirst=e.addFirst:t.addFirst=!1,t}},R={fromIndex:0,length:0,itemsAsKey:!1},k={encode(e,t=u().Writer.create()){0!==e.fromIndex&&t.uint32(8).int32(e.fromIndex),0!==e.length&&t.uint32(16).int32(e.length);for(const n of e.items)_.encode(n,t.uint32(26).fork()).ldelim();return!0===e.itemsAsKey&&t.uint32(56).bool(e.itemsAsKey),t},decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},R);for(i.items=[];n.pos>>3){case 1:i.fromIndex=n.int32();break;case 2:i.length=n.int32();break;case 3:i.items.push(_.decode(n,n.uint32()));break;case 7:i.itemsAsKey=n.bool();break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},R);if(t.items=[],void 0!==e.fromIndex&&null!==e.fromIndex?t.fromIndex=Number(e.fromIndex):t.fromIndex=0,void 0!==e.length&&null!==e.length?t.length=Number(e.length):t.length=0,void 0!==e.items&&null!==e.items)for(const n of e.items)t.items.push(_.fromJSON(n));return void 0!==e.itemsAsKey&&null!==e.itemsAsKey?t.itemsAsKey=Boolean(e.itemsAsKey):t.itemsAsKey=!1,t},toJSON(e){const t={};return void 0!==e.fromIndex&&(t.fromIndex=e.fromIndex),void 0!==e.length&&(t.length=e.length),e.items?t.items=e.items.map((e=>e?_.toJSON(e):void 0)):t.items=[],void 0!==e.itemsAsKey&&(t.itemsAsKey=e.itemsAsKey),t},fromPartial(e){const t=d({},R);if(t.items=[],void 0!==e.fromIndex&&null!==e.fromIndex?t.fromIndex=e.fromIndex:t.fromIndex=0,void 0!==e.length&&null!==e.length?t.length=e.length:t.length=0,void 0!==e.items&&null!==e.items)for(const n of e.items)t.items.push(_.fromPartial(n));return void 0!==e.itemsAsKey&&null!==e.itemsAsKey?t.itemsAsKey=e.itemsAsKey:t.itemsAsKey=!1,t}},P={fromIndex:0,length:0,toIndex:0},L={encode:(e,t=u().Writer.create())=>(0!==e.fromIndex&&t.uint32(8).int32(e.fromIndex),0!==e.length&&t.uint32(16).int32(e.length),0!==e.toIndex&&t.uint32(24).int32(e.toIndex),t),decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},P);for(;n.pos>>3){case 1:i.fromIndex=n.int32();break;case 2:i.length=n.int32();break;case 3:i.toIndex=n.int32();break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},P);return void 0!==e.fromIndex&&null!==e.fromIndex?t.fromIndex=Number(e.fromIndex):t.fromIndex=0,void 0!==e.length&&null!==e.length?t.length=Number(e.length):t.length=0,void 0!==e.toIndex&&null!==e.toIndex?t.toIndex=Number(e.toIndex):t.toIndex=0,t},toJSON(e){const t={};return void 0!==e.fromIndex&&(t.fromIndex=e.fromIndex),void 0!==e.length&&(t.length=e.length),void 0!==e.toIndex&&(t.toIndex=e.toIndex),t},fromPartial(e){const t=d({},P);return void 0!==e.fromIndex&&null!==e.fromIndex?t.fromIndex=e.fromIndex:t.fromIndex=0,void 0!==e.length&&null!==e.length?t.length=e.length:t.length=0,void 0!==e.toIndex&&null!==e.toIndex?t.toIndex=e.toIndex:t.toIndex=0,t}},D={noValue:0},M={encode(e,t=u().Writer.create()){void 0!==e.values&&A.encode(e.values,t.uint32(10).fork()).ldelim(),t.uint32(18).fork();for(const n of e.noValue)t.int32(n);return t.ldelim(),t},decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},D);for(i.noValue=[];n.pos>>3){case 1:i.values=A.decode(n,n.uint32());break;case 2:if(2==(7&e)){const e=n.uint32()+n.pos;for(;n.posfunction(e){switch(e){case p.ITEM_UNKNOWN:return"ITEM_UNKNOWN";case p.ITEM_ADDED_BY:return"ITEM_ADDED_BY";case p.ITEM_TIMESTAMP:return"ITEM_TIMESTAMP";case p.ITEM_SEEN_AT:return"ITEM_SEEN_AT";case p.ITEM_PUBLIC:return"ITEM_PUBLIC";case p.ITEM_FORMAT_ATTRIBUTES:return"ITEM_FORMAT_ATTRIBUTES";case p.ITEM_ID:return"ITEM_ID";default:return"UNKNOWN"}}(e))):t.noValue=[],t},fromPartial(e){const t=d({},D);if(t.noValue=[],void 0!==e.values&&null!==e.values?t.values=A.fromPartial(e.values):t.values=void 0,void 0!==e.noValue&&null!==e.noValue)for(const n of e.noValue)t.noValue.push(n);return t}},U={noValue:0},j={encode(e,t=u().Writer.create()){void 0!==e.values&&C.encode(e.values,t.uint32(10).fork()).ldelim(),t.uint32(18).fork();for(const n of e.noValue)t.int32(n);return t.ldelim(),t},decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},U);for(i.noValue=[];n.pos>>3){case 1:i.values=C.decode(n,n.uint32());break;case 2:if(2==(7&e)){const e=n.uint32()+n.pos;for(;n.posfunction(e){switch(e){case h.LIST_UNKNOWN:return"LIST_UNKNOWN";case h.LIST_NAME:return"LIST_NAME";case h.LIST_DESCRIPTION:return"LIST_DESCRIPTION";case h.LIST_PICTURE:return"LIST_PICTURE";case h.LIST_COLLABORATIVE:return"LIST_COLLABORATIVE";case h.LIST_PL3_VERSION:return"LIST_PL3_VERSION";case h.LIST_DELETED_BY_OWNER:return"LIST_DELETED_BY_OWNER";case h.LIST_CLIENT_ID:return"LIST_CLIENT_ID";case h.LIST_FORMAT:return"LIST_FORMAT";case h.LIST_FORMAT_ATTRIBUTES:return"LIST_FORMAT_ATTRIBUTES";case h.LIST_PICTURE_SIZE:return"LIST_PICTURE_SIZE";default:return"UNKNOWN"}}(e))):t.noValue=[],t},fromPartial(e){const t=d({},U);if(t.noValue=[],void 0!==e.values&&null!==e.values?t.values=C.fromPartial(e.values):t.values=void 0,void 0!==e.noValue&&null!==e.noValue)for(const n of e.noValue)t.noValue.push(n);return t}},F={index:0},B={encode:(e,t=u().Writer.create())=>(0!==e.index&&t.uint32(8).int32(e.index),void 0!==e.newAttributes&&M.encode(e.newAttributes,t.uint32(18).fork()).ldelim(),void 0!==e.oldAttributes&&M.encode(e.oldAttributes,t.uint32(26).fork()).ldelim(),t),decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},F);for(;n.pos>>3){case 1:i.index=n.int32();break;case 2:i.newAttributes=M.decode(n,n.uint32());break;case 3:i.oldAttributes=M.decode(n,n.uint32());break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},F);return void 0!==e.index&&null!==e.index?t.index=Number(e.index):t.index=0,void 0!==e.newAttributes&&null!==e.newAttributes?t.newAttributes=M.fromJSON(e.newAttributes):t.newAttributes=void 0,void 0!==e.oldAttributes&&null!==e.oldAttributes?t.oldAttributes=M.fromJSON(e.oldAttributes):t.oldAttributes=void 0,t},toJSON(e){const t={};return void 0!==e.index&&(t.index=e.index),void 0!==e.newAttributes&&(t.newAttributes=e.newAttributes?M.toJSON(e.newAttributes):void 0),void 0!==e.oldAttributes&&(t.oldAttributes=e.oldAttributes?M.toJSON(e.oldAttributes):void 0),t},fromPartial(e){const t=d({},F);return void 0!==e.index&&null!==e.index?t.index=e.index:t.index=0,void 0!==e.newAttributes&&null!==e.newAttributes?t.newAttributes=M.fromPartial(e.newAttributes):t.newAttributes=void 0,void 0!==e.oldAttributes&&null!==e.oldAttributes?t.oldAttributes=M.fromPartial(e.oldAttributes):t.oldAttributes=void 0,t}},z={},H={encode:(e,t=u().Writer.create())=>(void 0!==e.newAttributes&&j.encode(e.newAttributes,t.uint32(10).fork()).ldelim(),void 0!==e.oldAttributes&&j.encode(e.oldAttributes,t.uint32(18).fork()).ldelim(),t),decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},z);for(;n.pos>>3){case 1:i.newAttributes=j.decode(n,n.uint32());break;case 2:i.oldAttributes=j.decode(n,n.uint32());break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},z);return void 0!==e.newAttributes&&null!==e.newAttributes?t.newAttributes=j.fromJSON(e.newAttributes):t.newAttributes=void 0,void 0!==e.oldAttributes&&null!==e.oldAttributes?t.oldAttributes=j.fromJSON(e.oldAttributes):t.oldAttributes=void 0,t},toJSON(e){const t={};return void 0!==e.newAttributes&&(t.newAttributes=e.newAttributes?j.toJSON(e.newAttributes):void 0),void 0!==e.oldAttributes&&(t.oldAttributes=e.oldAttributes?j.toJSON(e.oldAttributes):void 0),t},fromPartial(e){const t=d({},z);return void 0!==e.newAttributes&&null!==e.newAttributes?t.newAttributes=j.fromPartial(e.newAttributes):t.newAttributes=void 0,void 0!==e.oldAttributes&&null!==e.oldAttributes?t.oldAttributes=j.fromPartial(e.oldAttributes):t.oldAttributes=void 0,t}},W={kind:0},V={encode:(e,t=u().Writer.create())=>(0!==e.kind&&t.uint32(8).int32(e.kind),void 0!==e.add&&N.encode(e.add,t.uint32(18).fork()).ldelim(),void 0!==e.rem&&k.encode(e.rem,t.uint32(26).fork()).ldelim(),void 0!==e.mov&&L.encode(e.mov,t.uint32(34).fork()).ldelim(),void 0!==e.updateItemAttributes&&B.encode(e.updateItemAttributes,t.uint32(42).fork()).ldelim(),void 0!==e.updateListAttributes&&H.encode(e.updateListAttributes,t.uint32(50).fork()).ldelim(),t),decode(e,t){const n=e instanceof u().Reader?e:new(u().Reader)(e);let r=void 0===t?n.len:n.pos+t;const i=d({},W);for(;n.pos>>3){case 1:i.kind=n.int32();break;case 2:i.add=N.decode(n,n.uint32());break;case 3:i.rem=k.decode(n,n.uint32());break;case 4:i.mov=L.decode(n,n.uint32());break;case 5:i.updateItemAttributes=B.decode(n,n.uint32());break;case 6:i.updateListAttributes=H.decode(n,n.uint32());break;default:n.skipType(7&e)}}return i},fromJSON(e){const t=d({},W);return void 0!==e.kind&&null!==e.kind?t.kind=function(e){switch(e){case 0:case"KIND_UNKNOWN":return m.KIND_UNKNOWN;case 2:case"ADD":return m.ADD;case 3:case"REM":return m.REM;case 4:case"MOV":return m.MOV;case 5:case"UPDATE_ITEM_ATTRIBUTES":return m.UPDATE_ITEM_ATTRIBUTES;case 6:case"UPDATE_LIST_ATTRIBUTES":return m.UPDATE_LIST_ATTRIBUTES;default:return m.UNRECOGNIZED}}(e.kind):t.kind=0,void 0!==e.add&&null!==e.add?t.add=N.fromJSON(e.add):t.add=void 0,void 0!==e.rem&&null!==e.rem?t.rem=k.fromJSON(e.rem):t.rem=void 0,void 0!==e.mov&&null!==e.mov?t.mov=L.fromJSON(e.mov):t.mov=void 0,void 0!==e.updateItemAttributes&&null!==e.updateItemAttributes?t.updateItemAttributes=B.fromJSON(e.updateItemAttributes):t.updateItemAttributes=void 0,void 0!==e.updateListAttributes&&null!==e.updateListAttributes?t.updateListAttributes=H.fromJSON(e.updateListAttributes):t.updateListAttributes=void 0,t},toJSON(e){const t={};return void 0!==e.kind&&(t.kind=function(e){switch(e){case m.KIND_UNKNOWN:return"KIND_UNKNOWN";case m.ADD:return"ADD";case m.REM:return"REM";case m.MOV:return"MOV";case m.UPDATE_ITEM_ATTRIBUTES:return"UPDATE_ITEM_ATTRIBUTES";case m.UPDATE_LIST_ATTRIBUTES:return"UPDATE_LIST_ATTRIBUTES";default:return"UNKNOWN"}}(e.kind)),void 0!==e.add&&(t.add=e.add?N.toJSON(e.add):void 0),void 0!==e.rem&&(t.rem=e.rem?k.toJSON(e.rem):void 0),void 0!==e.mov&&(t.mov=e.mov?L.toJSON(e.mov):void 0),void 0!==e.updateItemAttributes&&(t.updateItemAttributes=e.updateItemAttributes?B.toJSON(e.updateItemAttributes):void 0),void 0!==e.updateListAttributes&&(t.updateListAttributes=e.updateListAttributes?H.toJSON(e.updateListAttributes):void 0),t},fromPartial(e){const t=d({},W);return void 0!==e.kind&&null!==e.kind?t.kind=e.kind:t.kind=0,void 0!==e.add&&null!==e.add?t.add=N.fromPartial(e.add):t.add=void 0,void 0!==e.rem&&null!==e.rem?t.rem=k.fromPartial(e.rem):t.rem=void 0,void 0!==e.mov&&null!==e.mov?t.mov=L.fromPartial(e.mov):t.mov=void 0,void 0!==e.updateItemAttributes&&null!==e.updateItemAttributes?t.updateItemAttributes=B.fromPartial(e.updateItemAttributes):t.updateItemAttributes=void 0,void 0!==e.updateListAttributes&&null!==e.updateListAttributes?t.updateListAttributes=H.fromPartial(e.updateListAttributes):t.updateListAttributes=void 0,t}};var q=(()=>{if(void 0!==q)return q;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw"Unable to locate global object"})();const $=q.atob||(e=>q.Buffer.from(e,"base64").toString("binary"));function G(e){const t=$(e),n=new Uint8Array(t.length);for(let e=0;eq.Buffer.from(e,"binary").toString("base64"));function X(e){const t=[];for(let n=0;n{"use strict";n(9713);var r=n(3720),i=n.n(r),o=n(2100),a=n.n(o);n(8821);var s=(()=>{if(void 0!==s)return s;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw"Unable to locate global object"})();s.atob;s.btoa;a().util.Long!==i()&&(a().util.Long=i(),a().configure())},4913:(e,t,n)=>{"use strict";n.d(t,{g$:()=>u,kI:()=>i});var r=n(5361);function i(e){let t=!0;const n=(0,r.h64)();return o((e=>{n.update(e),t=!1}),e),t?void 0:n.digest().toString(16)}function o(e,t){switch(typeof t){case"boolean":!function(e,t){e(`boolean:${t}`)}(e,t);break;case"number":!function(e,t){e(`number:${t}`)}(e,t);break;case"string":!function(e,t){e(`string:${t.length}:${t}`)}(e,t);break;case"object":if(null===t){a(e);break}if(Array.isArray(t)){!function(e,t){e(`array:${t.length}:`);for(const n of t)void 0===n?a(e):o(e,n)}(e,t);break}if("function"==typeof t.toJSON){o(e,t.toJSON());break}!function(e,t){const n=Object.keys(t).filter((e=>void 0!==t[e]));n.sort(),e(`object:${n.length}:`);for(const r of n)e(`${r}:`),o(e,t[r])}(e,t)}}function a(e){e("null")}var s=n(5777);function u(e){return(0,s.debug)(`remote-config:${e}`)}},7577:(e,t,n)=>{"use strict";var r=n(7294),i=n(3578);new i.VK.Delegate((()=>{throw new Error("Please wrap your component in RemoteConfig Provider")}));n(4913);i.VK.Delegate},3578:(e,t,n)=>{"use strict";n.d(t,{VK:()=>v,JP:()=>p,VL:()=>g,z8:()=>m});var r=n(4913),i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);ie.upper)throw new TypeError(`Expected value in range [${e.lower},${e.upper}]`);break;case"internal":break;default:throw new TypeError(`Unknown property type "${e.type}"`)}}e.match=function(e){return t=>{var{type:n}=t,r=i(t,["type"]);return e[n](r)}},e.assertValue=t,e.validateValue=function(e,n){try{return t(e,n),!0}catch(e){return!1}},e.getPropertySetId=function(e,t){const n=Array.from(t).reduce(((e,t)=>{var{name:n}=t,r=i(t,["name"]);return Object.assign(Object.assign({},e),{[n]:r})}),{});return o("Property Source",n,e),(0,r.kI)([e,n])}}(a||(a={}));var s=n(4063),u=n.n(s),l=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);ir(void 0,void 0,void 0,(function*(){if(Array.isArray(t.reporter)){const n=t.reporter.map((t=>t.send(e)));yield Promise.all(n)}else yield t.reporter.send(e)}));t.reportMetrics=s;const u=e=>{void 0!==e.dev&&e.dev&&(e.reporter=new a.ConsoleReporter);const t={queue:[],timeout:void 0,flush(){s(this.queue,e),this.queue=[],this.timeout=void 0}};let n=!1;void 0===e.batching&&(e.batching={delay:4e3}),e.batching&&"object"==typeof window&&"function"==typeof window.addEventListener&&window.addEventListener("beforeunload",(()=>{n=!0,t.flush()}));return{sendMetric:i=>r(void 0,void 0,void 0,(function*(){var r,o;const a=Object.assign({},i);if(i.tags&&(a.tags=Object.assign({},i.tags)),a.key=a.key||e.key,!a.key)throw new Error(`metric.key is required. Got: "${a.key}". Set it in createSemanticMetrics(...) or pass it to sendMetric(...).`);a.tags=Object.assign({app:null!==(r=e.app)&&void 0!==r?r:a.key,application:null!==(o=e.app)&&void 0!==o?o:a.key},a.tags),e.component_id?a.component_id=a.component_id||e.component_id:a.component_id=e.key,e.batching&&!n?(t.queue.push(a),t.timeout||(t.timeout=setTimeout((()=>t.flush()),e.batching.delay))):yield s([a],e)})),config:e,isWindowUnloading:n}};t.createSemanticMetrics=u;class l{static init(e){l.config&&o.default.error("SemanticMetrics has already been initialized. This may lead to dangerous side effects such as your metrics disappearing from Grafana due to the `key` value being overwritten by something else"),o.default.warn("The singleton usage of SemanticMetrics will be deprecated. Please use createSemanticMetrics()"),l.config=e;const{sendMetric:t,isWindowUnloading:n}=u(e);l.sendMetric=t,l.isWindowUnloading=n}}t.default=l;t.sendMetric=e=>r(void 0,void 0,void 0,(function*(){if(!l.config)throw new Error("SemanticMetrics has not been initialized. Call SemanticMetrics.init()");return l.sendMetric(e)}))},1845:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WEBAPI_URL=t.INTERNAL_WEBGATE_URL=void 0,t.INTERNAL_WEBGATE_URL="https://wgint.spotify.net",t.WEBAPI_URL="https://api.spotify.com"},6848:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,i(n(1489),t),i(n(2276),t),i(n(9226),t);var a=n(9047);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o(a).default}})},1489:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.Time=t.Timer=void 0,i(n(9047),t),i(n(7377),t),i(n(1602),t),i(n(8265),t);var o=n(8947);Object.defineProperty(t,"Timer",{enumerable:!0,get:function(){return o.Timer}});var a=n(2298);Object.defineProperty(t,"Time",{enumerable:!0,get:function(){return a.Time}})},9226:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BrowserMetrics=void 0;const r=n(9047),i=n(2298);function o(){const[e]=window.performance.getEntriesByType("navigation");return e}function a(e){return new Promise(((t,n)=>window.performance&&"function"==typeof performance.getEntriesByType?window.addEventListener("load",(()=>{const r=performance.getEntriesByType("paint"),i=r.find((({name:t})=>t===e));return void 0!==r&&i?t(i.startTime):n("Time to paint api is not supported on this browser")})):n("window.performance api is not supported in this browser")))}function s({name:e,label:t,value:n},r){let o;return o="cls"===e.toLowerCase()?{metric_type:"gauge",value:n}:{metric_type:"timer",value:i.Time.fromMillis(Math.round(n)).asNanos()},Object.assign(Object.assign({what:`web_vitals_${e.toLowerCase()}`},o),{tags:Object.assign({name:e,label:t},r)})}const u={getPageLoadTime:function(){return new Promise(((e,t)=>{if(!window.performance||"function"!=typeof performance.getEntriesByType)return t("window.performance api is not supported in this browser");if(void 0===o())return t("navigationTiming api is not supported in this browser");const{loadEventEnd:n}=o();return n>0?e(n):window.addEventListener("load",(()=>{setTimeout((()=>{const{loadEventEnd:t}=o();return e(t)}),0)}))}))},getResourceTiming:function(){return window.performance.getEntriesByType("resource")},getTimeToFirstPaint:function(){return a("first-paint")},getTimeToFirstContentfulPaint:function(){return a("first-contentful-paint")},sendWebVitalsMetric:function(e,t){return r.sendMetric(s(e,t))},getWebVitalsMetric:s};t.BrowserMetrics=u},8265:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{u(r.next(e))}catch(e){o(e)}}function s(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ConsoleReporter=void 0;const o=i(n(4131));t.ConsoleReporter=class{constructor(e=2,t="info"){this.spacingLevel=e,this.logLevel=t}send(e){return r(this,void 0,void 0,(function*(){o.default.log(this.logLevel,`[semantic-metrics] ${JSON.stringify(e,null,this.spacingLevel)}`)}))}}},1602:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{u(r.next(e))}catch(e){o(e)}}function s(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EventSenderReporter=void 0;const o=n(3967),a=n(4111),s=n(3987),u=i(n(4131)),l=n(3969),c=n(1845);function f(e){return t=>e.isAuthenticated()?a.createSemanticMetricClient(t):s.createSemanticMetricClientNonAuth(t)}class d{constructor(e,t,n="browser",r){this.eventSender=e,this.createEvent=t,this.environment=n,this.transport=r}static create(e){const t="getToken"in e?e.getToken:null,n="ownerProvider"in e?e.ownerProvider:null,i=e.context?[...e.context]:void 0,a=e.environment,s=l.createBaseTransport({providers:{endpoints:(()=>{const t=l.createXResolveProvider();return n=>r(this,void 0,void 0,(function*(){const r=yield t(n);return Object.assign(Object.assign({},r),e.internal&&{webgate:c.INTERNAL_WEBGATE_URL})}))})(),token:()=>new Promise((e=>{t?t(((t,n)=>{e(void 0===n?t:[t,n])})):e("")}))}});t&&(s.on(l.TransportEvent.CONNECTED,(()=>{s.authenticate()})),s.on(l.TransportEvent.AUTHENTICATED,(()=>{u.default.debug("created authenticated browser transport")})),s.on(l.TransportEvent.TOKEN_PROVIDER_ERROR,(()=>{u.default.debug("the token provided is isn't working.")}))),s.connect();const h=o.createEventSender(Object.assign({transport:s,context:i},n&&{ownerProvider:n})),p=f(s);return new d(h,p,a,s)}static createWithCustomTransport(e){const t="ownerProvider"in e?e.ownerProvider:null,n=o.createEventSender(Object.assign({transport:e.transport},t&&{ownerProvider:t})),r=f(e.transport);return new d(n,r,e.environment,e.transport)}send(e){return r(this,void 0,void 0,(function*(){for(const t of e){const e=Object.assign({},t);e.tags=Object.assign({},e.tags),e.tags.environment&&u.default.error("`tags.environment` must not be set. It is a reserved tag and will be overwritten."),e.tags.environment=this.environment;const n=this.createEvent(Object.assign({},e));this.eventSender.send(n,{flush:!1})}return this.eventSender.flush(this.transport.isAuthenticated())}))}}t.EventSenderReporter=d},7377:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2298:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Time=void 0;class n{constructor(e=0){this.nanos=e}static fromNanos(e){return new n(e)}static fromMicros(e){return new n(1e3*e)}static fromMillis(e){return new n(1e6*e)}static fromSeconds(e){return new n(1e9*e)}static from(e){return new n(e.asNanos())}asSeconds(){return this.nanos/1e9}asMillis(){return this.nanos/1e6}asMicros(){return this.nanos/1e3}asNanos(){return Math.round(this.nanos)}}t.Time=n,n.ZERO=new n(0)},8947:(e,t,n)=>{"use strict";var r=n(4155);Object.defineProperty(t,"__esModule",{value:!0}),t.Timer=t.getHighResolutionTime=t.getLowResolutionTime=t.getTime=t.getBrowserTime=t.supportsHighResolutionTime=void 0;const i=n(2298),o=n(9047);t.supportsHighResolutionTime=()=>r&&"function"==typeof r.hrtime;t.getBrowserTime=()=>"undefined"!=typeof performance?performance.now():Date.now();t.getTime=()=>t.supportsHighResolutionTime()?r.hrtime():t.getBrowserTime();t.getLowResolutionTime=e=>{const n=t.getTime()-e,r=i.Time.fromMillis(n);return{nanoseconds:o.asNanoseconds(r.asNanos()),milliseconds:r.asMillis(),seconds:r.asSeconds()}};t.getHighResolutionTime=e=>{const[t,n]=r.hrtime(e),i=1e9*t+n,a=i/1e6,s=i/1e9;return{nanoseconds:o.asNanoseconds(i),milliseconds:a,seconds:s}};class a{constructor(e){this.startTime=e}static start(){return new a(t.getTime())}end(){return t.supportsHighResolutionTime()?t.getHighResolutionTime(this.startTime):t.getLowResolutionTime(this.startTime)}}t.Timer=a},2276:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createUniversalReporter=void 0;const r=n(1602),i=n(6499);t.createUniversalReporter=function(e={}){const t=e.context?[i.createUserAgentContext(),...e.context]:[i.createUserAgentContext()];return r.EventSenderReporter.create(Object.assign(Object.assign({environment:"browser"},e),{context:t}))}},9846:(e,t)=>{"use strict";t.i=void 0,t.i=function(e){return{name:"EventSenderStats2NonAuth",environments:["devicenonauth","browsernonauth","desktopnonauth"],data:e}}},7611:(e,t)=>{"use strict";t.t=void 0,t.t=function(e){return{name:"RejectedClientEventNonAuth",environments:["browsernonauth","desktopnonauth","devicenonauth"],data:e}}},4111:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createSemanticMetricClient=void 0,t.createSemanticMetricClient=function(e){return{name:"SemanticMetricClient",environments:["browser","device"],data:e}}},3987:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createSemanticMetricClientNonAuth=void 0,t.createSemanticMetricClientNonAuth=function(e){return{name:"SemanticMetricClientNonAuth",environments:["browsernonauth","devicenonauth"],data:e}}},5109:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hexToBase64=void 0;var r=n(3157);t.hexToBase64=function(e){if(!e||e.length%2!=0)throw new TypeError("Invalid hexString value.");var t=e.split("").reduce((function(e,t,n){return n%2==0?(e.push(t),e):(e[e.length-1]=""+e[e.length-1]+t,e)}),[]),n=String.fromCharCode.apply(null,t.map((function(e){var t=parseInt(e,16);if(isNaN(t))throw new TypeError("Invalid hexString value.");return t})));return r.Base64.encode(n)}},1379:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createApplicationContext=void 0,t.createApplicationContext=function(e){return function(){return{name:"context_application",data:e}}}},9263:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createCacheIdContext=void 0;var r=n(5109);t.createCacheIdContext=function(e){var t=r.hexToBase64(e);return function(){return{name:"context_cache_id",data:{value:t}}}}},5633:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createClientIdContext=void 0;var r=n(5109);t.createClientIdContext=function(e){var t=r.hexToBase64(e);return function(){return{name:"context_client_id",data:{value:t}}}}},8163:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createClientIpContext=void 0,t.createClientIpContext=function(e){return function(){return{name:"context_client_ip",data:{value:e}}}}},26:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createCorrelationIdContext=void 0,t.createCorrelationIdContext=function(e){return function(){return{name:"context_correlation_id",data:{value:e}}}}},7938:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createDeviceContext=void 0,t.createDeviceContext=function(e){return function(){return{name:"context_device",data:e}}}},6499:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5663);r.__exportStar(n(1379),t),r.__exportStar(n(9263),t),r.__exportStar(n(5633),t),r.__exportStar(n(8163),t),r.__exportStar(n(26),t),r.__exportStar(n(7938),t),r.__exportStar(n(2231),t),r.__exportStar(n(1326),t),r.__exportStar(n(5115),t)},2231:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createInstallationIdContext=void 0;var r=n(5109);t.createInstallationIdContext=function(e){var t=r.hexToBase64(e);return function(){return{name:"context_installation_id",data:{value:t}}}}},1326:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createOsContext=void 0,t.createOsContext=function(e){return function(){return{name:"context_os",data:e}}}},5115:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createUserAgentContext=void 0,t.createUserAgentContext=function(e){if(!e&&"undefined"==typeof navigator)throw new Error("userAgent is not provided and navigator.UserAgent is not available");return function(){return{name:"context_user_agent",data:{value:e||navigator.userAgent}}}}},3967:(e,t,n)=>{"use strict";var r;n.r(t),n.d(t,{Environment:()=>r,EventSenderEvent:()=>i,createEventSender:()=>C}),function(e){e.BACKEND="BACKEND",e.BROWSER="BROWSER",e.BROWSER_NON_AUTH="BROWSER_NON_AUTH",e.DESKTOP="DESKTOP",e.DEVICE="DEVICE",e.DEVICE_NON_AUTH="DEVICE_NON_AUTH"}(r||(r={}));var i,o=n(5663),a=n(3969),s=n(8667),u=n(3178);!function(e){e.UPLOAD_SUCCEEDED="upload_succeeded",e.UPLOAD_FAILED="upload_failed",e.UPLOAD_REQUEST_FAILED="upload_request_failed"}(i||(i={}));const l=s.P.forTag("Uploader");function c(e,t){const{event_name:n,fragments:r}=e,{message:i}=r;return{reason:t,contexts:(0,o.__rest)(r,["message"]),event_data:{name:n,data:i}}}class f extends u.vp{constructor(e){var t;super(),this._suppressPersist=!1,this._backoff=!1,this._authorize=null===(t=e.authorize)||void 0===t||t,this._transport=e.transport,this._suppressPersist=!!e.suppressPersist,this._endpoint=this._authorize?"@webgate/gabo-receiver-service/v3/events":"@webgate/gabo-receiver-service/public/v3/events"}_uploadBatch(e,t=!1){const n=this._transport,r=t&&this._authorize?n.appendLastTokenQuery(this._endpoint):this._endpoint;return this._transport.request(r,{method:a.Method.POST,metadata:{eventSenderEventNames:e.map((e=>e.event_name))},headers:{"content-type":"application/json"},responseType:"json",parseResponseHeaders:!0,payload:JSON.stringify({suppress_persist:this._suppressPersist,events:e}),forget:t,authorize:!t&&this._authorize}).then(this._parseUploadResponse.bind(this,e,t))}_parseUploadResponse(e,t,n){if(t)return Promise.resolve([]);const{body:r,headers:o,status:a}=n,s=this._authorize;if(200!==a||!r)return l.warn("Upload request failed",n),this.emit(i.UPLOAD_REQUEST_FAILED,{authorize:s,status:a}),this._backoff=!0,Promise.resolve(e);const u=[],f=[],d=[];if(r.error&&r.error.length){l.info("response errors",e,r.error);for(let t=0,n=r.error.length;t0&&this.emit(i.UPLOAD_FAILED,{authorize:s,rejected:d,will_retry:f}),p>0&&this.emit(i.UPLOAD_SUCCEEDED,{authorize:this._authorize,num_events:p}),Promise.resolve(u)}upload(e,t=[]){let n=t;if(!e.length)return Promise.resolve({nack:n,backoff:this._backoff});const r=[...e];return this._uploadBatch(r.splice(0,20)).then((e=>{if(n=[...n,...e],this._backoff)n=[...n,...r];else if(r.length)return this.upload(r,n);return{nack:n,backoff:this._backoff}}))}lastUpload(e){return e.length?this._uploadBatch(e.splice(0,100),!0).then((e=>0===e.length),(()=>!1)):Promise.resolve(!0)}shouldBackoff(){return this._backoff}}function d(e){return new f(e)}var h,p=n(2427),m=n(7611);!function(e){e.INVALID_PAYLOAD="INVALID_PAYLOAD",e.INVALID_NAME="INVALID_NAME",e.UNKNOWN_OWNER="UNKNOWN_OWNER",e.PAYLOAD_SIZE_LIMIT_EXCEEDED="PAYLOAD_SIZE_LIMIT_EXCEEDED"}(h||(h={}));const g="3.0.1";var y=n(9846);class v{static pushToArrIfMissing(e,t){-1===e.indexOf(t)&&e.push(t)}static isMissingFromArray(e,t){return-1===e.indexOf(t)}}class b{_addEventsToEventSenderStatsData(e,t){Object.keys(t).map((n=>{for(let r=0;r{if(v.isMissingFromArray(t.sequence_ids,e))t.sequence_ids.push(e),t.loss_stats_num_entries_per_sequence_id.push(Object.keys(n).length);else{const r=t.sequence_ids.indexOf(e);t.loss_stats_num_entries_per_sequence_id[r]+=Object.keys(n).length}Object.entries(n).map((([e,n])=>{v.pushToArrIfMissing(t.event_names,e);const r=t.event_names.indexOf(e);t.loss_stats_event_name_index.push(r);const i=Object.keys(n);for(let e=0;ee&&t)).catch((()=>!1))}initializeContexts(e){if(!(null==e?void 0:e.length))return;const t=this._instanceContexts;for(const n of e){const e=n();(null==e?void 0:e.name)&&(t[e.name]=e.data)}}initFlush(e){const t=this._uploaders[e].shouldBackoff(),{ceiling:n,maxDuration:r,baseTime:i}=this._backoffTimeSettings;return p.V.init((()=>this.upload(e)),{curve:"exponential",backoffInitial:t,retryPredicate:()=>this._transport.isOnline(),ceiling:n,baseTime:t?n:i,maxDuration:r})}waitForConnection(){return new Promise((e=>{this._transport.once(a.TransportEvent.CONNECTION_ONLINE,(()=>e()))}))}upload(e){return this._uploaders[e].upload(this._events[e].splice(0)).then((t=>{if(t.nack.length)throw this._events[e]=t.nack.concat(this._events[e]),new Error("Backoff requested");return t}))}sendToGabito(e){const t=e?"authorized":"unauthorized";this._transport.isOnline()||this._ongoingUploads[t]||(this._ongoingUploads[t]=this.waitForConnection());const n=this._ongoingUploads[t];if(n)return this._uploadWaiting[t]||(this._uploadWaiting[t]=!0,this._ongoingUploads[t]=n.then((()=>(this._ongoingUploads[t]=!1,this._uploadWaiting[t]=!1,this.sendToGabito(e))))),this._ongoingUploads[t];if(!this._events[t].length)return Promise.resolve({nack:this._events[t],backoff:this._uploaders[t].shouldBackoff()});if(!this._hasFlushed||Date.now()-this._essLastSent.getTime()>18e4){this._hasFlushed=!0;const e=[this.makeEvent(this._statsSender.createESSEvent(this._events,this._sequenceIdGenerator.getAllSequenceNumberCounters(),this._sequenceIdGenerator.getSequenceId()))];this._uploaders.unauthorized.upload(e)}const r=this.initFlush(t).then((e=>(this._ongoingUploads[t]=!1,e))).catch((()=>(this._ongoingUploads[t]=!1,this._transport.isOnline()?(O.consoleLogger.warn(`The events in the queue could not be uploaded. Throwing away ${this._events[t].length} ${t} events.`),this._events[t]=[],{nack:this._events[t],backoff:this._uploaders[t].shouldBackoff()}):this.sendToGabito(e))));return this._ongoingUploads[t]=r,r}storeEvent(e,t){const n=this.makeEvent(t);this._events[e?"authorized":"unauthorized"].push(n)}makeEvent(e){const t=this._sequenceIdGenerator;return{sequence_id:t.getSequenceId(),sequence_number:t.nextSequenceNumber(e.name),event_name:e.name,fragments:Object.assign(Object.assign({context_sdk:{version_name:g,type:"javascript"},context_time:{timestamp:Date.now()}},this._instanceContexts),{message:e.data})}}validateEventData(e,t,n){let r=null;if(e.name){if(function(e){let t=e.length,n=t;for(;n--;){const r=e.charCodeAt(n);r>127&&r<=2047?t++:r>2047&&r<=65535&&(t+=2),r>=56320&&r<=57343&&n--}return t}(JSON.stringify(e.data))>5e3)r=h.PAYLOAD_SIZE_LIMIT_EXCEEDED;else if(t&&n&&!n())return h.UNKNOWN_OWNER}else r=h.INVALID_NAME;return r||null}checkIsEventAuthorized(e){return!e.endsWith("NonAuth")}flush(e=!0){return this.sendToGabito(e).then((()=>{})).catch((()=>{}))}flushAll(){return Promise.all([this.sendToGabito(!0),this.sendToGabito(!1)]).then((()=>{})).catch((()=>{}))}finalFlush(){return this.uploadFlush()}log(e,t={}){this.send(e,t)}send(e,{flush:t=!0}={}){const n=this.checkIsEventAuthorized(e.name);let r=this.validateEventData(e,n,this._ownerProvider);if(r===h.UNKNOWN_OWNER&&(O.consoleLogger.warn(`Trying to send an authenticated event without a current owner: ${e.name}`),r=null),r){const t=(0,m.t)({event_name:e.name,reject_reason:r});return this.storeEvent(!1,t),Promise.reject(new TypeError(`The event is invalid and has been rejected for reason: ${r}`))}return this.storeEvent(n,e),t?this.flush(n):Promise.resolve()}hasContext(...e){return e.every((e=>!!this._instanceContexts[e]))}}function C(e){const t={suppressPersist:e.suppressPersist,transport:e.transport};return new O(Object.assign(Object.assign({},e),{uploaders:{authorized:d(t),unauthorized:d(Object.assign(Object.assign({},t),{authorize:!1}))}}))}O.consoleLogger=s.P.forTag("EventSender")},3969:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ConnectionObserver:()=>f,DEALER_PLUGIN_NAME:()=>x,DisconnectionReason:()=>u,Method:()=>a,PluginEvent:()=>s,TransportErrors:()=>i,TransportEvent:()=>o,createAbortControllerLike:()=>g,createBaseTransport:()=>be,createTransport:()=>_e,createXResolveProvider:()=>ve});var r={};n.r(r),n.d(r,{isSupported:()=>F,request:()=>B});var i,o,a,s,u,l={};n.r(l),n.d(l,{request:()=>he}),function(e){e.HTTP_REQUEST_ABORTED="HTTP_REQUEST_ABORTED",e.HTTP_REQUEST_FAILED="HTTP_REQUEST_FAILED",e.LOGGING_REQUEST_FAILED="LOGGING_REQUEST_FAILED",e.TRANSPORT_ENDPOINTS_PROVIDER_ERROR="TRANSPORT_ENDPOINTS_PROVIDER_ERROR",e.TRANSPORT_INVALID_STATE="TRANSPORT_INVALID_STATE",e.TRANSPORT_INVALID_TOKEN="TRANSPORT_INVALID_TOKEN",e.TRANSPORT_STALE_TOKEN="TRANSPORT_STALE_TOKEN ",e.TRANSPORT_TOKEN_PROVIDER_ERROR="TRANSPORT_TOKEN_PROVIDER_ERROR",e.TRANSPORT_LIFECYCLE_DISABLED="TRANSPORT_LIFECYCLE_DISABLED",e.TRANSPORT_UNSUPPORTED_OPTION="TRANSPORT_UNSUPPORTED_OPTION",e.XRESOLVE_INCOMPLETE_RESPONSE="XRESOLVE_INCOMPLETE_RESPONSE",e.XRESOLVE_INVALID_RESPONSE="XRESOLVE_INVALID_RESPONSE",e.XRESOLVE_REQUEST_FAILED_WITH_STATUS="XRESOLVE_REQUEST_FAILED_WITH_STATUS"}(i||(i={})),function(e){e.CONNECTION_ONLINE="online",e.CONNECTION_OFFLINE="offline",e.PRODUCT_STATE_CHANGED="product_state_changed",e.ACCESS_TOKEN="access_token",e.AUTHENTICATED="authenticated",e.AUTHENTICATION_FAILED="authentication_failed",e.BEFORE_OFFLINE_DISCONNECT="before_offline_disconnect",e.BEFORE_ONLINE_DISCONNECT="before_online_disconnect",e.CONNECTED="connected",e.CONNECTION_FAILED="connection_failed",e.CONNECTION_ID="connection_id",e.DISCONNECTED="disconnected",e.ENDPOINTS_RESOLVED="endpoints_resolved",e.LOGGED_OUT="logged_out",e.SHORT_SESSION_DISCONNECTED="short_session_disconnected",e.TOKEN_PROVIDER_ERROR="token_provider_error",e.RECONNECTED="reconnected",e.RECONNECTING="reconnecting",e.WINDOW_BEFORE_UNLOAD="beforeunload"}(o||(o={})),function(e){e.DELETE="DELETE",e.GET="GET",e.OPTIONS="OPTIONS",e.PATCH="PATCH",e.POST="POST",e.PUT="PUT",e.TRACE="TRACE"}(a||(a={})),function(e){e.TRANSPORT_AUTHENTICATE="transport_authenticate",e.TRANSPORT_AUTHENTICATE_FAILED="transport_authenticate_failed",e.TRANSPORT_CONNECT="transport_connect",e.TRANSPORT_DISCONNECT="transport_disconnect",e.TRANSPORT_ENDPOINTS_RESOLVED="transport_endpoints_resolved",e.TRANSPORT_BEFORE_PROCESS_REQUEST="transport_before_process_request",e.TRANSPORT_BEFORE_SEND_REQUEST="transport_before_send_request",e.TRANSPORT_BEFORE_RETURN_RESPONSE="transport_before_return_response",e.TRANSPORT_REQUEST="transport_request",e.PLUGIN_CONNECTION_INFO="plugin_connection_info",e.PLUGIN_DISCONNECTED="plugin_disconnected",e.PLUGIN_MESSAGE="plugin_message",e.PLUGIN_REQUEST="plugin_request",e.PLUGIN_ERROR="plugin_error"}(s||(s={})),function(e){e.RECONNECTION_FAILED="reconnection_failed",e.EXPLICIT="explicit",e.LOG_OUT="log_out",e.WINDOW_BEFORE_UNLOAD="window_before_unload"}(u||(u={}));var c=n(3178);class f extends c.vp{}class d extends f{constructor(e){super();const t="undefined"!=typeof window,n=e&&e.notifyBeforeUnload;this._navigator=t&&window.navigator||null,t&&"function"==typeof window.addEventListener&&(window.addEventListener("online",this.emitSync.bind(this,o.CONNECTION_ONLINE,null)),window.addEventListener("offline",this.emitSync.bind(this,o.CONNECTION_OFFLINE,null)),n&&window.addEventListener(o.WINDOW_BEFORE_UNLOAD,this.emitSync.bind(this,o.WINDOW_BEFORE_UNLOAD,null)))}static create(e){return new d(e)}isOnline(){const e=this._navigator;return!e||!("onLine"in e)||e.onLine}}class h extends c.vp{constructor(){super(),this._aborted=!1,this.onabort=null,this.on("abort",(()=>{var e;return null===(e=this.onabort)||void 0===e?void 0:e.call(this)}))}static abort(){const e=new h;return e._aborted=!0,e}static signalAbort(e){"_aborted"in e&&!e._aborted&&(e._aborted=!0,e.emit("abort",null))}get aborted(){return this._aborted}set aborted(e){}addEventListener(e,t){this.addListener(e,t)}removeEventListener(e,t){this.removeListener(e,t)}dispatchEvent(){}}class p{constructor(){this.signal=new h}abort(){const e=this.signal;h.signalAbort(e)}}function m(){return"undefined"!=typeof window&&"function"==typeof window.AbortController}const g=m()?()=>new AbortController:()=>new p;var y,v,b;!function(e){e.DEALER_CONNECTION_ERROR="DEALER_CONNECTION_ERROR",e.DEALER_AUTHENTICATION_FAILED="DEALER_AUTHENTICATION_FAILED",e.DEALER_ERROR="DEALER_ERROR",e.ENDPOINT_NOT_DEFINED="ENDPOINT_NOT_DEFINED",e.INVALID_ENDPOINT="INVALID_ENDPOINT"}(y||(y={}));class _ extends Error{constructor(e=y.DEALER_ERROR,t,n={}){super(t),this.name="DealerError",this.message=t,this.code=e,this.raw=n,this.wsCode=n.code||null,this.wsReason=n.reason||null}}function E(){let e,t;return{promise:new Promise(((n,r)=>{e=n,t=r})),resolve:e,reject:t}}!function(e){e.AUTHENTICATED="authenticated",e.AUTHENTICATION_FAILED="authentication_failed",e.CONNECTED="connected",e.CONNECTION_ID="connection_id",e.ERROR="error",e.DISCONNECTED="disconnected",e.MESSAGE="message",e.REQUEST="request"}(v||(v={})),function(e){e[e.CLOSE=4e3]="CLOSE",e[e.TIMEOUT=4001]="TIMEOUT"}(b||(b={}));var w=n(8764).Buffer;const T=function(){},S=/hm:\/\/pusher\/(?:[^]+)?\/connections\/([^]+)/,O="undefined"!=typeof window;class C extends c.vp{constructor(e){super(),this._socket=null,this._lastPingDeferred=null,this._waitingForConnectionId=!0,this._connectionId=null,this._connectionURI=null,this._heartbeatToken=0,this._heartbeatTimeoutToken=0,this._connected=!1,this._endpoint=null,this._WebSocket=e.WebSocket||WebSocket,this._heartbeatTimeout=e.heartbeatTimeout||1e4}static create(e){return new C(e)}_startHeartbeat(e){const t=()=>{this.ping().then((()=>this._onHeartbeatSuccess()),(()=>this._onHeartbeatError())),this._heartbeatTimeoutToken=setTimeout((()=>this._onHeartbeatError()),this._heartbeatTimeout)};e?t():this._heartbeatToken=setTimeout((()=>t()),3e4)}_onHeartbeatError(){this._stopHeartbeat(),this._socket&&this._socket.close(b.TIMEOUT,"internal-timeout")}_onHeartbeatSuccess(){this._stopHeartbeat(),this._startHeartbeat()}_stopHeartbeat(){null!==this._heartbeatToken&&clearTimeout(this._heartbeatToken),null!==this._heartbeatTimeoutToken&&clearTimeout(this._heartbeatTimeoutToken)}_prepareConnectionId(e){var t;if(!e.uri)return!1;const[,n]=null!==(t=e.uri.match(S))&&void 0!==t?t:[];if(!n)return!1;let r;return r=e.headers&&e.headers["Spotify-Connection-Id"]?e.headers["Spotify-Connection-Id"]:decodeURIComponent(n),this._connectionId=r,this._connectionURI=e.uri,this.emit(v.CONNECTION_ID,{id:r,uri:e.uri}),!0}_reply(e,t){if(!e)throw new TypeError("Invalid key.");const n=this._socket;if(!n||1!==n.readyState)return;const r={type:"reply",key:e,payload:t};n.send(JSON.stringify(r))}_parseMessage(e){let t;try{t=JSON.parse(e)}catch(e){return}if("message"===t.type)this._waitingForConnectionId&&this._prepareConnectionId(t)?(this._waitingForConnectionId=!1,this._startHeartbeat(!0)):this.emit(v.MESSAGE,{message:t});else if("pong"===t.type&&this._lastPingDeferred)this._lastPingDeferred.resolve(!0),this._lastPingDeferred=null;else if("request"===t.type){const e=t.key;e&&this.emit(v.REQUEST,{request:t,reply:this._reply.bind(this,e)})}}_handleOpen(e){e.resolve(!0),this._connected=!0,this.emit(v.AUTHENTICATED,null)}_handleMessage(e){const t=this,n=e.data;if(O&&window.Blob&&n instanceof window.Blob){const e=new FileReader;e.onloadend=function(){if(!this.result)return;let e;if(this.result instanceof ArrayBuffer){e="";const t=new Uint8Array(this.result);for(let n=0;n{this.once(v.CONNECTION_ID,(t=>{e(t.data.id)}))})):Promise.resolve(this._connectionId)}getConnectionInfo(){return this._waitingForConnectionId?new Promise((e=>{this.once(v.CONNECTION_ID,(t=>{e({id:t.data.id,uri:t.data.uri})}))})):Promise.resolve({id:this._connectionId,uri:this._connectionURI})}hasConnectionId(){return!this._waitingForConnectionId&&!!this._connectionId}}const x="dealer";class A{constructor(e){this.name=x,this._dealer=new C(e),this.api={hasConnectionInfo:()=>this._dealer.hasConnectionId(),getConnectionInfo:()=>this._dealer.getConnectionInfo().then((e=>Object.assign({plugin:this.name},e)))},this._onDealerConnectionId=this._onDealerConnectionId.bind(this),this._onDealerDisconnected=this._onDealerDisconnected.bind(this),this._onDealerMessage=this._onDealerMessage.bind(this),this._onDealerRequest=this._onDealerRequest.bind(this),this._onTransportConnect=this._onTransportConnect.bind(this),this._onTransportAuthenticate=this._onTransportAuthenticate.bind(this),this._onTransportDisconnect=this._onTransportDisconnect.bind(this)}_onDealerConnectionId(e){this._mediator&&this._mediator.emit(s.PLUGIN_CONNECTION_INFO,Object.assign({plugin:this.name},e.data))}_onDealerDisconnected(e){if(!this._mediator)return;const t=e.data;this._mediator.emit(s.PLUGIN_DISCONNECTED,{plugin:this.name,code:t.wsCode,reason:t.reason})}_onDealerMessage(e){this._mediator&&this._mediator.emit(s.PLUGIN_MESSAGE,Object.assign({plugin:this.name},e.data))}_onDealerRequest(e){this._mediator&&this._mediator.emit(s.PLUGIN_REQUEST,Object.assign({plugin:this.name},e.data))}_onTransportConnect(e){const t=e.data.endpoints,n=e.data.awaitPromise;t.dealer?/^wss:/.test(t.dealer)?n(this._dealer.connect(t.dealer)):n(Promise.reject(new _(y.INVALID_ENDPOINT,"Dealer endpoint needs to be wss://"))):n(Promise.reject(new _(y.ENDPOINT_NOT_DEFINED,'No "dealer" endpoint defined.')))}_onTransportAuthenticate(e){const t=e.data;t.awaitPromise(this._dealer.authenticate(t.token))}_onTransportDisconnect(){this._dealer.disconnect()}_onDealerError(e){var t;null===(t=this._mediator)||void 0===t||t.emit(s.PLUGIN_ERROR,{plugin:this.name,error:e.data.error})}attach(e,t){this._mediator=t,t.addListeners({[s.TRANSPORT_CONNECT]:this._onTransportConnect,[s.TRANSPORT_AUTHENTICATE]:this._onTransportAuthenticate,[s.TRANSPORT_DISCONNECT]:this._onTransportDisconnect}),this._dealer.addListeners({[v.DISCONNECTED]:this._onDealerDisconnected,[v.CONNECTION_ID]:this._onDealerConnectionId,[v.MESSAGE]:this._onDealerMessage,[v.REQUEST]:this._onDealerRequest,[v.ERROR]:this._onDealerError})}detach(e,t){this._mediator=void 0,t.removeListeners({[s.TRANSPORT_CONNECT]:this._onTransportConnect,[s.TRANSPORT_AUTHENTICATE]:this._onTransportAuthenticate,[s.TRANSPORT_DISCONNECT]:this._onTransportDisconnect}),this._dealer.removeListeners({[v.DISCONNECTED]:this._onDealerDisconnected,[v.CONNECTION_ID]:this._onDealerConnectionId,[v.MESSAGE]:this._onDealerMessage,[v.REQUEST]:this._onDealerRequest,[v.ERROR]:this._onDealerError})}}function I(e,t){return new A(t)}var N=n(8667);const R={POST:!0,PUT:!0,DELETE:!0};var k;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.OK=200]="OK",e[e.CREATED=201]="CREATED",e[e.ACCEPTED=202]="ACCEPTED",e[e.NO_CONTENT=204]="NO_CONTENT",e[e.PARTIAL_CONTENT=206]="PARTIAL_CONTENT",e[e.BAD_REQUEST=400]="BAD_REQUEST",e[e.UNAUTHORIZED=401]="UNAUTHORIZED",e[e.PAYMENT_REQUIRED=402]="PAYMENT_REQUIRED",e[e.FORBIDDEN=403]="FORBIDDEN",e[e.NOT_FOUND=404]="NOT_FOUND",e[e.METHOD_NOT_ALLOWED=405]="METHOD_NOT_ALLOWED",e[e.NOT_ACCEPTABLE=406]="NOT_ACCEPTABLE",e[e.PROXY_AUTHENTICATION_REQUIRED=407]="PROXY_AUTHENTICATION_REQUIRED",e[e.TIMED_OUT=408]="TIMED_OUT",e[e.REQUEST_TIMEOUT=408]="REQUEST_TIMEOUT",e[e.CONFLICT=409]="CONFLICT",e[e.GONE=410]="GONE",e[e.LENGTH_REQUIRED=411]="LENGTH_REQUIRED",e[e.PRECONDITION_FAILED=412]="PRECONDITION_FAILED",e[e.REQUEST_ENTITY_TOO_LARGE=413]="REQUEST_ENTITY_TOO_LARGE",e[e.REQUEST_URI_TOO_LONG=414]="REQUEST_URI_TOO_LONG",e[e.UNSUPPORTED_MEDIA_TYPE=415]="UNSUPPORTED_MEDIA_TYPE",e[e.REQUESTED_RANGE_NOT_SATISFIABLE=416]="REQUESTED_RANGE_NOT_SATISFIABLE",e[e.EXPECTATION_FAILED=417]="EXPECTATION_FAILED",e[e.INTERNAL_SERVER_ERROR=500]="INTERNAL_SERVER_ERROR",e[e.NOT_IMPLEMENTED=501]="NOT_IMPLEMENTED",e[e.BAD_GATEWAY=502]="BAD_GATEWAY",e[e.SERVICE_UNAVAILABLE=503]="SERVICE_UNAVAILABLE",e[e.GATEWAY_TIMEOUT=504]="GATEWAY_TIMEOUT",e[e.HTTP_VERSION_NOT_SUPPORTED=505]="HTTP_VERSION_NOT_SUPPORTED"}(k||(k={}));class P extends Error{constructor(e,t,n){super(e),this.name="RequestError",this.message=e,this.code=t,this.status=n||0}}class L extends P{constructor(){super("Request aborted by signal.",i.HTTP_REQUEST_ABORTED,0),this.name="RequestAbortedError",this.message="Request aborted by signal."}}class D{constructor(e){this.get=e.get.bind(e),this.has=e.has.bind(e)}get(e){return null}has(e){return!1}}class M{constructor(e,t=0){this.url="",this.status=0,this.headers=null,this.body=null,this.offline=!1,this.timing=null,this.metadata=null,this.retries={count:0},this.url=e,this.status=t,this.ok=t>=200&&t<=299}getStatusFamily(){return 0|this.status/100}}const U=N.P.forTag("transport.http.fetch"),j={json:!0,text:!0,arraybuffer:!0,blob:!0};function F(){return"function"==typeof fetch}function B(e){if(!F())return Promise.reject(new TypeError("Fetch is not supported"));const t=e.options.signal;if(null==t?void 0:t.aborted)return Promise.reject(new L);if(!e.url)return Promise.reject(new TypeError("Request URL cannot be blank."));const n=e.method||"GET";let r=e.url,i=null;if(n in R&&e.payload?i=e.payload:e.payload&&(r+=`?${e.payload}`),e.options.responseType&&!(e.options.responseType in j))return Promise.reject(new TypeError("Cannot set responseType: not supported in browser."));const o={mode:e.options.mode||"cors",credentials:e.options.credentials||"same-origin",redirect:e.options.redirect||"follow",signal:t,method:n};e.headers.count()&&(o.headers=e.headers.toJSON()),i&&(o.body=i);const a=Date.now();return fetch(r,o).then((function(t){let n;n=e.options.ignoreResponseBody||t.status===k.NO_CONTENT?null:"json"===e.options.responseType?t.json().catch((function(e){return U.warn("Could not parse response as JSON:",e),null})):"arraybuffer"===e.options.responseType?t.arrayBuffer():"blob"===e.options.responseType?t.blob():t.text();const r=e.options.parseResponseHeaders||t.status>299?new D(t.headers):null;return Promise.all([t.url,t.status,r,n])})).then((function([t,n,r,i]){const o=new M(t,n);if(o.body=i,o.headers=r,e.options.timing){const e=Date.now()-a;o.timing={completed:e}}return o})).catch((function(t){if("AbortError"===(null==t?void 0:t.name))throw new L;const n=new M(r);if(e.options.timing){const e=Date.now()-a;n.timing={completed:e}}return n})).then((function(t){return e.options.connectionObserver&&(t.offline=!e.options.connectionObserver.isOnline()),t}))}var z,H,W=n(2427),V=n(7092);!function(e){e[e.CONNECTION_ERROR=0]="CONNECTION_ERROR",e[e.INFORMATIONAL=1]="INFORMATIONAL",e[e.SUCCESS=2]="SUCCESS",e[e.REDIRECTION=3]="REDIRECTION",e[e.CLIENT_ERROR=4]="CLIENT_ERROR",e[e.SERVER_ERROR=5]="SERVER_ERROR"}(z||(z={}));class q extends Error{constructor(e,t,n=null){super(t),this.name="TransportError",this.message=t,this.code=e,this.origin=n}}class ${constructor(e){this._headers={},this._count=0,this._setAll(e)}_setAll(e){let t=0;for(const n in e)e.hasOwnProperty(n)&&e[n]&&(this._headers[n.toLowerCase()]=e[n],t++);this._count=t}get(e){return this._headers[e.toLowerCase()]||null}has(e){return!!this._headers[e.toLowerCase()]}set(e,t){this._headers[e.toLowerCase()]=t,this._count++}delete(e){const t=e.toLowerCase();this._headers[t]&&this._count--,delete this._headers[e.toLowerCase()]}count(){return this._count}toJSON(){return Object.assign({},this._headers)}}class G{constructor(e,t){this.url=e,this.method=(null==t?void 0:t.method)||"GET",this.headers=new $(null==t?void 0:t.headers),this.options=(null==t?void 0:t.options)||{},this.payload=null==t?void 0:t.payload,this.urlExpanded=(null==t?void 0:t.urlExpanded)||!1,this.retryOptions=(null==t?void 0:t.retryOptions)||{}}static create(e,t){return new G(e,t)}clone(){const e=new G(this.url);return e.method=this.method,e.headers=new $(this.headers.toJSON()),e.options=this.options,e.payload=this.payload,e.urlExpanded=this.urlExpanded,e.retryOptions=this.retryOptions,e}}!function(e){e.EVENT_ACCESS_TOKEN="access_token",e.EVENT_CONNECTION_ID="connection_id",e.EVENT_CONNECTION_OFFLINE="connection_offline",e.EVENT_CONNECTION_ONLINE="connection_online",e.EVENT_ENDPOINTS_RESOLVED="endpoints_resolved"}(H||(H={}));class K extends c.vp{constructor(e,t){super(),this.EVENT_ACCESS_TOKEN=H.EVENT_ACCESS_TOKEN,this.EVENT_CONNECTION_ID=H.EVENT_CONNECTION_ID,this.EVENT_CONNECTION_OFFLINE=H.EVENT_CONNECTION_OFFLINE,this.EVENT_CONNECTION_ONLINE=H.EVENT_CONNECTION_ONLINE,this.EVENT_ENDPOINTS_RESOLVED=H.EVENT_ENDPOINTS_RESOLVED,this.StatusCode=k,this.StatusFamily=z,this.getConnectionId=e.getConnectionId.bind(e),this.getEndpoints=e.getEndpoints.bind(e),this.getInitTime=e.getInitTime.bind(e),this.getLastToken=e.getLastToken.bind(e),this.matchMessages=e.matchMessages.bind(e),this.unmatchMessages=e.unmatchMessages.bind(e),this.handlePushRequests=e.handlePushRequests.bind(e),this.unhandlePushRequests=e.unhandlePushRequests.bind(e),this.hasPlugin=e.hasPlugin.bind(e),this.getPluginAPI=e.getPluginAPI.bind(e);const n=e.request.bind(e);(null==t?void 0:t.requestOptions)?this.request=(e,r)=>n(e,r?Object.assign(Object.assign(Object.assign({},null==t?void 0:t.requestOptions),r),{metadata:Object.assign(Object.assign({},t.requestOptions.metadata),null==r?void 0:r.metadata),retry:Object.assign(Object.assign({},t.requestOptions.retry),null==r?void 0:r.retry)}):t.requestOptions):this.request=n,this.proxyEmit(e,o.ACCESS_TOKEN,H.EVENT_ACCESS_TOKEN),this.proxyEmit(e,o.CONNECTION_OFFLINE,H.EVENT_CONNECTION_OFFLINE),this.proxyEmit(e,o.CONNECTION_ONLINE,H.EVENT_CONNECTION_ONLINE),this.proxyEmit(e,o.ENDPOINTS_RESOLVED,H.EVENT_ENDPOINTS_RESOLVED),this.onAddListener(H.EVENT_CONNECTION_ID,this._onAddConnectionIdListener.bind(this,e.on.bind(e))),this.onRemoveListener(H.EVENT_CONNECTION_ID,this._onRemoveConnectionIdListener.bind(this,e.removeListener.bind(e)))}_onAddConnectionIdListener(e,t){t.preventDefault();const n=t.data.listener,r=e=>{const t=this.createEvent(H.EVENT_CONNECTION_ID,e.data);n.call(this,t)};n.$proxy_wrapper=r,e(o.CONNECTION_ID,r,t.data.options)}_onRemoveConnectionIdListener(e,t){t.preventDefault();const n=t.data.listener;n.$proxy_wrapper&&e(o.CONNECTION_ID,n.$proxy_wrapper,t.data.options)}removeAllListeners(){return this}}class X{constructor(){this._startTime=null,this._endTime=null}static create(){return new X}start(){if(null!==this._startTime)throw new Error("Measurement is already in progress.");this._startTime=Date.now()}end(){if(null===this._startTime||null!==this._endTime)throw new Error("Measurement is not in progress.");this._endTime=Date.now()}getMetrics(){if(null===this._startTime||null===this._endTime)throw new Error("Measurement is not done.");return{start_time:this._startTime,end_time:this._endTime}}}const J=N.P.forTag("transport.transport"),Y=/^(?:https?:\/\/)?@([^\/]+)\//,Z=/^(ws|http)s?:\/\/.*[^\/]$/,Q=/^([a-zA-Z]{3},\ \d{1,2}\ [a-zA-Z]{3}\ (\d{1,2}.){3})/,ee={xhr:!0,fetch:!0},te=1,ne=4;function re(e,t){const n=`access_token=${encodeURIComponent(t)}`,[r,i]=e.split("?");if(!i)return`${r}?${n}`;const o=i.replace(/access_token=[^&]*(&|$)/,`${n}$1`);return o!==i?`${r}?${o}`:`${r}?${n}&${i}`}class ie extends c.vp{constructor(e){if(super(),this._plugins={},this._pluginMediator=new c.vp,this._connectCalled=!1,this._authenticateCalled=!1,this._endpoints=null,this._lastToken=null,this._lastTokenExpiry=0,this._refreshTokenPromise=null,this._authenticationPromise=null,this._reconnectTimeout=0,this._isReconnecting=!1,this._initTime=0,this._lastDisconnect=0,this._stateMask=0,this._quickDisconnectCount=0,this._counter=new V.A({curve:"exponential",baseTime:5e3,ceiling:15e3}),this._stateAwareListeners={connected:[],authenticated:[],connection_id:[],transport_connect:[],transport_authenticate:[]},this._stateAwareOperationMetrics={authenticated:null},this._stateAwareRunners={connected:null,authenticated:null,connection_id:null,transport_connect:null,transport_authenticate:null},!e)throw new TypeError("Argument `options` for Transport cannot be null.");if(!e.providers)throw new TypeError("Argument `options.providers` for Transport cannot be null.");this._ownerRef="ownerRef"in e?Object(e.ownerRef):{},this._tokenProvider=e.providers.token,this._endpointsProvider=e.providers.endpoints,this._XHR=e.XHR,this._Fetch=e.Fetch,this._reconnectionRetries=e.reconnectionRetries>=0?e.reconnectionRetries:3,this._requestMode=e.requestMode in ee?e.requestMode:"xhr",this._forcePolyfillTypes=e.forcePolyfillTypes||{},this._disableAutoLogout="disableAutoLogout"in e&&!!e.disableAutoLogout,this._disconnectBeforeUnload=e.disconnectBeforeUnload||!1;const t=e.createConnectionObserver||d.create;this._connectionObserver=t({notifyBeforeUnload:this._disconnectBeforeUnload}),this.authenticate=this.authenticate.bind(this),this._authenticateWithToken=this._authenticateWithToken.bind(this),this._connectToEndpoints=this._connectToEndpoints.bind(this),this._parseProvidedToken=this._parseProvidedToken.bind(this),this._onConnected=this._onConnected.bind(this),this._onAuthenticated=this._onAuthenticated.bind(this),this._onAuthenticationFailed=this._onAuthenticationFailed.bind(this),this._init()}static create(e){return new ie(e)}_init(){this.onAddListener(o.CONNECTED,this._onAddListener.bind(this,"connected")),this.onAddListener(o.AUTHENTICATED,this._onAddListener.bind(this,"authenticated")),this.onAddListener(o.CONNECTION_ID,this._onAddListener.bind(this,"connection_id")),this.onRemoveListener(o.CONNECTED,this._onRemoveListener.bind(this,"connected")),this.onRemoveListener(o.AUTHENTICATED,this._onRemoveListener.bind(this,"authenticated")),this.onRemoveListener(o.CONNECTION_ID,this._onRemoveListener.bind(this,"connection_id")),this._pluginMediator.onAddListener(s.TRANSPORT_CONNECT,this._onAddListener.bind(this,"transport_connect")),this._pluginMediator.onAddListener(s.TRANSPORT_AUTHENTICATE,this._onAddListener.bind(this,"transport_authenticate")),this._pluginMediator.onRemoveListener(s.TRANSPORT_CONNECT,this._onRemoveListener.bind(this,"transport_connect")),this._pluginMediator.onRemoveListener(s.TRANSPORT_AUTHENTICATE,this._onRemoveListener.bind(this,"transport_authenticate")),"fetch"!==this._requestMode||this._Fetch&&this._Fetch.isSupported()||(J.warn('Default "fetch" request mode unavailable; Fallback to "xhr"'),this._requestMode="xhr");const e=this._pluginMediator;e.addListeners({[s.PLUGIN_DISCONNECTED]:this._onPluginDisconnected.bind(this)}),this.proxyEmit(e,s.PLUGIN_CONNECTION_INFO,o.CONNECTION_ID),this._disableAutoLogout||this.matchMessages("client:logout",(()=>this._onLogout())),this._connectionObserver.on(o.CONNECTION_ONLINE,(()=>this._onOnline())),this._connectionObserver.on(o.CONNECTION_OFFLINE,(()=>this._onOffline())),this._connectionObserver.on(o.WINDOW_BEFORE_UNLOAD,(()=>this._disconnect(u.WINDOW_BEFORE_UNLOAD)))}_runStateAwareQueues(e,t){const n=this._stateAwareListeners[e].splice(0);for(const e of n)e.call(this,t);this._stateAwareRunners[e]=null}_connect(){return this._stateMask&te?Promise.resolve(!1):this._connectionObserver.isOnline()?this._performConnect():new Promise(((e,t)=>{J.info("Waiting to go online before connecting"),this._connectionObserver.once(o.CONNECTION_ONLINE,(()=>{this._performConnect().then(e,t)}))}))}_performConnect(){return new Promise((e=>{J.info("Resolving endpoints"),e(this._endpointsProvider(this.toPublic()))})).catch((e=>{const t=(null==e?void 0:e.code)?e:new q(i.TRANSPORT_ENDPOINTS_PROVIDER_ERROR,(null==e?void 0:e.message)||"Endpoints provider error",null!=e?e:null);return J.error("Endpoints resolution failed",t),Promise.reject(t)})).then(this._connectToEndpoints).then(this._onConnected).catch((e=>{const t=e&&e.error?e.error:e;return this.emit(o.CONNECTION_FAILED,{error:t}),J.error("Connection failed",t),Promise.reject(t)}))}_connectToEndpoints(e){const t={webgate:"",webapi:""};for(const n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];r&&(Z.test(r)&&(r+="/"),t[n]=r)}this._endpoints=t,this.emit(o.ENDPOINTS_RESOLVED,{endpoints:Object.assign({},t)}),J.info("Endpoints resolved");const n=[],r=e=>{n.push(e)};return J.info("Waiting for plugins to connect"),new Promise(((e,i)=>{this._pluginMediator.emitAndWait(s.TRANSPORT_CONNECT,{endpoints:Object.assign({},t),awaitPromise:r},(()=>{Promise.all(n).then((()=>e(!0)),i)}))}))}_refreshToken(e=!1){if(this._refreshTokenPromise)return this._refreshTokenPromise;if(!e&&this._lastToken&&this._lastTokenExpiry>Date.now())return Promise.resolve(this._lastToken);this._refreshTokenPromise=new Promise((e=>{J.info("Requesting token from provider"),e(this._tokenProvider())})).then(this._parseProvidedToken);const t=()=>{this._refreshTokenPromise=null};return this._refreshTokenPromise.then(t,t),this._refreshTokenPromise.catch((e=>{const t=(null==e?void 0:e.code)?e:new q(i.TRANSPORT_TOKEN_PROVIDER_ERROR,(null==e?void 0:e.message)||"Token provider error",e);return this.emit(o.TOKEN_PROVIDER_ERROR,{error:t}),J.error("Token provider error",t),Promise.reject(t)}))}_parseProvidedToken(e){let t,n;if(Array.isArray(e)?(t=e[0],n=parseInt(e[1],10),isNaN(n)&&(n=3540)):(t=e,n=3540),!t)throw this._lastToken=null,this._lastTokenExpiry=0,J.error("No token was provided"),new q(i.TRANSPORT_INVALID_TOKEN,`Token provider returned an invalid token, "${t}"`);if(this._lastToken===t){J.error("TokenProvider returned same token twice.");const e=new q(i.TRANSPORT_STALE_TOKEN,"Token provider returned the same token twice.");throw this._lastToken=null,this._lastTokenExpiry=0,e}return this._lastToken=t,this._lastTokenExpiry=Date.now()+1e3*n,this.emit(o.ACCESS_TOKEN,{token:t}),J.info("Access token set"),t}_authenticateWithToken(e){if(!this._endpoints)return Promise.resolve(!0);const t=[],n=e=>{t.push(e)};return J.info("Waiting for plugins to authenticate"),new Promise(((r,i)=>{this._pluginMediator.emitAndWait(s.TRANSPORT_AUTHENTICATE,{token:e,awaitPromise:n},(()=>{Promise.all(t).then((()=>r(!0)),i)}))}))}_authenticate(e){if(!(this._stateMask&te))return Promise.reject(new q(i.TRANSPORT_INVALID_STATE,"Cannot authenticate disconnected transport."));if(this._authenticationPromise)return this._authenticationPromise;const t=X.create();return t.start(),this._authenticationPromise=W.V.init((()=>(J.info("Authenticating"),this._refreshToken(e).then(this._authenticateWithToken))),{curve:"exponential",maxRetries:2,baseTime:500,retryPredicate:e=>(J.warn("Retrying authentication due to failure",e),!0)}).then((()=>this._onAuthenticated(t))).catch((e=>this._onAuthenticationFailed(e,t))),this._authenticationPromise}_performDisconnect(e){this._stateMask=0;const t=!e;return e&&(this.emit(o.DISCONNECTED,{reason:e}),J.info("Disconnected")),J.info("Waiting for plugins to disconnect."),this._pluginMediator.emitSync(s.TRANSPORT_DISCONNECT,{supressed:t}),!0}_createReconnector(){let e=!1;return()=>(this._isReconnecting=!0,this.emit(o.RECONNECTING,null),J.info("Reconnecting"),this._performDisconnect(),this._connect().then((()=>!!this._authenticateCalled&&this._authenticate(e).then((t=>(e=!1,t)),(t=>(e=!0,Promise.reject(t)))))).then((()=>(this._isReconnecting=!1,this.emit(o.RECONNECTED,null),J.info("Reconnected"),!0))))}_tryToReconnect(){this._isReconnecting?J.warn("Reconnection triggered while already reconnecting"):(this._stateMask=0,W.V.init(this._createReconnector(),{baseTime:1e3,maxTime:15e3,maxRetries:this._reconnectionRetries,retryPredicate:e=>(J.warn("Retrying reconnection due to failure",e),!0)}).catch((()=>{this._stateMask=0,this._isReconnecting=!1,this.emit(o.DISCONNECTED,{reason:u.RECONNECTION_FAILED}),J.info("Disconnected: reconnection failed")})))}_sendRequest(e,t={},n={}){const r=t.signal;return(null==r?void 0:r.aborted)?Promise.reject(new L):this._processRequestArgs(e,t).then((e=>(null==r?void 0:r.aborted)?Promise.reject(new L):e.options.forget?this._sendFireAndForgetRequest(e):this._sendRetriedRequest(e,n)))}_processRequestArgs(e,t={}){var n,r;if(null===(n=t.signal)||void 0===n?void 0:n.aborted)return Promise.reject(new L);let i=e,o=!1;const a=Object.assign(Object.assign({},t),{forcePolyfill:!(!t.responseType||!(t.responseType in this._forcePolyfillTypes)),requestMode:null!==(r=null==t?void 0:t.requestMode)&&void 0!==r?r:this._requestMode,connectionObserver:this._connectionObserver,metadata:(null==t?void 0:t.metadata)||null});if((null==t?void 0:t.signal)&&!m()&&("fetch"===t.requestMode?J.warn("Request with `{requestMode: fetch}` but no native AbortController."):a.requestMode="xhr"),Y.test(i)){o=!0;try{i=this._tryExpandSpecialURL(i)}catch(e){return Promise.reject(e)}"authorize"in a||(a.authorize=!0,a.autoAuthorized=!0)}const s=Object.assign(Object.assign({maxRetries:2,curve:"exponential"},t.retry),{retryPredicate:e=>!(e instanceof L)});return Promise.resolve(G.create(i,{method:t.method,headers:t.headers,payload:t.payload,options:a,urlExpanded:o,retryOptions:s}))}_tryExpandSpecialURL(e){const t=this._endpoints;return e.replace(Y,((e,n)=>{if(!t.hasOwnProperty(n))throw new TypeError(`Cannot replace endpoint @${n}: endpoint not defined.`);return t[n]}))}_sendFireAndForgetRequest(e){var t;const{url:n,method:r,options:o}=e;if(null===(t=o.signal)||void 0===t?void 0:t.aborted)return Promise.reject(new L);if("GET"!==r&&"POST"!==r)return Promise.reject(new q(i.TRANSPORT_UNSUPPORTED_OPTION,`Option 'forget' cannot be used for ${r} request.`));if(!o.autoAuthorized&&o.authorize)return Promise.reject(new q(i.TRANSPORT_UNSUPPORTED_OPTION,"Option 'forget' cannot be used for authorized request."));if(o.requestMode="xhr",o.authorize=!1,o.ignoreResponseBody=!0,"GET"===r)if("function"==typeof fetch){const e={mode:"no-cors"};o.signal&&m()&&(e.signal=o.signal),fetch(n,e).catch((()=>{}))}else"function"==typeof Image?(new Image).src=n:this._sendRetriedRequest(e,{}).catch((()=>{}));else if("POST"===r)if("undefined"!=typeof navigator&&(null===navigator||void 0===navigator?void 0:navigator.sendBeacon))navigator.sendBeacon(e.url,e.payload);else if("function"==typeof fetch){const t={method:"POST",mode:"no-cors",body:e.payload};o.signal&&m()&&(t.signal=o.signal),fetch(n,t).catch((()=>{}))}else this._sendRetriedRequest(e,{}).catch((()=>{}));return Promise.resolve(new M(n,0))}_sendRetriedRequest(e,t){const n=e.retryOptions,r=e.options.signal;let i=!1;const a=()=>(null==r?void 0:r.aborted)?Promise.reject(new L):this._setAuthHeader(e,i),u=this._connectionObserver,l=new W.V((()=>{let l;return l=u.isOnline()||e.options.allowOffline?a():new Promise(((e,t)=>{u.once(o.CONNECTION_ONLINE,(()=>{a().then(e,t)}))})),l.then((()=>{if(null==r?void 0:r.aborted)return Promise.reject(new L);let n;if(this._pluginMediator.emitSync(s.TRANSPORT_BEFORE_SEND_REQUEST,{request:e,context:t}),"fetch"===e.options.requestMode&&this._Fetch&&this._Fetch.isSupported())n=this._Fetch.request(e);else{if(!this._XHR)throw new Error("No available request mechanisms.");n=this._XHR.request(e)}return n})).then((t=>{if(null==r?void 0:r.aborted)return Promise.reject(new L);let o=null;if(t.headers&&(o=t.headers.get("Retry-After")),t.status===k.UNAUTHORIZED&&!e.options.ignoreUnauthorized)return i=!0,Promise.reject(t);if("function"==typeof(null==n?void 0:n.condition)&&(n.condition(t,z)||o)){if(null!==o)if(Q.test(o))t.retryAfter=new Date(o).getTime()-Date.now();else{const e=parseInt(o,10);e>0&&(t.retryAfter=1e3*e)}return Promise.reject(t)}return Promise.resolve(t)}))}),n);return l.start().catch(this._handleRetriedRequestError).then((n=>(null==r?void 0:r.aborted)?Promise.reject(new L):(n.metadata=e.options.metadata,n.retries=n.retries||{},n.retries.count=l.getRetryCount(),this._pluginMediator.emitSync(s.TRANSPORT_BEFORE_RETURN_RESPONSE,{context:t,response:n}),e.options.rejectNotOk&&!n.ok?Promise.reject(n):n)))}_setAuthHeader(e,t){if(!e.options.authorize)return Promise.resolve(e);const n=()=>this._refreshToken(t).then((t=>(e.headers.set("Authorization",`Bearer ${t}`),e)));return this._stateMask&ne?n():new Promise(((e,t)=>{J.info("Auth header setting awaiting authentication."),this.once(o.AUTHENTICATED,(()=>{J.info("Auth header set after authentication."),n().then(e,t)}))}))}_handleRetriedRequestError(e){return e instanceof M?Promise.resolve(e):Promise.reject(e)}_onAddListener(e,t){const n=t.data.options;if(n.ignoreCurrentState)return;let r;switch(e){case"connected":if(!this.isConnected())return;r=Promise.resolve(this.createEvent(o.CONNECTED,null));break;case"authenticated":{if(!this.isAuthenticated())return;const e=this._stateAwareOperationMetrics.authenticated;r=Promise.resolve(this.createEvent(o.AUTHENTICATED,{timing:e}));break}case"connection_id":{const e=this.getPluginAPI("dealer");if(!e||!e.hasConnectionInfo())return;r=e.getConnectionInfo().then((e=>this.createEvent(o.CONNECTION_ID,e)));break}case"transport_connect":if(!this.isConnected()||!this._endpoints)return;r=Promise.resolve(this._pluginMediator.createEvent(s.TRANSPORT_CONNECT,{endpoints:Object.assign({},this._endpoints),awaitPromise:e=>{}}));break;case"transport_authenticate":if(!this.isAuthenticated())return;r=this._refreshToken().then((e=>this._pluginMediator.createEvent(s.TRANSPORT_AUTHENTICATE,{token:e,awaitPromise:e=>{}})));break;default:return}const i=t.data.listener;this._stateAwareListeners[e].push(i);const a=this._stateAwareRunners;a[e]||(a[e]=r.then(this._runStateAwareQueues.bind(this,e)),n.once&&t.preventDefault())}_onRemoveListener(e,t){const n=t.data.options;if(n.ignoreCurrentState||n.once)return;const r=t.data.listener,i=this._stateAwareListeners[e].indexOf(r);-1!==i&&this._stateAwareListeners[e].splice(i,1)}_getQuickDisconnectTimeout(){return this._counter.getTime(this._quickDisconnectCount)}_onPluginDisconnected(e){const t=Date.now(),n=t-this._lastDisconnect;if(this._performDisconnect(),e.data.code===b.CLOSE)return J.info(`Plugin "${e.data.plugin}" explicitly disconnected`),void(this._quickDisconnectCount=0);this._connectionObserver.isOnline()&&(J.info(`Plugin "${e.data.plugin}" unexpectedly disconnect; trying to reconnect`),n<5e3?(this._reconnectTimeout&&clearTimeout(this._reconnectTimeout),this._quickDisconnectCount++,this.emit(o.SHORT_SESSION_DISCONNECTED,{disconnectCount:this._quickDisconnectCount,sessionLength:n}),this._reconnectTimeout=setTimeout(this._tryToReconnect.bind(this),this._getQuickDisconnectTimeout())):(this._quickDisconnectCount=0,this._lastDisconnect=t,this._tryToReconnect()))}_onOnline(){this.emit(o.CONNECTION_ONLINE,null),J.info("ConnectionObserver online"),this._connectCalled&&this._tryToReconnect()}_onOffline(){this.emit(o.CONNECTION_OFFLINE,null),J.info("ConnectioObserver offline"),this._performDisconnect()}_onConnected(){return this._stateMask|=te,this.emit(o.CONNECTED,null),J.info("Connected"),Promise.resolve(!0)}_onAuthenticated(e){e.end(),clearTimeout(this._reconnectTimeout),this._authenticationPromise=null,this._stateMask|=ne,this._initTime=Date.now();const t=e.getMetrics();return this.emit(o.AUTHENTICATED,{timing:t}),this._stateAwareOperationMetrics.authenticated=t,J.info("Authenticated"),Promise.resolve(!0)}_onAuthenticationFailed(e,t){t.end();const n=e&&e.error?e.error:e;this._authenticationPromise=null,this._stateMask&=~ne;const r={error:n,timing:t.getMetrics()};return this.emit(o.AUTHENTICATION_FAILED,r),this._pluginMediator.emit(s.TRANSPORT_AUTHENTICATE_FAILED,r),J.info("Authentication failed",n),Promise.reject(n)}_onLogout(){const e=()=>{this._lastToken=null,this._lastTokenExpiry=0,this.emit(o.LOGGED_OUT,null)};this._disconnect(u.LOG_OUT).then(e,e)}_disconnect(e){if(!this._connectCalled)return Promise.resolve(!1);this._connectCalled=!1,this._authenticateCalled=!1;const t=this.isConnected()?o.BEFORE_ONLINE_DISCONNECT:o.BEFORE_OFFLINE_DISCONNECT,n=[];return this.emitSync(t,{awaitPromise:e=>{n.push(e.catch((()=>{})))}}),Promise.all(n).then((()=>this._performDisconnect(e)))}isConnected(){return!!(this._stateMask&te)}isAuthenticated(){return!!(this._stateMask&ne)}isReconnecting(){return this._isReconnecting}isOnline(){return this._connectionObserver.isOnline()}connect(){return this._connectCalled=!0,this._connect()}authenticate(){return this._authenticateCalled=!0,this._authenticate(!0)}disconnect(){return this._disconnect(u.EXPLICIT)}forceDisconnect(){return this._connectCalled?(this._connectCalled=!1,this._authenticateCalled=!1,this._performDisconnect(u.EXPLICIT),Promise.resolve(!0)):Promise.resolve(!1)}forceTokenRefresh(){return this._refreshToken(!0).then((()=>!0))}getInitTime(){return this._initTime}getEndpoints(){return this._endpoints?Object.assign({},this._endpoints):null}getLastToken(){return this._lastToken}toPublic(e){return new K(this,e)}hasOwnerRef(e){return this._ownerRef===e}appendTokenQuery(e){return this._refreshToken().then((t=>re(e,t)))}appendLastTokenQuery(e){return this._lastToken?re(e,this._lastToken):e}matchMessages(e,t,n){if(!e)throw new TypeError('Message "matcher" cannot be null.');if("function"!=typeof t)throw new TypeError("Message callback cannot be null.");const r=r=>{const i=r.data.message;!i.uri||!i.uri.match(e)||n&&n!==r.data.plugin||t(i)};r.__matchMessagesExp=e,r.__matchMessagesPlugin=n,t.__matchMessagesWrapper=r,this._pluginMediator.on(s.PLUGIN_MESSAGE,r)}unmatchMessages(e,t,n){if("function"!=typeof t)throw new TypeError("Message callback cannot be null.");const r=t.__matchMessagesWrapper;return!(!r||r.__matchMessagesExp!==e||r.__matchMessagesPlugin!==n)&&(this._pluginMediator.removeListener(s.PLUGIN_MESSAGE,r),!0)}handlePushRequests(e,t,n){if(!e)throw new TypeError('Push request "matcher" cannot be null.');if("function"!=typeof t)throw new TypeError("Push request callback cannot be null.");const r=r=>{const i=r.data.request;!i.message_ident||!i.message_ident.match(e)||n&&n!==r.data.plugin||Promise.resolve(t(i)).then(r.data.reply)};r.__matchRequestExp=e,r.__matchRequestPlugin=n,t.__matchRequestWrapper=r,this._pluginMediator.on(s.PLUGIN_REQUEST,r)}unhandlePushRequests(e,t,n){if("function"!=typeof t)throw new TypeError("Push request callback cannot be null.");const r=t.__matchRequestWrapper;return!(!r||r.__matchRequestExp!==e||r.__matchRequestPlugin!==n)&&(this._pluginMediator.removeListener(s.PLUGIN_REQUEST,r),!0)}request(e,t){var n;const r={uri:e,options:t,context:{}};this._pluginMediator.emitSync(s.TRANSPORT_BEFORE_PROCESS_REQUEST,r);const i=this._sendRequest.bind(this,r.uri,r.options,r.context);if(!this._endpoints&&Y.test(r.uri))return J.info("Request queued until endpoints resolved",r.uri),new Promise(((e,t)=>{this.once(o.ENDPOINTS_RESOLVED,(()=>{J.info("Sending endpoints-queued request",r.uri),i().then(e,t)}))}));return!this._connectionObserver.isOnline()&&!(null===(n=r.options)||void 0===n?void 0:n.allowOffline)?(J.info("Request queued until online",r.uri),new Promise(((e,t)=>{this.once(o.CONNECTION_ONLINE,(()=>{J.info("Sending offline-queued request",r.uri),i().then(e,t)}))}))):i()}addPlugin(e,t){const n=e(this,t),r=n.name;if(this._plugins[r])throw new TypeError("Plugin is already added.");return n.attach(this,this._pluginMediator),this._plugins[r]=n,r}removePlugin(e){const t=this._plugins[e];return!!t&&(t.detach(this,this._pluginMediator),this._plugins[e]=void 0,!0)}hasPlugin(e){return!!this._plugins[e]}getPluginAPI(e){const t=this._plugins[e];return t&&t.api?t.api:null}getConnectionId(e="dealer"){const t=this._plugins[e];return t?t.api&&function(e){return"getConnectionInfo"in e.api}(t)?t.api.getConnectionInfo().then((e=>e.id)):Promise.reject(new TypeError(`Plugin ${t} is not a socket plugin.`)):Promise.reject(new TypeError(`Cannot retrieve connection id for plugin ${t}.`))}removeAllListeners(){return this}}class oe{constructor(e){this._headers={},this._init(e)}_init(e){if(e){const t=e.split("\r\n");for(const e of t){const t=e.indexOf(": ");if(t>0){const n=e.substring(0,t).toLowerCase(),r=e.substring(t+2);this._headers[n]=r}}}}get(e){return this._headers[e.toLowerCase()]||null}has(e){return this._headers.hasOwnProperty(e.toLowerCase())}}const ae=N.P.forTag("transport.http.xhr"),se=function(){},ue={json:!0,text:!0,document:!0};function le(){this.onabort=se,this.onerror=se,this.onload=se,this.onloadend=se}function ce(e,t,n){var r,i;if(null===(r=e.options.signal)||void 0===r?void 0:r.aborted)return;const o=Date.now(),a=this.status,s=new M(this.responseURL||e.url,a);s.body=null;const u=e.options;if(u.timing&&(s.timing={completed:o-t}),(null===(i=u.connectionObserver)||void 0===i?void 0:i.isOnline)&&(s.offline=!u.connectionObserver.isOnline()),(u.parseResponseHeaders||a>299)&&(s.headers=new oe(this.getAllResponseHeaders())),!u.ignoreResponseBody&&a!==k.NO_CONTENT){const e=u.responseType||"";if(!u.forcePolyfill&&"response"in this&&e===this.responseType)s.body=this.response;else if("document"===e)s.body=this.responseXML;else if("json"===e)try{s.body=JSON.parse(this.responseText)}catch(e){ae.warn("Could not parse response as JSON:",e),s.body=null}else"text"!==e&&""!==e||(s.body=this.responseText)}n(s)}function fe(e,t,n){4===this.readyState?t(new M(this.responseURL||e,this.status)):n(new P(i.HTTP_REQUEST_FAILED,"Request cannot be completed.",this.status))}function de(e){const t=e.options.signal;return new Promise(((n,r)=>{if(null==t?void 0:t.aborted)return void r(new L);const i=new XMLHttpRequest;let o=e.url;if(!o)return void r(new TypeError("Request URL cannot be blank."));let a=null;const s=e.method||"GET",u=e.payload||"";s in R&&u?a=u:u&&(o+=`?${u}`),i.open(s,o,!0),i.onerror=fe.bind(i,o,n,r),i.onabort=le,i.onloadend=le,i.onprogress=se;const l=e.options;"include"===l.credentials&&(i.withCredentials=!0);const c=l.responseType;if(c)if(l.forcePolyfill){if(!(c in ue))return void r(new TypeError(`Cannot polyfill responseType "${c}"`))}else{if(!("responseType"in i)&&!(c in ue))return void r(new TypeError("Cannot set responseType: not supported in browser."));try{i.responseType=c}catch(e){return void r(new TypeError(`Unknown responseType "${c}".`))}if(i&&c!==i.responseType&&!(c in ue))return void r(new TypeError(`Unknown responseType "${c}".`))}const f=e.headers.count()?e.headers.toJSON():null;if(f)for(const e in f)if(f.hasOwnProperty(e)&&f[e])try{i.setRequestHeader(e,f[e])}catch(e){return void r(e)}t&&t.addEventListener("abort",(function e(){t.removeEventListener("abort",e),i.abort(),r(new L)})),i.onload=ce.bind(i,e,Date.now(),n);try{i.send(a)}catch(e){return void r(e)}}))}function he(e){return de(e)}class pe extends Error{constructor(e,t,n=-1){super(t),this.name="XResolveError",this.message=t,this.code=e,this.status=n}}const me="dealer",ge="spclient",ye={spclient:"spclient.wg.spotify.com",exp:"exp.wg.spotify.com",partners:"partners.wg.spotify.com"};function ve(e={}){const t=e.dealer||me,n=e.webgate||ge,r=`https://apresolve.spotify.com/?type=${t}&type=${n}`;return function(e){return e.request(r,{forcePolyfill:!0,responseType:"json",retry:{maxRetries:3,curve:"exponential",condition:function(e,t){return e.getStatusFamily()!==t.SUCCESS}},metadata:{noRequestTransform:!0}}).then((e=>{var r,o,a,s,u;const l=e.body,c={dealer:null!==(o=null===(r=null==l?void 0:l[t])||void 0===r?void 0:r[0])&&void 0!==o?o:"dealer.spotify.com",webgate:null!==(u=null!==(s=null===(a=null==l?void 0:l[n])||void 0===a?void 0:a[0])&&void 0!==s?s:ye[n])&&void 0!==u?u:ye.spclient,webapi:"https://api.spotify.com/"};if(!c.dealer||!c.webgate)throw new pe(i.XRESOLVE_INCOMPLETE_RESPONSE,"X-Resolve responded with incomplete results.",e.status);return c})).then((e=>(e.dealer=`wss://${e.dealer.replace(/:443$/,"")}`,e.webgate=`https://${e.webgate.replace(/:443$/,"")}`,e)))}}function be(e){const t=Object.assign({},e);return t.XHR||(t.XHR=l),t.Fetch=r,ie.create(t)}function _e(e){const t=be(e);return t.addPlugin(I,{WebSocket}),t}},7661:(e,t,n)=>{"use strict"},8764:(e,t,n)=>{"use strict";const r=n(2191),i=n(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=u,t.SlowBuffer=function(e){+e!=e&&(e=0);return u.alloc(+e)},t.INSPECT_MAX_BYTES=50;const a=2147483647;function s(e){if(e>a)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,u.prototype),t}function u(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return f(e)}return l(e,t,n)}function l(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!u.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|m(e,t);let r=s(n);const i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(X(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(X(e,ArrayBuffer)||e&&X(e.buffer,ArrayBuffer))return h(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(X(e,SharedArrayBuffer)||e&&X(e.buffer,SharedArrayBuffer)))return h(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return u.from(r,t,n);const i=function(e){if(u.isBuffer(e)){const t=0|p(e.length),n=s(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||J(e.length)?s(0):d(e);if("Buffer"===e.type&&Array.isArray(e.data))return d(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return u.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function f(e){return c(e),s(e<0?0:0|p(e))}function d(e){const t=e.length<0?0:0|p(e.length),n=s(t);for(let r=0;r=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|e}function m(e,t){if(u.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||X(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return $(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return G(e).length;default:if(i)return r?-1:$(e).length;t=(""+t).toLowerCase(),i=!0}}function g(e,t,n){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return N(this,t,n);case"utf8":case"utf-8":return C(this,t,n);case"ascii":return A(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return O(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),J(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,i){let o,a=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,n/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){let r=-1;for(o=n;os&&(n=s-u),o=n;o>=0;o--){let n=!0;for(let r=0;ri&&(r=i):r=i;const o=t.length;let a;for(r>o/2&&(r=o/2),a=0;a>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function O(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function C(e,t,n){n=Math.min(e.length,n);const r=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+a<=n){let n,r,s,u;switch(a){case 1:t<128&&(o=t);break;case 2:n=e[i+1],128==(192&n)&&(u=(31&t)<<6|63&n,u>127&&(o=u));break;case 3:n=e[i+1],r=e[i+2],128==(192&n)&&128==(192&r)&&(u=(15&t)<<12|(63&n)<<6|63&r,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:n=e[i+1],r=e[i+2],s=e[i+3],128==(192&n)&&128==(192&r)&&128==(192&s)&&(u=(15&t)<<18|(63&n)<<12|(63&r)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=a}return function(e){const t=e.length;if(t<=x)return String.fromCharCode.apply(String,e);let n="",r=0;for(;rr.length?(u.isBuffer(t)||(t=u.from(t)),t.copy(r,i)):Uint8Array.prototype.set.call(r,t,i);else{if(!u.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,i)}i+=t.length}return r},u.byteLength=m,u.prototype._isBuffer=!0,u.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},o&&(u.prototype[o]=u.prototype.inspect),u.prototype.compare=function(e,t,n,r,i){if(X(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),!u.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;let o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0);const s=Math.min(o,a),l=this.slice(r,i),c=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}const i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let o=!1;for(;;)switch(r){case"hex":return _(this,e,t,n);case"utf8":case"utf-8":return E(this,e,t,n);case"ascii":case"latin1":case"binary":return w(this,e,t,n);case"base64":return T(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function A(e,t,n){let r="";n=Math.min(e.length,n);for(let i=t;ir)&&(n=r);let i="";for(let r=t;rn)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,n,r,i,o){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,n,r,i){H(t,r,i,e,n,7);let o=Number(t&BigInt(4294967295));e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=a,a>>=8,e[n++]=a,a>>=8,e[n++]=a,a>>=8,e[n++]=a,n}function D(e,t,n,r,i){H(t,r,i,e,n,7);let o=Number(t&BigInt(4294967295));e[n+7]=o,o>>=8,e[n+6]=o,o>>=8,e[n+5]=o,o>>=8,e[n+4]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=a,a>>=8,e[n+2]=a,a>>=8,e[n+1]=a,a>>=8,e[n]=a,n+8}function M(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function U(e,t,n,r,o){return t=+t,n>>>=0,o||M(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function j(e,t,n,r,o){return t=+t,n>>>=0,o||M(e,0,n,8),i.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||k(e,t,this.length);let r=this[e],i=1,o=0;for(;++o>>=0,t>>>=0,n||k(e,t,this.length);let r=this[e+--t],i=1;for(;t>0&&(i*=256);)r+=this[e+--t]*i;return r},u.prototype.readUint8=u.prototype.readUInt8=function(e,t){return e>>>=0,t||k(e,1,this.length),this[e]},u.prototype.readUint16LE=u.prototype.readUInt16LE=function(e,t){return e>>>=0,t||k(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUint16BE=u.prototype.readUInt16BE=function(e,t){return e>>>=0,t||k(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUint32LE=u.prototype.readUInt32LE=function(e,t){return e>>>=0,t||k(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUint32BE=u.prototype.readUInt32BE=function(e,t){return e>>>=0,t||k(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readBigUInt64LE=Z((function(e){W(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(r)+(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(r)<>>=0,t>>>=0,n||k(e,t,this.length);let r=this[e],i=1,o=0;for(;++o=i&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||k(e,t,this.length);let r=t,i=1,o=this[e+--r];for(;r>0&&(i*=256);)o+=this[e+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},u.prototype.readInt8=function(e,t){return e>>>=0,t||k(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){e>>>=0,t||k(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){e>>>=0,t||k(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return e>>>=0,t||k(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return e>>>=0,t||k(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readBigInt64LE=Z((function(e){W(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(r)<>>=0,t||k(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return e>>>=0,t||k(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return e>>>=0,t||k(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return e>>>=0,t||k(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUintLE=u.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){P(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=1,o=0;for(this[t]=255&e;++o>>=0,n>>>=0,!r){P(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=n-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+n},u.prototype.writeUint8=u.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,1,255,0),this[t]=255&e,t+1},u.prototype.writeUint16LE=u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeUint16BE=u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeUint32LE=u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},u.prototype.writeUint32BE=u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigUInt64LE=Z((function(e,t=0){return L(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeBigUInt64BE=Z((function(e,t=0){return D(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);P(this,e,t,n,r-1,-r)}let i=0,o=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+n},u.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);P(this,e,t,n,r-1,-r)}let i=n-1,o=1,a=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigInt64LE=Z((function(e,t=0){return L(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeBigInt64BE=Z((function(e,t=0){return D(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeFloatLE=function(e,t,n){return U(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return U(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return j(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return j(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(!u.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i=r+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function H(e,t,n,r,i,o){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(o+1)}${r}`:`>= -(2${r} ** ${8*(o+1)-1}${r}) and < 2 ** ${8*(o+1)-1}${r}`:`>= ${t}${r} and <= ${n}${r}`,new F.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,n){W(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||V(t,e.length-(n+1))}(r,i,o)}function W(e,t){if("number"!=typeof e)throw new F.ERR_INVALID_ARG_TYPE(t,"number",e)}function V(e,t,n){if(Math.floor(e)!==e)throw W(e,n),new F.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new F.ERR_BUFFER_OUT_OF_BOUNDS;throw new F.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}B("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),B("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),B("ERR_OUT_OF_RANGE",(function(e,t,n){let r=`The value of "${e}" is out of range.`,i=n;return Number.isInteger(n)&&Math.abs(n)>2**32?i=z(String(n)):"bigint"==typeof n&&(i=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(i=z(i)),i+="n"),r+=` It must be ${t}. Received ${i}`,r}),RangeError);const q=/[^+/0-9A-Za-z-_]/g;function $(e,t){let n;t=t||1/0;const r=e.length;let i=null;const o=[];for(let a=0;a55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function G(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,n,r){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function X(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function J(e){return e!=e}const Y=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const r=16*n;for(let i=0;i<16;++i)t[r+i]=e[n]+e[i]}return t}();function Z(e){return"undefined"==typeof BigInt?Q:e}function Q(){throw new Error("BigInt not supported")}},2191:(e,t)=>{"use strict";t.byteLength=function(e){var t=u(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,o=u(e),a=o[0],s=o[1],l=new i(function(e,t,n){return 3*(t+n)/4-n}(0,a,s)),c=0,f=s>0?a-4:a;for(n=0;n>16&255,l[c++]=t>>8&255,l[c++]=255&t;2===s&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,l[c++]=255&t);1===s&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,l[c++]=t>>8&255,l[c++]=255&t);return l},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],a=16383,s=0,u=r-i;su?u:s+a));1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return o.join("")};for(var n=[],r=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,s=o.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function l(e,t,r){for(var i,o,a=[],s=t;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},4184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9818:(e,t,n)=>{var r=n(8874),i=n(6851),o=Object.hasOwnProperty,a={};for(var s in r)o.call(r,s)&&(a[r[s]]=s);var u=e.exports={to:{},get:{}};function l(e,t,n){return Math.min(Math.max(t,e),n)}function c(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}u.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=u.get.hsl(e),n="hsl";break;case"hwb":t=u.get.hwb(e),n="hwb";break;default:t=u.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},u.get.rgb=function(e){if(!e)return null;var t,n,i,a=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=t[2],t=t[1],n=0;n<3;n++){var s=2*n;a[n]=parseInt(t.slice(s,s+2),16)}i&&(a[3]=parseInt(i,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=(t=t[1])[3],n=0;n<3;n++)a[n]=parseInt(t[n]+t[n],16);i&&(a[3]=parseInt(i+i,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)a[n]=parseInt(t[n+1],0);t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:o.call(r,t[1])?((a=r[t[1]])[3]=1,a):null:null;for(n=0;n<3;n++)a[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}for(n=0;n<3;n++)a[n]=l(a[n],0,255);return a[3]=l(a[3],0,1),a},u.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},u.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},u.to.hex=function(){var e=i(arguments);return"#"+c(e[0])+c(e[1])+c(e[2])+(e[3]<1?c(Math.round(255*e[3])):"")},u.to.rgb=function(){var e=i(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},u.to.rgb.percent=function(){var e=i(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+r+"%)":"rgba("+t+"%, "+n+"%, "+r+"%, "+e[3]+")"},u.to.hsl=function(){var e=i(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},u.to.hwb=function(){var e=i(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},u.to.keyword=function(e){return a[e.slice(0,3)]}},6767:(e,t,n)=>{"use strict";var r=n(9818),i=n(978),o=[].slice,a=["keyword","gray","hex"],s={};Object.keys(i).forEach((function(e){s[o.call(i[e].labels).sort().join("")]=e}));var u={};function l(e,t){if(!(this instanceof l))return new l(e,t);if(t&&t in a&&(t=null),t&&!(t in i))throw new Error("Unknown model: "+t);var n,c;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof l)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var f=r.get(e);if(null===f)throw new Error("Unable to parse color from string: "+e);this.model=f.model,c=i[this.model].channels,this.color=f.value.slice(0,c),this.valpha="number"==typeof f.value[c]?f.value[c]:1}else if(e.length){this.model=t||"rgb",c=i[this.model].channels;var d=o.call(e,0,c);this.color=h(d,c),this.valpha="number"==typeof e[c]?e[c]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var p=Object.keys(e);"alpha"in e&&(p.splice(p.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var m=p.sort().join("");if(!(m in s))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=s[m];var g=i[this.model].labels,y=[];for(n=0;nn?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return l.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var n=e.rgb(),r=this.rgb(),i=void 0===t?.5:t,o=2*i-1,a=n.alpha()-r.alpha(),s=((o*a==-1?o:(o+a)/(1+o*a))+1)/2,u=1-s;return l.rgb(s*n.red()+u*r.red(),s*n.green()+u*r.green(),s*n.blue()+u*r.blue(),n.alpha()*i+r.alpha()*(1-i))}},Object.keys(i).forEach((function(e){if(-1===a.indexOf(e)){var t=i[e].channels;l.prototype[e]=function(){if(this.model===e)return new l(this);if(arguments.length)return new l(arguments,e);var n="number"==typeof arguments[t]?t:this.valpha;return new l(d(i[this.model][e].raw(this.color)).concat(n),e)},l[e]=function(n){return"number"==typeof n&&(n=h(o.call(arguments),t)),new l(n,e)}}})),e.exports=l},2956:(e,t,n)=>{var r=n(8900),i={};for(var o in r)r.hasOwnProperty(o)&&(i[r[o]]=o);var a=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var s in a)if(a.hasOwnProperty(s)){if(!("channels"in a[s]))throw new Error("missing channels property: "+s);if(!("labels"in a[s]))throw new Error("missing channel labels property: "+s);if(a[s].labels.length!==a[s].channels)throw new Error("channel and label counts mismatch: "+s);var u=a[s].channels,l=a[s].labels;delete a[s].channels,delete a[s].labels,Object.defineProperty(a[s],"channels",{value:u}),Object.defineProperty(a[s],"labels",{value:l})}function c(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2)}a.rgb.hsl=function(e){var t,n,r=e[0]/255,i=e[1]/255,o=e[2]/255,a=Math.min(r,i,o),s=Math.max(r,i,o),u=s-a;return s===a?t=0:r===s?t=(i-o)/u:i===s?t=2+(o-r)/u:o===s&&(t=4+(r-i)/u),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+s)/2,[t,100*(s===a?0:n<=.5?u/(s+a):u/(2-s-a)),100*n]},a.rgb.hsv=function(e){var t,n,r,i,o,a=e[0]/255,s=e[1]/255,u=e[2]/255,l=Math.max(a,s,u),c=l-Math.min(a,s,u),f=function(e){return(l-e)/6/c+.5};return 0===c?i=o=0:(o=c/l,t=f(a),n=f(s),r=f(u),a===l?i=r-n:s===l?i=1/3+t-r:u===l&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*o,100*l]},a.rgb.hwb=function(e){var t=e[0],n=e[1],r=e[2];return[a.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(n,r))),100*(r=1-1/255*Math.max(t,Math.max(n,r)))]},a.rgb.cmyk=function(e){var t,n=e[0]/255,r=e[1]/255,i=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-r,1-i)))/(1-t)||0),100*((1-r-t)/(1-t)||0),100*((1-i-t)/(1-t)||0),100*t]},a.rgb.keyword=function(e){var t=i[e];if(t)return t;var n,o=1/0;for(var a in r)if(r.hasOwnProperty(a)){var s=c(e,r[a]);s.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},a.rgb.lab=function(e){var t=a.rgb.xyz(e),n=t[0],r=t[1],i=t[2];return r/=100,i/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.hsl.rgb=function(e){var t,n,r,i,o,a=e[0]/360,s=e[1]/100,u=e[2]/100;if(0===s)return[o=255*u,o,o];t=2*u-(n=u<.5?u*(1+s):u+s-u*s),i=[0,0,0];for(var l=0;l<3;l++)(r=a+1/3*-(l-1))<0&&r++,r>1&&r--,o=6*r<1?t+6*(n-t)*r:2*r<1?n:3*r<2?t+(n-t)*(2/3-r)*6:t,i[l]=255*o;return i},a.hsl.hsv=function(e){var t=e[0],n=e[1]/100,r=e[2]/100,i=n,o=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,i*=o<=1?o:2-o,[t,100*(0===r?2*i/(o+i):2*n/(r+n)),100*((r+n)/2)]},a.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,r=e[2]/100,i=Math.floor(t)%6,o=t-Math.floor(t),a=255*r*(1-n),s=255*r*(1-n*o),u=255*r*(1-n*(1-o));switch(r*=255,i){case 0:return[r,u,a];case 1:return[s,r,a];case 2:return[a,r,u];case 3:return[a,s,r];case 4:return[u,a,r];case 5:return[r,a,s]}},a.hsv.hsl=function(e){var t,n,r,i=e[0],o=e[1]/100,a=e[2]/100,s=Math.max(a,.01);return r=(2-o)*a,n=o*s,[i,100*(n=(n/=(t=(2-o)*s)<=1?t:2-t)||0),100*(r/=2)]},a.hwb.rgb=function(e){var t,n,r,i,o,a,s,u=e[0]/360,l=e[1]/100,c=e[2]/100,f=l+c;switch(f>1&&(l/=f,c/=f),r=6*u-(t=Math.floor(6*u)),0!=(1&t)&&(r=1-r),i=l+r*((n=1-c)-l),t){default:o=n,a=i,s=l;break;case 1:o=i,a=n,s=l;break;case 2:o=l,a=n,s=i;break;case 3:o=l,a=i,s=n;break;case 4:o=i,a=l,s=n;break;case 5:o=n,a=l,s=i}return[255*o,255*a,255*s]},a.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},a.xyz.rgb=function(e){var t,n,r,i=e[0]/100,o=e[1]/100,a=e[2]/100;return n=-.9689*i+1.8758*o+.0415*a,r=.0557*i+-.204*o+1.057*a,t=(t=3.2406*i+-1.5372*o+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},a.xyz.lab=function(e){var t=e[0],n=e[1],r=e[2];return n/=100,r/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.lab.xyz=function(e){var t,n,r,i=e[0];t=e[1]/500+(n=(i+16)/116),r=n-e[2]/200;var o=Math.pow(n,3),a=Math.pow(t,3),s=Math.pow(r,3);return n=o>.008856?o:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,r=s>.008856?s:(r-16/116)/7.787,[t*=95.047,n*=100,r*=108.883]},a.lab.lch=function(e){var t,n=e[0],r=e[1],i=e[2];return(t=360*Math.atan2(i,r)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(r*r+i*i),t]},a.lch.lab=function(e){var t,n=e[0],r=e[1];return t=e[2]/360*2*Math.PI,[n,r*Math.cos(t),r*Math.sin(t)]},a.rgb.ansi16=function(e){var t=e[0],n=e[1],r=e[2],i=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];if(0===(i=Math.round(i/50)))return 30;var o=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===i&&(o+=60),o},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){var t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},a.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},a.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},a.rgb.hcg=function(e){var t,n=e[0]/255,r=e[1]/255,i=e[2]/255,o=Math.max(Math.max(n,r),i),a=Math.min(Math.min(n,r),i),s=o-a;return t=s<=0?0:o===n?(r-i)/s%6:o===r?2+(i-n)/s:4+(n-r)/s+4,t/=6,[360*(t%=1),100*s,100*(s<1?a/(1-s):0)]},a.hsl.hcg=function(e){var t=e[1]/100,n=e[2]/100,r=1,i=0;return(r=n<.5?2*t*n:2*t*(1-n))<1&&(i=(n-.5*r)/(1-r)),[e[0],100*r,100*i]},a.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,r=t*n,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},a.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];var i,o=[0,0,0],a=t%1*6,s=a%1,u=1-s;switch(Math.floor(a)){case 0:o[0]=1,o[1]=s,o[2]=0;break;case 1:o[0]=u,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=s;break;case 3:o[0]=0,o[1]=u,o[2]=1;break;case 4:o[0]=s,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=u}return i=(1-n)*r,[255*(n*o[0]+i),255*(n*o[1]+i),255*(n*o[2]+i)]},a.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},a.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},a.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,r=n-t,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]},a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},978:(e,t,n)=>{var r=n(2956),i=n(7774),o={};Object.keys(r).forEach((function(e){o[e]={},Object.defineProperty(o[e],"channels",{value:r[e].channels}),Object.defineProperty(o[e],"labels",{value:r[e].labels});var t=i(e);Object.keys(t).forEach((function(n){var r=t[n];o[e][n]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var r=n.length,i=0;i1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(r)}))})),e.exports=o},7774:(e,t,n)=>{var r=n(2956);function i(e){var t=function(){for(var e={},t=Object.keys(r),n=t.length,i=0;i{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9662:(e,t,n)=>{var r=n(7854),i=n(614),o=n(6330),a=r.TypeError;e.exports=function(e){if(i(e))return e;throw a(o(e)+" is not a function")}},9670:(e,t,n)=>{var r=n(7854),i=n(111),o=r.String,a=r.TypeError;e.exports=function(e){if(i(e))return e;throw a(o(e)+" is not an object")}},1318:(e,t,n)=>{var r=n(5656),i=n(1400),o=n(6244),a=function(e){return function(t,n,a){var s,u=r(t),l=o(u),c=i(a,l);if(e&&n!=n){for(;l>c;)if((s=u[c++])!=s)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},206:(e,t,n)=>{var r=n(1702);e.exports=r([].slice)},4326:(e,t,n)=>{var r=n(1702),i=r({}.toString),o=r("".slice);e.exports=function(e){return o(i(e),8,-1)}},9920:(e,t,n)=>{var r=n(2597),i=n(3887),o=n(1236),a=n(3070);e.exports=function(e,t,n){for(var s=i(t),u=a.f,l=o.f,c=0;c{var r=n(9781),i=n(3070),o=n(9114);e.exports=r?function(e,t,n){return i.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},9114:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},9781:(e,t,n)=>{var r=n(7293);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:(e,t,n)=>{var r=n(7854),i=n(111),o=r.document,a=i(o)&&i(o.createElement);e.exports=function(e){return a?o.createElement(e):{}}},6833:(e,t,n)=>{var r=n(8113);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},5268:(e,t,n)=>{var r=n(4326),i=n(7854);e.exports="process"==r(i.process)},8113:(e,t,n)=>{var r=n(5005);e.exports=r("navigator","userAgent")||""},7392:(e,t,n)=>{var r,i,o=n(7854),a=n(8113),s=o.process,u=o.Deno,l=s&&s.versions||u&&u.version,c=l&&l.v8;c&&(i=(r=c.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!i&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(i=+r[1]),e.exports=i},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:(e,t,n)=>{var r=n(7854),i=n(1236).f,o=n(8880),a=n(1320),s=n(3505),u=n(9920),l=n(4705);e.exports=function(e,t){var n,c,f,d,h,p=e.target,m=e.global,g=e.stat;if(n=m?r:g?r[p]||s(p,{}):(r[p]||{}).prototype)for(c in t){if(d=t[c],f=e.noTargetGet?(h=i(n,c))&&h.value:n[c],!l(m?c:p+(g?".":"#")+c,e.forced)&&void 0!==f){if(typeof d==typeof f)continue;u(d,f)}(e.sham||f&&f.sham)&&o(d,"sham",!0),a(n,c,d,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},2104:(e,t,n)=>{var r=n(4374),i=Function.prototype,o=i.apply,a=i.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(o):function(){return a.apply(o,arguments)})},9974:(e,t,n)=>{var r=n(1702),i=n(9662),o=n(4374),a=r(r.bind);e.exports=function(e,t){return i(e),void 0===t?e:o?a(e,t):function(){return e.apply(t,arguments)}}},4374:(e,t,n)=>{var r=n(7293);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},6916:(e,t,n)=>{var r=n(4374),i=Function.prototype.call;e.exports=r?i.bind(i):function(){return i.apply(i,arguments)}},6530:(e,t,n)=>{var r=n(9781),i=n(2597),o=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=i(o,"name"),u=s&&"something"===function(){}.name,l=s&&(!r||r&&a(o,"name").configurable);e.exports={EXISTS:s,PROPER:u,CONFIGURABLE:l}},1702:(e,t,n)=>{var r=n(4374),i=Function.prototype,o=i.bind,a=i.call,s=r&&o.bind(a,a);e.exports=r?function(e){return e&&s(e)}:function(e){return e&&function(){return a.apply(e,arguments)}}},5005:(e,t,n)=>{var r=n(7854),i=n(614),o=function(e){return i(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e]):r[e]&&r[e][t]}},8173:(e,t,n)=>{var r=n(9662);e.exports=function(e,t){var n=e[t];return null==n?void 0:r(n)}},7854:(e,t,n)=>{var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},2597:(e,t,n)=>{var r=n(1702),i=n(7908),o=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return o(i(e),t)}},3501:e=>{e.exports={}},490:(e,t,n)=>{var r=n(5005);e.exports=r("document","documentElement")},4664:(e,t,n)=>{var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},8361:(e,t,n)=>{var r=n(7854),i=n(1702),o=n(7293),a=n(4326),s=r.Object,u=i("".split);e.exports=o((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?u(e,""):s(e)}:s},2788:(e,t,n)=>{var r=n(1702),i=n(614),o=n(5465),a=r(Function.toString);i(o.inspectSource)||(o.inspectSource=function(e){return a(e)}),e.exports=o.inspectSource},9909:(e,t,n)=>{var r,i,o,a=n(8536),s=n(7854),u=n(1702),l=n(111),c=n(8880),f=n(2597),d=n(5465),h=n(6200),p=n(3501),m="Object already initialized",g=s.TypeError,y=s.WeakMap;if(a||d.state){var v=d.state||(d.state=new y),b=u(v.get),_=u(v.has),E=u(v.set);r=function(e,t){if(_(v,e))throw new g(m);return t.facade=e,E(v,e,t),t},i=function(e){return b(v,e)||{}},o=function(e){return _(v,e)}}else{var w=h("state");p[w]=!0,r=function(e,t){if(f(e,w))throw new g(m);return t.facade=e,c(e,w,t),t},i=function(e){return f(e,w)?e[w]:{}},o=function(e){return f(e,w)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return n}}}},614:e=>{e.exports=function(e){return"function"==typeof e}},4705:(e,t,n)=>{var r=n(7293),i=n(614),o=/#|\.prototype\./,a=function(e,t){var n=u[s(e)];return n==c||n!=l&&(i(t)?r(t):!!t)},s=a.normalize=function(e){return String(e).replace(o,".").toLowerCase()},u=a.data={},l=a.NATIVE="N",c=a.POLYFILL="P";e.exports=a},111:(e,t,n)=>{var r=n(614);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},1913:e=>{e.exports=!1},2190:(e,t,n)=>{var r=n(7854),i=n(5005),o=n(614),a=n(7976),s=n(3307),u=r.Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=i("Symbol");return o(t)&&a(t.prototype,u(e))}},6244:(e,t,n)=>{var r=n(7466);e.exports=function(e){return r(e.length)}},133:(e,t,n)=>{var r=n(7392),i=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},8536:(e,t,n)=>{var r=n(7854),i=n(614),o=n(2788),a=r.WeakMap;e.exports=i(a)&&/native code/.test(o(a))},3070:(e,t,n)=>{var r=n(7854),i=n(9781),o=n(4664),a=n(3353),s=n(9670),u=n(4948),l=r.TypeError,c=Object.defineProperty,f=Object.getOwnPropertyDescriptor,d="enumerable",h="configurable",p="writable";t.f=i?a?function(e,t,n){if(s(e),t=u(t),s(n),"function"==typeof e&&"prototype"===t&&"value"in n&&p in n&&!n.writable){var r=f(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:h in n?n.configurable:r.configurable,enumerable:d in n?n.enumerable:r.enumerable,writable:!1})}return c(e,t,n)}:c:function(e,t,n){if(s(e),t=u(t),s(n),o)try{return c(e,t,n)}catch(e){}if("get"in n||"set"in n)throw l("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:(e,t,n)=>{var r=n(9781),i=n(6916),o=n(5296),a=n(9114),s=n(5656),u=n(4948),l=n(2597),c=n(4664),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=u(t),c)try{return f(e,t)}catch(e){}if(l(e,t))return a(!i(o.f,e,t),e[t])}},8006:(e,t,n)=>{var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:(e,t)=>{t.f=Object.getOwnPropertySymbols},7976:(e,t,n)=>{var r=n(1702);e.exports=r({}.isPrototypeOf)},6324:(e,t,n)=>{var r=n(1702),i=n(2597),o=n(5656),a=n(1318).indexOf,s=n(3501),u=r([].push);e.exports=function(e,t){var n,r=o(e),l=0,c=[];for(n in r)!i(s,n)&&i(r,n)&&u(c,n);for(;t.length>l;)i(r,n=t[l++])&&(~a(c,n)||u(c,n));return c}},5296:(e,t)=>{"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},2140:(e,t,n)=>{var r=n(7854),i=n(6916),o=n(614),a=n(111),s=r.TypeError;e.exports=function(e,t){var n,r;if("string"===t&&o(n=e.toString)&&!a(r=i(n,e)))return r;if(o(n=e.valueOf)&&!a(r=i(n,e)))return r;if("string"!==t&&o(n=e.toString)&&!a(r=i(n,e)))return r;throw s("Can't convert object to primitive value")}},3887:(e,t,n)=>{var r=n(5005),i=n(1702),o=n(8006),a=n(5181),s=n(9670),u=i([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(s(e)),n=a.f;return n?u(t,n(e)):t}},1320:(e,t,n)=>{var r=n(7854),i=n(614),o=n(2597),a=n(8880),s=n(3505),u=n(2788),l=n(9909),c=n(6530).CONFIGURABLE,f=l.get,d=l.enforce,h=String(String).split("String");(e.exports=function(e,t,n,u){var l,f=!!u&&!!u.unsafe,p=!!u&&!!u.enumerable,m=!!u&&!!u.noTargetGet,g=u&&void 0!==u.name?u.name:t;i(n)&&("Symbol("===String(g).slice(0,7)&&(g="["+String(g).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!o(n,"name")||c&&n.name!==g)&&a(n,"name",g),(l=d(n)).source||(l.source=h.join("string"==typeof g?g:""))),e!==r?(f?!m&&e[t]&&(p=!0):delete e[t],p?e[t]=n:a(e,t,n)):p?e[t]=n:s(t,n)})(Function.prototype,"toString",(function(){return i(this)&&f(this).source||u(this)}))},4488:(e,t,n)=>{var r=n(7854).TypeError;e.exports=function(e){if(null==e)throw r("Can't call method on "+e);return e}},3505:(e,t,n)=>{var r=n(7854),i=Object.defineProperty;e.exports=function(e,t){try{i(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},6200:(e,t,n)=>{var r=n(2309),i=n(9711),o=r("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},5465:(e,t,n)=>{var r=n(7854),i=n(3505),o="__core-js_shared__",a=r[o]||i(o,{});e.exports=a},2309:(e,t,n)=>{var r=n(1913),i=n(5465);(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.0",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.0/LICENSE",source:"https://github.com/zloirock/core-js"})},261:(e,t,n)=>{var r,i,o,a,s=n(7854),u=n(2104),l=n(9974),c=n(614),f=n(2597),d=n(7293),h=n(490),p=n(206),m=n(317),g=n(8053),y=n(6833),v=n(5268),b=s.setImmediate,_=s.clearImmediate,E=s.process,w=s.Dispatch,T=s.Function,S=s.MessageChannel,O=s.String,C=0,x={},A="onreadystatechange";try{r=s.location}catch(e){}var I=function(e){if(f(x,e)){var t=x[e];delete x[e],t()}},N=function(e){return function(){I(e)}},R=function(e){I(e.data)},k=function(e){s.postMessage(O(e),r.protocol+"//"+r.host)};b&&_||(b=function(e){g(arguments.length,1);var t=c(e)?e:T(e),n=p(arguments,1);return x[++C]=function(){u(t,void 0,n)},i(C),C},_=function(e){delete x[e]},v?i=function(e){E.nextTick(N(e))}:w&&w.now?i=function(e){w.now(N(e))}:S&&!y?(a=(o=new S).port2,o.port1.onmessage=R,i=l(a.postMessage,a)):s.addEventListener&&c(s.postMessage)&&!s.importScripts&&r&&"file:"!==r.protocol&&!d(k)?(i=k,s.addEventListener("message",R,!1)):i=A in m("script")?function(e){h.appendChild(m("script")).onreadystatechange=function(){h.removeChild(this),I(e)}}:function(e){setTimeout(N(e),0)}),e.exports={set:b,clear:_}},1400:(e,t,n)=>{var r=n(9303),i=Math.max,o=Math.min;e.exports=function(e,t){var n=r(e);return n<0?i(n+t,0):o(n,t)}},5656:(e,t,n)=>{var r=n(8361),i=n(4488);e.exports=function(e){return r(i(e))}},9303:e=>{var t=Math.ceil,n=Math.floor;e.exports=function(e){var r=+e;return r!=r||0===r?0:(r>0?n:t)(r)}},7466:(e,t,n)=>{var r=n(9303),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:(e,t,n)=>{var r=n(7854),i=n(4488),o=r.Object;e.exports=function(e){return o(i(e))}},7593:(e,t,n)=>{var r=n(7854),i=n(6916),o=n(111),a=n(2190),s=n(8173),u=n(2140),l=n(5112),c=r.TypeError,f=l("toPrimitive");e.exports=function(e,t){if(!o(e)||a(e))return e;var n,r=s(e,f);if(r){if(void 0===t&&(t="default"),n=i(r,e,t),!o(n)||a(n))return n;throw c("Can't convert object to primitive value")}return void 0===t&&(t="number"),u(e,t)}},4948:(e,t,n)=>{var r=n(7593),i=n(2190);e.exports=function(e){var t=r(e,"string");return i(t)?t:t+""}},6330:(e,t,n)=>{var r=n(7854).String;e.exports=function(e){try{return r(e)}catch(e){return"Object"}}},9711:(e,t,n)=>{var r=n(1702),i=0,o=Math.random(),a=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++i+o,36)}},3307:(e,t,n)=>{var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3353:(e,t,n)=>{var r=n(9781),i=n(7293);e.exports=r&&i((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},8053:(e,t,n)=>{var r=n(7854).TypeError;e.exports=function(e,t){if(e{var r=n(7854),i=n(2309),o=n(2597),a=n(9711),s=n(133),u=n(3307),l=i("wks"),c=r.Symbol,f=c&&c.for,d=u?c:c&&c.withoutSetter||a;e.exports=function(e){if(!o(l,e)||!s&&"string"!=typeof l[e]){var t="Symbol."+e;s&&o(c,e)?l[e]=c[e]:l[e]=u&&f?f(t):d(t)}return l[e]}},1091:(e,t,n)=>{var r=n(2109),i=n(7854),o=n(261).clear;r({global:!0,bind:!0,enumerable:!0,forced:i.clearImmediate!==o},{clearImmediate:o})},4633:(e,t,n)=>{n(1091),n(2986)},2986:(e,t,n)=>{var r=n(2109),i=n(7854),o=n(261).set;r({global:!0,bind:!0,enumerable:!0,forced:i.setImmediate!==o},{setImmediate:o})},4098:function(e,t){var n="undefined"!=typeof self?self:this,r=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,r="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,a="ArrayBuffer"in e;if(a)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function l(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function c(e){return"string"!=typeof e&&(e=String(e)),e}function f(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return r&&(t[Symbol.iterator]=function(){return t}),t}function d(e){this.map={},e instanceof d?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function h(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function p(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function m(e){var t=new FileReader,n=p(t);return t.readAsArrayBuffer(e),n}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():a&&i&&((t=e)&&DataView.prototype.isPrototypeOf(t))?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):a&&(ArrayBuffer.prototype.isPrototypeOf(e)||u(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=h(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var e,t,n,r=h(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,n=p(t),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r-1?r:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function _(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(i))}})),t}function E(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new d(t.headers),this.url=t.url||"",this._initBody(e)}b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},y.call(b.prototype),y.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},E.error=function(){var e=new E(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];E.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new E(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function T(e,n){return new Promise((function(r,o){var a=new b(e,n);if(a.signal&&a.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function u(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new d,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),r=n.shift().trim();if(r){var i=n.join(":").trim();t.append(r,i)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;r(new E(i,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(a.method,a.url,!0),"include"===a.credentials?s.withCredentials=!0:"omit"===a.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),a.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),a.signal&&(a.signal.addEventListener("abort",u),s.onreadystatechange=function(){4===s.readyState&&a.signal.removeEventListener("abort",u)}),s.send(void 0===a._bodyInit?null:a._bodyInit)}))}T.polyfill=!0,e.fetch||(e.fetch=T,e.Headers=d,e.Request=b,e.Response=E),t.Headers=d,t.Request=b,t.Response=E,t.fetch=T,Object.defineProperty(t,"__esModule",{value:!0})}({})}(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;(t=i.fetch).default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t},1986:(e,t,n)=>{t.UINT32=n(734),t.UINT64=n(6924)},734:function(e,t){var n;!function(r){i(Math.pow(36,5)),i(Math.pow(16,7)),i(Math.pow(10,9)),i(Math.pow(2,30)),i(36),i(16),i(10),i(2);function i(e,t){return this instanceof i?(this._low=0,this._high=0,this.remainder=null,void 0===t?a.call(this,e):"string"==typeof e?s.call(this,e,t):void o.call(this,e,t)):new i(e,t)}function o(e,t){return this._low=0|e,this._high=0|t,this}function a(e){return this._low=65535&e,this._high=e>>>16,this}function s(e,t){var n=parseInt(e,t||10);return this._low=65535&n,this._high=n>>>16,this}i.prototype.fromBits=o,i.prototype.fromNumber=a,i.prototype.fromString=s,i.prototype.toNumber=function(){return 65536*this._high+this._low},i.prototype.toString=function(e){return this.toNumber().toString(e||10)},i.prototype.add=function(e){var t=this._low+e._low,n=t>>>16;return n+=this._high+e._high,this._low=65535&t,this._high=65535&n,this},i.prototype.subtract=function(e){return this.add(e.clone().negate())},i.prototype.multiply=function(e){var t,n,r=this._high,i=this._low,o=e._high,a=e._low;return t=(n=i*a)>>>16,t+=r*a,t&=65535,t+=i*o,this._low=65535&n,this._high=65535&t,this},i.prototype.div=function(e){if(0==e._low&&0==e._high)throw Error("division by zero");if(0==e._high&&1==e._low)return this.remainder=new i(0),this;if(e.gt(this))return this.remainder=this.clone(),this._low=0,this._high=0,this;if(this.eq(e))return this.remainder=new i(0),this._low=1,this._high=0,this;for(var t=e.clone(),n=-1;!this.lt(t);)t.shiftLeft(1,!0),n++;for(this.remainder=this.clone(),this._low=0,this._high=0;n>=0;n--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),n>=16?this._high|=1<>>16)&65535,this},i.prototype.equals=i.prototype.eq=function(e){return this._low==e._low&&this._high==e._high},i.prototype.greaterThan=i.prototype.gt=function(e){return this._high>e._high||!(this._highe._low},i.prototype.lessThan=i.prototype.lt=function(e){return this._highe._high)&&this._low16?(this._low=this._high>>e-16,this._high=0):16==e?(this._low=this._high,this._high=0):(this._low=this._low>>e|this._high<<16-e&65535,this._high>>=e),this},i.prototype.shiftLeft=i.prototype.shiftl=function(e,t){return e>16?(this._high=this._low<>16-e,this._low=this._low<>>32-e,this._low=65535&t,this._high=t>>>16,this},i.prototype.rotateRight=i.prototype.rotr=function(e){var t=this._high<<16|this._low;return t=t>>>e|t<<32-e,this._low=65535&t,this._high=t>>>16,this},i.prototype.clone=function(){return new i(this._low,this._high)},void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()},6924:function(e,t){var n;!function(r){var i={16:a(Math.pow(16,5)),10:a(Math.pow(10,5)),2:a(Math.pow(2,5))},o={16:a(16),10:a(10),2:a(2)};function a(e,t,n,r){return this instanceof a?(this.remainder=null,"string"==typeof e?l.call(this,e,t):void 0===t?u.call(this,e):void s.apply(this,arguments)):new a(e,t,n,r)}function s(e,t,n,r){return void 0===n?(this._a00=65535&e,this._a16=e>>>16,this._a32=65535&t,this._a48=t>>>16,this):(this._a00=0|e,this._a16=0|t,this._a32=0|n,this._a48=0|r,this)}function u(e){return this._a00=65535&e,this._a16=e>>>16,this._a32=0,this._a48=0,this}function l(e,t){t=t||10,this._a00=0,this._a16=0,this._a32=0,this._a48=0;for(var n=i[t]||new a(Math.pow(t,5)),r=0,o=e.length;r=0&&(n.div(t),r[i]=n.remainder.toNumber().toString(e),n.gt(t));i--);return r[i-1]=n.toNumber().toString(e),r.join("")},a.prototype.add=function(e){var t=this._a00+e._a00,n=t>>>16,r=(n+=this._a16+e._a16)>>>16,i=(r+=this._a32+e._a32)>>>16;return i+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&n,this._a32=65535&r,this._a48=65535&i,this},a.prototype.subtract=function(e){return this.add(e.clone().negate())},a.prototype.multiply=function(e){var t=this._a00,n=this._a16,r=this._a32,i=this._a48,o=e._a00,a=e._a16,s=e._a32,u=t*o,l=u>>>16,c=(l+=t*a)>>>16;l&=65535,c+=(l+=n*o)>>>16;var f=(c+=t*s)>>>16;return c&=65535,f+=(c+=n*a)>>>16,c&=65535,f+=(c+=r*o)>>>16,f+=t*e._a48,f&=65535,f+=n*s,f&=65535,f+=r*a,f&=65535,f+=i*o,this._a00=65535&u,this._a16=65535&l,this._a32=65535&c,this._a48=65535&f,this},a.prototype.div=function(e){if(0==e._a16&&0==e._a32&&0==e._a48){if(0==e._a00)throw Error("division by zero");if(1==e._a00)return this.remainder=new a(0),this}if(e.gt(this))return this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0,this;if(this.eq(e))return this.remainder=new a(0),this._a00=1,this._a16=0,this._a32=0,this._a48=0,this;for(var t=e.clone(),n=-1;!this.lt(t);)t.shiftLeft(1,!0),n++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;n>=0;n--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),n>=48?this._a48|=1<=32?this._a32|=1<=16?this._a16|=1<>>16),this._a16=65535&e,e=(65535&~this._a32)+(e>>>16),this._a32=65535&e,this._a48=~this._a48+(e>>>16)&65535,this},a.prototype.equals=a.prototype.eq=function(e){return this._a48==e._a48&&this._a00==e._a00&&this._a32==e._a32&&this._a16==e._a16},a.prototype.greaterThan=a.prototype.gt=function(e){return this._a48>e._a48||!(this._a48e._a32||!(this._a32e._a16||!(this._a16e._a00))},a.prototype.lessThan=a.prototype.lt=function(e){return this._a48e._a48)&&(this._a32e._a32)&&(this._a16e._a16)&&this._a00=48?(this._a00=this._a48>>e-48,this._a16=0,this._a32=0,this._a48=0):e>=32?(e-=32,this._a00=65535&(this._a32>>e|this._a48<<16-e),this._a16=this._a48>>e&65535,this._a32=0,this._a48=0):e>=16?(e-=16,this._a00=65535&(this._a16>>e|this._a32<<16-e),this._a16=65535&(this._a32>>e|this._a48<<16-e),this._a32=this._a48>>e&65535,this._a48=0):(this._a00=65535&(this._a00>>e|this._a16<<16-e),this._a16=65535&(this._a16>>e|this._a32<<16-e),this._a32=65535&(this._a32>>e|this._a48<<16-e),this._a48=this._a48>>e&65535),this},a.prototype.shiftLeft=a.prototype.shiftl=function(e,t){return(e%=64)>=48?(this._a48=this._a00<=32?(e-=32,this._a48=this._a16<>16-e,this._a32=this._a00<=16?(e-=16,this._a48=this._a32<>16-e,this._a32=65535&(this._a16<>16-e),this._a16=this._a00<>16-e,this._a32=65535&(this._a32<>16-e),this._a16=65535&(this._a16<>16-e),this._a00=this._a00<=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var n=this._a48<<16|this._a32,r=this._a16<<16|this._a00,i=n<>>32-e,o=r<>>32-e;return this._a00=65535&o,this._a16=o>>>16,this._a32=65535&i,this._a48=i>>>16,this},a.prototype.rotateRight=a.prototype.rotr=function(e){if(0==(e%=64))return this;if(e>=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var n=this._a48<<16|this._a32,r=this._a16<<16|this._a00,i=n>>>e|r<<32-e,o=r>>>e|n<<32-e;return this._a00=65535&o,this._a16=o>>>16,this._a32=65535&i,this._a48=i>>>16,this},a.prototype.clone=function(){return new a(this._a00,this._a16,this._a32,this._a48)},void 0===(n=function(){return a}.apply(t,[]))||(e.exports=n)}()},8875:(e,t,n)=>{var r;!function(){"use strict";var i=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:i,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:i&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:i&&!!window.screen};void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)}()},4063:e=>{"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,i,o;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(i=r;0!=i--;)if(!e(t[i],n[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(i=r;0!=i--;)if(!Object.prototype.hasOwnProperty.call(n,o[i]))return!1;for(i=r;0!=i--;){var a=o[i];if(!e(t[a],n[a]))return!1}return!0}return t!=t&&n!=n}},4139:function(e){e.exports=function(){"use strict";function e(e){return Number.isInteger(e)&&e>=0}function t(e){this.name="ArgumentError",this.message=e}return function(n,r){if(r=r||{},"function"!=typeof n)throw new t("fetch must be a function");if("object"!=typeof r)throw new t("defaults must be an object");if(void 0!==r.retries&&!e(r.retries))throw new t("retries must be a positive integer");if(void 0!==r.retryDelay&&!e(r.retryDelay)&&"function"!=typeof r.retryDelay)throw new t("retryDelay must be a positive integer or a function returning a positive integer");if(void 0!==r.retryOn&&!Array.isArray(r.retryOn)&&"function"!=typeof r.retryOn)throw new t("retryOn property expects an array or function");var i={retries:3,retryDelay:1e3,retryOn:[]};return r=Object.assign(i,r),function(i,o){var a=r.retries,s=r.retryDelay,u=r.retryOn;if(o&&void 0!==o.retries){if(!e(o.retries))throw new t("retries must be a positive integer");a=o.retries}if(o&&void 0!==o.retryDelay){if(!e(o.retryDelay)&&"function"!=typeof o.retryDelay)throw new t("retryDelay must be a positive integer or a function returning a positive integer");s=o.retryDelay}if(o&&o.retryOn){if(!Array.isArray(o.retryOn)&&"function"!=typeof o.retryOn)throw new t("retryOn property expects an array or function");u=o.retryOn}return new Promise((function(e,t){var r=function(r){var s="undefined"!=typeof Request&&i instanceof Request?i.clone():i;n(s,o).then((function(n){if(Array.isArray(u)&&-1===u.indexOf(n.status))e(n);else if("function"==typeof u)try{return Promise.resolve(u(r,null,n)).then((function(t){t?l(r,null,n):e(n)})).catch(t)}catch(e){t(e)}else r{"use strict";var r=n(1296),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function u(e){return r.isMemo(e)?a:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var l=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(p){var i=h(n);i&&i!==p&&e(t,i,r)}var a=c(n);f&&(a=a.concat(f(n)));for(var s=u(t),m=u(n),g=0;g{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,l=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,f=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,h=n?Symbol.for("react.suspense"):60113,p=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,_=n?Symbol.for("react.scope"):60119;function E(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case f:case o:case s:case a:case h:return e;default:switch(e=e&&e.$$typeof){case l:case d:case g:case m:case u:return e;default:return t}}case i:return t}}}function w(e){return E(e)===f}t.AsyncMode=c,t.ConcurrentMode=f,t.ContextConsumer=l,t.ContextProvider=u,t.Element=r,t.ForwardRef=d,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=i,t.Profiler=s,t.StrictMode=a,t.Suspense=h,t.isAsyncMode=function(e){return w(e)||E(e)===c},t.isConcurrentMode=w,t.isContextConsumer=function(e){return E(e)===l},t.isContextProvider=function(e){return E(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return E(e)===d},t.isFragment=function(e){return E(e)===o},t.isLazy=function(e){return E(e)===g},t.isMemo=function(e){return E(e)===m},t.isPortal=function(e){return E(e)===i},t.isProfiler=function(e){return E(e)===s},t.isStrictMode=function(e){return E(e)===a},t.isSuspense=function(e){return E(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===f||e===s||e===a||e===h||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===u||e.$$typeof===l||e.$$typeof===d||e.$$typeof===v||e.$$typeof===b||e.$$typeof===_||e.$$typeof===y)},t.typeOf=E},1296:(e,t,n)=>{"use strict";e.exports=n(6103)},9009:(e,t,n)=>{"use strict";var r,i=n(4933)("http-errors"),o=n(6644),a=n(8439),s=n(5717),u=n(1612);function l(e){return Number(String(e).charAt(0)+"00")}function c(e,t){var n=Object.getOwnPropertyDescriptor(e,"name");n&&n.configurable&&(n.value=t,Object.defineProperty(e,"name",n))}function f(e){return"Error"!==e.substr(-5)?e+"Error":e}e.exports=function e(){for(var t,n,r=500,o={},s=0;s=600)&&i("non-error status code; use only 4xx or 5xx status codes");("number"!=typeof r||!a.message[r]&&(r<400||r>=600))&&(r=500);var f=e[r]||e[l(r)];t||(t=f?new f(n):new Error(n||a.message[r]),Error.captureStackTrace(t,e));f&&t instanceof f&&t.status===r||(t.expose=r<500,t.status=t.statusCode=r);for(var d in o)"status"!==d&&"statusCode"!==d&&(t[d]=o[d]);return t},e.exports.HttpError=function(){function e(){throw new TypeError("cannot construct abstract class")}return s(e,Error),e}(),e.exports.isHttpError=(r=e.exports.HttpError,function(e){return!(!e||"object"!=typeof e)&&(e instanceof r||e instanceof Error&&"boolean"==typeof e.expose&&"number"==typeof e.statusCode&&e.status===e.statusCode)}),function(e,t,n){t.forEach((function(t){var r,i=u(a.message[t]);switch(l(t)){case 400:r=function(e,t,n){var r=f(t);function i(e){var t=null!=e?e:a.message[n],s=new Error(t);return Error.captureStackTrace(s,i),o(s,i.prototype),Object.defineProperty(s,"message",{enumerable:!0,configurable:!0,value:t,writable:!0}),Object.defineProperty(s,"name",{enumerable:!1,configurable:!0,value:r,writable:!0}),s}return s(i,e),c(i,r),i.prototype.status=n,i.prototype.statusCode=n,i.prototype.expose=!0,i}(n,i,t);break;case 500:r=function(e,t,n){var r=f(t);function i(e){var t=null!=e?e:a.message[n],s=new Error(t);return Error.captureStackTrace(s,i),o(s,i.prototype),Object.defineProperty(s,"message",{enumerable:!0,configurable:!0,value:t,writable:!0}),Object.defineProperty(s,"name",{enumerable:!1,configurable:!0,value:r,writable:!0}),s}return s(i,e),c(i,r),i.prototype.status=n,i.prototype.statusCode=n,i.prototype.expose=!1,i}(n,i,t)}r&&(e[t]=r,e[i]=r)}))}(e.exports,a.codes,e.exports.HttpError)},4933:e=>{"use strict";function t(e,t){if("function"!=typeof e)throw new TypeError("argument fn must be a function");return e}function n(e,t,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("argument obj must be object");var r=Object.getOwnPropertyDescriptor(e,t);if(!r)throw new TypeError("must call property on owner object");if(!r.configurable)throw new TypeError("property must be configurable")}e.exports=function(e){if(!e)throw new TypeError("argument namespace is required");function r(e){}return r._file=void 0,r._ignored=!0,r._namespace=e,r._traced=!1,r._warned=Object.create(null),r.function=t,r.property=n,r}},8439:(e,t,n)=>{"use strict";var r=n(9526);function i(e){if(!Object.prototype.hasOwnProperty.call(o.message,e))throw new Error("invalid status code: "+e);return o.message[e]}function o(e){if("number"==typeof e)return i(e);if("string"!=typeof e)throw new TypeError("code must be a number or string");var t=parseInt(e,10);return isNaN(t)?function(e){var t=e.toLowerCase();if(!Object.prototype.hasOwnProperty.call(o.code,t))throw new Error('invalid status message: "'+e+'"');return o.code[t]}(e):i(t)}e.exports=o,o.message=r,o.code=function(e){var t={};return Object.keys(e).forEach((function(n){var r=e[n],i=Number(n);t[r.toLowerCase()]=i})),t}(r),o.codes=function(e){return Object.keys(e).map((function(e){return Number(e)}))}(r),o.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0},o.empty={204:!0,205:!0,304:!0},o.retry={502:!0,503:!0,504:!0}},1612:e=>{"use strict";e.exports=function(e){return e.split(" ").map((function(e){return e.slice(0,1).toUpperCase()+e.slice(1)})).join("").replace(/[^ _0-9a-z]/gi,"")}},645:(e,t)=>{t.read=function(e,t,n,r,i){var o,a,s=8*i-r-1,u=(1<>1,c=-7,f=n?i-1:0,d=n?-1:1,h=e[t+f];for(f+=d,o=h&(1<<-c)-1,h>>=-c,c+=s;c>0;o=256*o+e[t+f],f+=d,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=r;c>0;a=256*a+e[t+f],f+=d,c-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),o-=l}return(h?-1:1)*a*Math.pow(2,o-r)},t.write=function(e,t,n,r,i,o){var a,s,u,l=8*o-i-1,c=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,p=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+f>=1?d/u:d*Math.pow(2,1-f))*u>=2&&(a++,u/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[n+h]=255&s,h+=p,s/=256,i-=8);for(a=a<0;e[n+h]=255&a,h+=p,a/=256,l-=8);e[n+h-p]|=128*m}},8172:(e,t,n)=>{"use strict";function r(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r3?t.i-4:t.i:Array.isArray(e)?1:d(e)?2:h(e)?3:0}function u(e,t){return 2===s(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function l(e,t){return 2===s(e)?e.get(t):e[t]}function c(e,t,n){var r=s(e);2===r?e.set(t,n):3===r?(e.delete(t),e.add(n)):e[t]=n}function f(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function d(e){return B&&e instanceof Map}function h(e){return z&&e instanceof Set}function p(e){return e.o||e.t}function m(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=K(e);delete t[q];for(var n=G(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=y),Object.freeze(e),t&&a(e,(function(e,t){return g(t,!0)}),!0)),e}function y(){r(2)}function v(e){return null==e||"object"!=typeof e||Object.isFrozen(e)}function b(e){var t=X[e];return t||r(18,e),t}function _(){return j}function E(e,t){t&&(b("Patches"),e.u=[],e.s=[],e.v=t)}function w(e){T(e),e.p.forEach(O),e.p=null}function T(e){e===j&&(j=e.l)}function S(e){return j={p:[],l:j,h:e,m:!0,_:0}}function O(e){var t=e[q];0===t.i||1===t.i?t.j():t.O=!0}function C(e,t){t._=t.p.length;var n=t.p[0],i=void 0!==e&&e!==n;return t.h.g||b("ES5").S(t,e,i),i?(n[q].P&&(w(t),r(4)),o(e)&&(e=x(t,e),t.l||I(t,e)),t.u&&b("Patches").M(n[q].t,e,t.u,t.s)):e=x(t,n,[]),w(t),t.u&&t.v(t.u,t.s),e!==W?e:void 0}function x(e,t,n){if(v(t))return t;var r=t[q];if(!r)return a(t,(function(i,o){return A(e,r,t,i,o,n)}),!0),t;if(r.A!==e)return t;if(!r.P)return I(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=4===r.i||5===r.i?r.o=m(r.k):r.o;a(3===r.i?new Set(i):i,(function(t,o){return A(e,r,i,t,o,n)})),I(e,i,!1),n&&e.u&&b("Patches").R(r,n,e.u,e.s)}return r.o}function A(e,t,n,r,a,s){if(i(a)){var l=x(e,a,s&&t&&3!==t.i&&!u(t.D,r)?s.concat(r):void 0);if(c(n,r,l),!i(l))return;e.m=!1}if(o(a)&&!v(a)){if(!e.h.F&&e._<1)return;x(e,a),t&&t.A.l||I(e,a)}}function I(e,t,n){void 0===n&&(n=!1),e.h.F&&e.m&&g(t,n)}function N(e,t){var n=e[q];return(n?p(n):e)[t]}function R(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function k(e){e.P||(e.P=!0,e.l&&k(e.l))}function P(e){e.o||(e.o=m(e.t))}function L(e,t,n){var r=d(t)?b("MapSet").N(t,n):h(t)?b("MapSet").T(t,n):e.g?function(e,t){var n=Array.isArray(e),r={i:n?1:0,A:t?t.A:_(),P:!1,I:!1,D:{},l:t,t:e,k:null,o:null,j:null,C:!1},i=r,o=J;n&&(i=[r],o=Y);var a=Proxy.revocable(i,o),s=a.revoke,u=a.proxy;return r.k=u,r.j=s,u}(t,n):b("ES5").J(t,n);return(n?n.A:_()).p.push(r),r}function D(e){return i(e)||r(22,e),function e(t){if(!o(t))return t;var n,r=t[q],i=s(t);if(r){if(!r.P&&(r.i<4||!b("ES5").K(r)))return r.t;r.I=!0,n=M(t,i),r.I=!1}else n=M(t,i);return a(n,(function(t,i){r&&l(r.t,t)===i||c(n,t,e(i))})),3===i?new Set(n):n}(e)}function M(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return m(e)}n.d(t,{Uy:()=>ee});var U,j,F="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),B="undefined"!=typeof Map,z="undefined"!=typeof Set,H="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,W=F?Symbol.for("immer-nothing"):((U={})["immer-nothing"]=!0,U),V=F?Symbol.for("immer-draftable"):"__$immer_draftable",q=F?Symbol.for("immer-state"):"__$immer_state",$=("undefined"!=typeof Symbol&&Symbol.iterator,""+Object.prototype.constructor),G="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,K=Object.getOwnPropertyDescriptors||function(e){var t={};return G(e).forEach((function(n){t[n]=Object.getOwnPropertyDescriptor(e,n)})),t},X={},J={get:function(e,t){if(t===q)return e;var n=p(e);if(!u(n,t))return function(e,t,n){var r,i=R(t,n);return i?"value"in i?i.value:null===(r=i.get)||void 0===r?void 0:r.call(e.k):void 0}(e,n,t);var r=n[t];return e.I||!o(r)?r:r===N(e.t,t)?(P(e),e.o[t]=L(e.A.h,r,e)):r},has:function(e,t){return t in p(e)},ownKeys:function(e){return Reflect.ownKeys(p(e))},set:function(e,t,n){var r=R(p(e),t);if(null==r?void 0:r.set)return r.set.call(e.k,n),!0;if(!e.P){var i=N(p(e),t),o=null==i?void 0:i[q];if(o&&o.t===n)return e.o[t]=n,e.D[t]=!1,!0;if(f(n,i)&&(void 0!==n||u(e.t,t)))return!0;P(e),k(e)}return e.o[t]===n&&"number"!=typeof n&&(void 0!==n||t in e.o)||(e.o[t]=n,e.D[t]=!0,!0)},deleteProperty:function(e,t){return void 0!==N(e.t,t)||t in e.t?(e.D[t]=!1,P(e),k(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var n=p(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.i||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty:function(){r(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){r(12)}},Y={};a(J,(function(e,t){Y[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Y.deleteProperty=function(e,t){return Y.set.call(this,e,t,void 0)},Y.set=function(e,t,n){return J.set.call(this,e[0],t,n,e[0])};var Z=function(){function e(e){var t=this;this.g=H,this.F=!0,this.produce=function(e,n,i){if("function"==typeof e&&"function"!=typeof n){var a=n;n=e;var s=t;return function(e){var t=this;void 0===e&&(e=a);for(var r=arguments.length,i=Array(r>1?r-1:0),o=1;o1?r-1:0),o=1;o=0;n--){var r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));var o=b("Patches").$;return i(e)?o(e,t):this.produce(e,(function(e){return o(e,t)}))},e}(),Q=new Z,ee=Q.produce;Q.produceWithPatches.bind(Q),Q.setAutoFreeze.bind(Q),Q.setUseProxies.bind(Q),Q.applyPatches.bind(Q),Q.createDraft.bind(Q),Q.finishDraft.bind(Q)},5717:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},1143:e=>{"use strict";e.exports=function(e,t,n,r,i,o,a,s){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,i,o,a,s],c=0;(u=new Error(t.replace(/%s/g,(function(){return l[c++]})))).name="Invariant Violation"}throw u.framesToPop=1,u}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},8495:(module,exports,__webpack_require__)=>{var process=__webpack_require__(4155),__WEBPACK_AMD_DEFINE_RESULT__;(function(){"use strict";var ERROR="input is invalid type",WINDOW="object"==typeof window,root=WINDOW?window:{};root.JS_MD5_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"==typeof self,NODE_JS=!root.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS?root=__webpack_require__.g:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_MD5_NO_COMMON_JS&&module.exports,AMD=__webpack_require__.amdO,ARRAY_BUFFER=!root.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[128,32768,8388608,-2147483648],SHIFT=[0,8,16,24],OUTPUT_TYPES=["hex","array","digest","buffer","arrayBuffer","base64"],BASE64_ENCODE_CHAR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),blocks=[],buffer8;if(ARRAY_BUFFER){var buffer=new ArrayBuffer(68);buffer8=new Uint8Array(buffer),blocks=new Uint32Array(buffer)}!root.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!ARRAY_BUFFER||!root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var createOutputMethod=function(e){return function(t){return new Md5(!0).update(t)[e]()}},createMethod=function(){var e=createOutputMethod("hex");NODE_JS&&(e=nodeWrap(e)),e.create=function(){return new Md5},e.update=function(t){return e.create().update(t)};for(var t=0;t>2]|=e[o]<>6,u[i++]=128|63&r):r<55296||r>=57344?(u[i++]=224|r>>12,u[i++]=128|r>>6&63,u[i++]=128|63&r):(r=65536+((1023&r)<<10|1023&e.charCodeAt(++o)),u[i++]=240|r>>18,u[i++]=128|r>>12&63,u[i++]=128|r>>6&63,u[i++]=128|63&r);else for(i=this.start;o>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(s[i>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<=64?(this.start=i-64,this.hash(),this.hashed=!0):this.start=i}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Md5.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[t>>2]|=EXTRA[3&t],t>=56&&(this.hashed||this.hash(),e[0]=e[16],e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.bytes<<3,e[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},Md5.prototype.hash=function(){var e,t,n,r,i,o,a=this.blocks;this.first?t=((t=((e=((e=a[0]-680876937)<<7|e>>>25)-271733879<<0)^(n=((n=(-271733879^(r=((r=(-1732584194^2004318071&e)+a[1]-117830708)<<12|r>>>20)+e<<0)&(-271733879^e))+a[2]-1126478375)<<17|n>>>15)+r<<0)&(r^e))+a[3]-1316259209)<<22|t>>>10)+n<<0:(e=this.h0,t=this.h1,n=this.h2,t=((t+=((e=((e+=((r=this.h3)^t&(n^r))+a[0]-680876936)<<7|e>>>25)+t<<0)^(n=((n+=(t^(r=((r+=(n^e&(t^n))+a[1]-389564586)<<12|r>>>20)+e<<0)&(e^t))+a[2]+606105819)<<17|n>>>15)+r<<0)&(r^e))+a[3]-1044525330)<<22|t>>>10)+n<<0),t=((t+=((e=((e+=(r^t&(n^r))+a[4]-176418897)<<7|e>>>25)+t<<0)^(n=((n+=(t^(r=((r+=(n^e&(t^n))+a[5]+1200080426)<<12|r>>>20)+e<<0)&(e^t))+a[6]-1473231341)<<17|n>>>15)+r<<0)&(r^e))+a[7]-45705983)<<22|t>>>10)+n<<0,t=((t+=((e=((e+=(r^t&(n^r))+a[8]+1770035416)<<7|e>>>25)+t<<0)^(n=((n+=(t^(r=((r+=(n^e&(t^n))+a[9]-1958414417)<<12|r>>>20)+e<<0)&(e^t))+a[10]-42063)<<17|n>>>15)+r<<0)&(r^e))+a[11]-1990404162)<<22|t>>>10)+n<<0,t=((t+=((e=((e+=(r^t&(n^r))+a[12]+1804603682)<<7|e>>>25)+t<<0)^(n=((n+=(t^(r=((r+=(n^e&(t^n))+a[13]-40341101)<<12|r>>>20)+e<<0)&(e^t))+a[14]-1502002290)<<17|n>>>15)+r<<0)&(r^e))+a[15]+1236535329)<<22|t>>>10)+n<<0,t=((t+=((r=((r+=(t^n&((e=((e+=(n^r&(t^n))+a[1]-165796510)<<5|e>>>27)+t<<0)^t))+a[6]-1069501632)<<9|r>>>23)+e<<0)^e&((n=((n+=(e^t&(r^e))+a[11]+643717713)<<14|n>>>18)+r<<0)^r))+a[0]-373897302)<<20|t>>>12)+n<<0,t=((t+=((r=((r+=(t^n&((e=((e+=(n^r&(t^n))+a[5]-701558691)<<5|e>>>27)+t<<0)^t))+a[10]+38016083)<<9|r>>>23)+e<<0)^e&((n=((n+=(e^t&(r^e))+a[15]-660478335)<<14|n>>>18)+r<<0)^r))+a[4]-405537848)<<20|t>>>12)+n<<0,t=((t+=((r=((r+=(t^n&((e=((e+=(n^r&(t^n))+a[9]+568446438)<<5|e>>>27)+t<<0)^t))+a[14]-1019803690)<<9|r>>>23)+e<<0)^e&((n=((n+=(e^t&(r^e))+a[3]-187363961)<<14|n>>>18)+r<<0)^r))+a[8]+1163531501)<<20|t>>>12)+n<<0,t=((t+=((r=((r+=(t^n&((e=((e+=(n^r&(t^n))+a[13]-1444681467)<<5|e>>>27)+t<<0)^t))+a[2]-51403784)<<9|r>>>23)+e<<0)^e&((n=((n+=(e^t&(r^e))+a[7]+1735328473)<<14|n>>>18)+r<<0)^r))+a[12]-1926607734)<<20|t>>>12)+n<<0,t=((t+=((o=(r=((r+=((i=t^n)^(e=((e+=(i^r)+a[5]-378558)<<4|e>>>28)+t<<0))+a[8]-2022574463)<<11|r>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[11]+1839030562)<<16|n>>>16)+r<<0))+a[14]-35309556)<<23|t>>>9)+n<<0,t=((t+=((o=(r=((r+=((i=t^n)^(e=((e+=(i^r)+a[1]-1530992060)<<4|e>>>28)+t<<0))+a[4]+1272893353)<<11|r>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[7]-155497632)<<16|n>>>16)+r<<0))+a[10]-1094730640)<<23|t>>>9)+n<<0,t=((t+=((o=(r=((r+=((i=t^n)^(e=((e+=(i^r)+a[13]+681279174)<<4|e>>>28)+t<<0))+a[0]-358537222)<<11|r>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[3]-722521979)<<16|n>>>16)+r<<0))+a[6]+76029189)<<23|t>>>9)+n<<0,t=((t+=((o=(r=((r+=((i=t^n)^(e=((e+=(i^r)+a[9]-640364487)<<4|e>>>28)+t<<0))+a[12]-421815835)<<11|r>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[15]+530742520)<<16|n>>>16)+r<<0))+a[2]-995338651)<<23|t>>>9)+n<<0,t=((t+=((r=((r+=(t^((e=((e+=(n^(t|~r))+a[0]-198630844)<<6|e>>>26)+t<<0)|~n))+a[7]+1126891415)<<10|r>>>22)+e<<0)^((n=((n+=(e^(r|~t))+a[14]-1416354905)<<15|n>>>17)+r<<0)|~e))+a[5]-57434055)<<21|t>>>11)+n<<0,t=((t+=((r=((r+=(t^((e=((e+=(n^(t|~r))+a[12]+1700485571)<<6|e>>>26)+t<<0)|~n))+a[3]-1894986606)<<10|r>>>22)+e<<0)^((n=((n+=(e^(r|~t))+a[10]-1051523)<<15|n>>>17)+r<<0)|~e))+a[1]-2054922799)<<21|t>>>11)+n<<0,t=((t+=((r=((r+=(t^((e=((e+=(n^(t|~r))+a[8]+1873313359)<<6|e>>>26)+t<<0)|~n))+a[15]-30611744)<<10|r>>>22)+e<<0)^((n=((n+=(e^(r|~t))+a[6]-1560198380)<<15|n>>>17)+r<<0)|~e))+a[13]+1309151649)<<21|t>>>11)+n<<0,t=((t+=((r=((r+=(t^((e=((e+=(n^(t|~r))+a[4]-145523070)<<6|e>>>26)+t<<0)|~n))+a[11]-1120210379)<<10|r>>>22)+e<<0)^((n=((n+=(e^(r|~t))+a[2]+718787259)<<15|n>>>17)+r<<0)|~e))+a[9]-343485551)<<21|t>>>11)+n<<0,this.first?(this.h0=e+1732584193<<0,this.h1=t-271733879<<0,this.h2=n-1732584194<<0,this.h3=r+271733878<<0,this.first=!1):(this.h0=this.h0+e<<0,this.h1=this.h1+t<<0,this.h2=this.h2+n<<0,this.h3=this.h3+r<<0)},Md5.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,r=this.h3;return HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]},Md5.prototype.toString=Md5.prototype.hex,Md5.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,r=this.h3;return[255&e,e>>8&255,e>>16&255,e>>24&255,255&t,t>>8&255,t>>16&255,t>>24&255,255&n,n>>8&255,n>>16&255,n>>24&255,255&r,r>>8&255,r>>16&255,r>>24&255]},Md5.prototype.array=Md5.prototype.digest,Md5.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(16),t=new Uint32Array(e);return t[0]=this.h0,t[1]=this.h1,t[2]=this.h2,t[3]=this.h3,e},Md5.prototype.buffer=Md5.prototype.arrayBuffer,Md5.prototype.base64=function(){for(var e,t,n,r="",i=this.array(),o=0;o<15;)e=i[o++],t=i[o++],n=i[o++],r+=BASE64_ENCODE_CHAR[e>>>2]+BASE64_ENCODE_CHAR[63&(e<<4|t>>>4)]+BASE64_ENCODE_CHAR[63&(t<<2|n>>>6)]+BASE64_ENCODE_CHAR[63&n];return e=i[o],r+=BASE64_ENCODE_CHAR[e>>>2]+BASE64_ENCODE_CHAR[e<<4&63]+"=="};var exports=createMethod();COMMON_JS?module.exports=exports:(root.md5=exports,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=function(){return exports}.call(exports,__webpack_require__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))})()},3720:e=>{e.exports=n;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,n){this.low=0|e,this.high=0|t,this.unsigned=!!n}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var i={},o={};function a(e,t){var n,r,a;return t?(a=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(n=u(e,(0|e)<0?-1:0,!0),a&&(o[e]=n),n):(a=-128<=(e|=0)&&e<128)&&(r=i[e])?r:(n=u(e,e<0?-1:0,!1),a&&(i[e]=n),n)}function s(e,t){if(isNaN(e))return t?y:g;if(t){if(e<0)return y;if(e>=h)return w}else{if(e<=-p)return T;if(e+1>=p)return E}return e<0?s(-e,t).neg():u(e%d|0,e/d|0,t)}function u(e,t,r){return new n(e,t,r)}n.fromInt=a,n.fromNumber=s,n.fromBits=u;var l=Math.pow;function c(e,t,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return g;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===r)return c(e.substring(1),t,n).neg();for(var i=s(l(n,8)),o=g,a=0;a>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*d+(this.low>>>0):this.high*d+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((o=u).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(T)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return r(e)||(e=f(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(r(e)||(e=f(e)),this.eq(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(T)?T:this.not().add(v)},S.neg=S.negate,S.add=function(e){r(e)||(e=f(e));var t=this.high>>>16,n=65535&this.high,i=this.low>>>16,o=65535&this.low,a=e.high>>>16,s=65535&e.high,l=e.low>>>16,c=0,d=0,h=0,p=0;return h+=(p+=o+(65535&e.low))>>>16,d+=(h+=i+l)>>>16,c+=(d+=n+s)>>>16,c+=t+a,u((h&=65535)<<16|(p&=65535),(c&=65535)<<16|(d&=65535),this.unsigned)},S.subtract=function(e){return r(e)||(e=f(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return g;if(r(e)||(e=f(e)),t)return u(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return g;if(this.eq(T))return e.isOdd()?T:g;if(e.eq(T))return this.isOdd()?T:g;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(m)&&e.lt(m))return s(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,i=65535&this.high,o=this.low>>>16,a=65535&this.low,l=e.high>>>16,c=65535&e.high,d=e.low>>>16,h=65535&e.low,p=0,y=0,v=0,b=0;return v+=(b+=a*h)>>>16,y+=(v+=o*h)>>>16,v&=65535,y+=(v+=a*d)>>>16,p+=(y+=i*h)>>>16,y&=65535,p+=(y+=o*d)>>>16,y&=65535,p+=(y+=a*c)>>>16,p+=n*h+i*d+o*c+a*l,u((v&=65535)<<16|(b&=65535),(p&=65535)<<16|(y&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(r(e)||(e=f(e)),e.isZero())throw Error("division by zero");var n,i,o;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?u((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?y:g;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return y;if(e.gt(this.shru(1)))return b;o=y}else{if(this.eq(T))return e.eq(v)||e.eq(_)?T:e.eq(T)?v:(n=this.shr(1).div(e).shl(1)).eq(g)?e.isNegative()?v:_:(i=this.sub(e.mul(n)),o=n.add(i.div(e)));if(e.eq(T))return this.unsigned?y:g;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();o=g}for(i=this;i.gte(e);){n=Math.max(1,Math.floor(i.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(n)/Math.LN2),c=a<=48?1:l(2,a-48),d=s(n),h=d.mul(e);h.isNegative()||h.gt(i);)h=(d=s(n-=c,this.unsigned)).mul(e);d.isZero()&&(d=v),o=o.add(d),i=i.sub(h)}return o},S.div=S.divide,S.modulo=function(e){return r(e)||(e=f(e)),t?u((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return u(~this.low,~this.high,this.unsigned)},S.and=function(e){return r(e)||(e=f(e)),u(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return r(e)||(e=f(e)),u(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return r(e)||(e=f(e)),u(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?u(this.low<>>32-e,this.unsigned):u(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):u(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?u(this.low>>>e|t<<32-e,t>>>e,this.unsigned):u(32===e?t:t>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?u(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:u(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,r){return r?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},1716:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={}},2441:(e,t,n)=>{var r;!function(i,o,a){if(i){for(var s,u={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},l={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},c={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},f={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},d=1;d<20;++d)u[111+d]="f"+d;for(d=0;d<=9;++d)u[d+96]=d.toString();b.prototype.bind=function(e,t,n){var r=this;return e=e instanceof Array?e:[e],r._bindMultiple.call(r,e,t,n),r},b.prototype.unbind=function(e,t){return this.bind.call(this,e,(function(){}),t)},b.prototype.trigger=function(e,t){var n=this;return n._directMap[e+":"+t]&&n._directMap[e+":"+t]({},e),n},b.prototype.reset=function(){var e=this;return e._callbacks={},e._directMap={},e},b.prototype.stopCallback=function(e,t){if((" "+t.className+" ").indexOf(" mousetrap ")>-1)return!1;if(v(t,this.target))return!1;if("composedPath"in e&&"function"==typeof e.composedPath){var n=e.composedPath()[0];n!==e.target&&(t=n)}return"INPUT"==t.tagName||"SELECT"==t.tagName||"TEXTAREA"==t.tagName||t.isContentEditable},b.prototype.handleKey=function(){var e=this;return e._handleKey.apply(e,arguments)},b.addKeycodes=function(e){for(var t in e)e.hasOwnProperty(t)&&(u[t]=e[t]);s=null},b.init=function(){var e=b(o);for(var t in e)"_"!==t.charAt(0)&&(b[t]=function(t){return function(){return e[t].apply(e,arguments)}}(t))},b.init(),i.Mousetrap=b,e.exports&&(e.exports=b),void 0===(r=function(){return b}.call(t,n,t,e))||(e.exports=r)}function h(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function p(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return u[e.which]?u[e.which]:l[e.which]?l[e.which]:String.fromCharCode(e.which).toLowerCase()}function m(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}function g(e,t,n){return n||(n=function(){if(!s)for(var e in s={},u)e>95&&e<112||u.hasOwnProperty(e)&&(s[u[e]]=e);return s}()[e]?"keydown":"keypress"),"keypress"==n&&t.length&&(n="keydown"),n}function y(e,t){var n,r,i,o=[];for(n=function(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus")).split("+")}(e),i=0;i1?d(e,s,n,r):(a=y(e,r),t._callbacks[a.key]=t._callbacks[a.key]||[],l(a.key,a.modifiers,{type:a.action},i,e,o),t._callbacks[a.key][i?"unshift":"push"]({callback:n,modifiers:a.modifiers,action:a.action,seq:i,level:o,combo:e}))}t._handleKey=function(e,t,n){var r,i=l(e,t,n),o={},f=0,d=!1;for(r=0;r{var t=1e3,n=60*t,r=60*n,i=24*r,o=7*i,a=365.25*i;function s(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}e.exports=function(e,u){u=u||{};var l=typeof e;if("string"===l&&e.length>0)return function(e){if((e=String(e)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!s)return;var u=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return u*a;case"weeks":case"week":case"w":return u*o;case"days":case"day":case"d":return u*i;case"hours":case"hour":case"hrs":case"hr":case"h":return u*r;case"minutes":case"minute":case"mins":case"min":case"m":return u*n;case"seconds":case"second":case"secs":case"sec":case"s":return u*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return u;default:return}}(e);if("number"===l&&isFinite(e))return u.long?function(e){var o=Math.abs(e);if(o>=i)return s(e,o,i,"day");if(o>=r)return s(e,o,r,"hour");if(o>=n)return s(e,o,n,"minute");if(o>=t)return s(e,o,t,"second");return e+" ms"}(e):function(e){var o=Math.abs(e);if(o>=i)return Math.round(e/i)+"d";if(o>=r)return Math.round(e/r)+"h";if(o>=n)return Math.round(e/n)+"m";if(o>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var a,s,u=i(e),l=1;l{var t,n,r=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{n="function"==typeof clearTimeout?clearTimeout:o}catch(e){n=o}}();var s,u=[],l=!1,c=-1;function f(){l&&s&&(l=!1,s.length?u=s.concat(u):c=-1,u.length&&d())}function d(){if(!l){var e=a(f);l=!0;for(var t=u.length;t;){for(s=u,u=[];++c1)for(var n=1;n{"use strict";e.exports=n(9482)},9482:(e,t,n)=>{"use strict";var r=t;function i(){r.util._configure(),r.Writer._configure(r.BufferWriter),r.Reader._configure(r.BufferReader)}r.build="minimal",r.Writer=n(1173),r.BufferWriter=n(3155),r.Reader=n(1408),r.BufferReader=n(593),r.util=n(9693),r.rpc=n(5994),r.roots=n(5054),r.configure=i,i()},1408:(e,t,n)=>{"use strict";e.exports=u;var r,i=n(9693),o=i.LongBits,a=i.utf8;function s(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function u(e){this.buf=e,this.pos=0,this.len=e.length}var l,c="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new u(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new u(e);throw Error("illegal buffer")},f=function(){return i.Buffer?function(e){return(u.create=function(e){return i.Buffer.isBuffer(e)?new r(e):c(e)})(e)}:c};function d(){var e=new o(0,0),t=0;if(!(this.len-this.pos>4)){for(;t<3;++t){if(this.pos>=this.len)throw s(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw s(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function h(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function p(){if(this.pos+8>this.len)throw s(this,8);return new o(h(this.buf,this.pos+=4),h(this.buf,this.pos+=4))}u.create=f(),u.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,u.prototype.uint32=(l=4294967295,function(){if(l=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return l;if(l=(l|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return l;if((this.pos+=5)>this.len)throw this.pos=this.len,s(this,10);return l}),u.prototype.int32=function(){return 0|this.uint32()},u.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},u.prototype.bool=function(){return 0!==this.uint32()},u.prototype.fixed32=function(){if(this.pos+4>this.len)throw s(this,4);return h(this.buf,this.pos+=4)},u.prototype.sfixed32=function(){if(this.pos+4>this.len)throw s(this,4);return 0|h(this.buf,this.pos+=4)},u.prototype.float=function(){if(this.pos+4>this.len)throw s(this,4);var e=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},u.prototype.double=function(){if(this.pos+8>this.len)throw s(this,4);var e=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},u.prototype.bytes=function(){var e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw s(this,e);return this.pos+=e,Array.isArray(this.buf)?this.buf.slice(t,n):t===n?new this.buf.constructor(0):this._slice.call(this.buf,t,n)},u.prototype.string=function(){var e=this.bytes();return a.read(e,0,e.length)},u.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw s(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw s(this)}while(128&this.buf[this.pos++]);return this},u.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(e=7&this.uint32());)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},u._configure=function(e){r=e,u.create=f(),r._configure();var t=i.Long?"toLong":"toNumber";i.merge(u.prototype,{int64:function(){return d.call(this)[t](!1)},uint64:function(){return d.call(this)[t](!0)},sint64:function(){return d.call(this).zzDecode()[t](!1)},fixed64:function(){return p.call(this)[t](!0)},sfixed64:function(){return p.call(this)[t](!1)}})}},593:(e,t,n)=>{"use strict";e.exports=o;var r=n(1408);(o.prototype=Object.create(r.prototype)).constructor=o;var i=n(9693);function o(e){r.call(this,e)}o._configure=function(){i.Buffer&&(o.prototype._slice=i.Buffer.prototype.slice)},o.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+e,this.len))},o._configure()},5054:e=>{"use strict";e.exports={}},5994:(e,t,n)=>{"use strict";t.Service=n(7948)},7948:(e,t,n)=>{"use strict";e.exports=i;var r=n(9693);function i(e,t,n){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");r.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(n)}(i.prototype=Object.create(r.EventEmitter.prototype)).constructor=i,i.prototype.rpcCall=function e(t,n,i,o,a){if(!o)throw TypeError("request must be specified");var s=this;if(!a)return r.asPromise(e,s,t,n,i,o);if(s.rpcImpl)try{return s.rpcImpl(t,n[s.requestDelimited?"encodeDelimited":"encode"](o).finish(),(function(e,n){if(e)return s.emit("error",e,t),a(e);if(null!==n){if(!(n instanceof i))try{n=i[s.responseDelimited?"decodeDelimited":"decode"](n)}catch(e){return s.emit("error",e,t),a(e)}return s.emit("data",n,t),a(null,n)}s.end(!0)}))}catch(e){return s.emit("error",e,t),void setTimeout((function(){a(e)}),0)}else setTimeout((function(){a(Error("already ended"))}),0)},i.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},1945:(e,t,n)=>{"use strict";e.exports=i;var r=n(9693);function i(e,t){this.lo=e>>>0,this.hi=t>>>0}var o=i.zero=new i(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var a=i.zeroHash="\0\0\0\0\0\0\0\0";i.fromNumber=function(e){if(0===e)return o;var t=e<0;t&&(e=-e);var n=e>>>0,r=(e-n)/4294967296>>>0;return t&&(r=~r>>>0,n=~n>>>0,++n>4294967295&&(n=0,++r>4294967295&&(r=0))),new i(n,r)},i.from=function(e){if("number"==typeof e)return i.fromNumber(e);if(r.isString(e)){if(!r.Long)return i.fromNumber(parseInt(e,10));e=r.Long.fromString(e)}return e.low||e.high?new i(e.low>>>0,e.high>>>0):o},i.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=1+~this.lo>>>0,n=~this.hi>>>0;return t||(n=n+1>>>0),-(t+4294967296*n)}return this.lo+4294967296*this.hi},i.prototype.toLong=function(e){return r.Long?new r.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var s=String.prototype.charCodeAt;i.fromHash=function(e){return e===a?o:new i((s.call(e,0)|s.call(e,1)<<8|s.call(e,2)<<16|s.call(e,3)<<24)>>>0,(s.call(e,4)|s.call(e,5)<<8|s.call(e,6)<<16|s.call(e,7)<<24)>>>0)},i.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},i.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},i.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},i.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}},9693:function(e,t,n){"use strict";var r=t;function i(e,t,n){for(var r=Object.keys(t),i=0;i0)},r.Buffer=function(){try{var e=r.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),r._Buffer_from=null,r._Buffer_allocUnsafe=null,r.newBuffer=function(e){return"number"==typeof e?r.Buffer?r._Buffer_allocUnsafe(e):new r.Array(e):r.Buffer?r._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},r.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,r.Long=r.global.dcodeIO&&r.global.dcodeIO.Long||r.global.Long||r.inquire("long"),r.key2Re=/^true|false|0|1$/,r.key32Re=/^-?(?:0|[1-9][0-9]*)$/,r.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,r.longToHash=function(e){return e?r.LongBits.from(e).toHash():r.LongBits.zeroHash},r.longFromHash=function(e,t){var n=r.LongBits.fromHash(e);return r.Long?r.Long.fromBits(n.lo,n.hi,t):n.toNumber(Boolean(t))},r.merge=i,r.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},r.newError=o,r.ProtocolError=o("ProtocolError"),r.oneOfGetter=function(e){for(var t={},n=0;n-1;--n)if(1===t[e[n]]&&void 0!==this[e[n]]&&null!==this[e[n]])return e[n]}},r.oneOfSetter=function(e){return function(t){for(var n=0;n{"use strict";e.exports=f;var r,i=n(9693),o=i.LongBits,a=i.base64,s=i.utf8;function u(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}function l(){}function c(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function f(){this.len=0,this.head=new u(l,0,0),this.tail=this.head,this.states=null}var d=function(){return i.Buffer?function(){return(f.create=function(){return new r})()}:function(){return new f}};function h(e,t,n){t[n]=255&e}function p(e,t){this.len=e,this.next=void 0,this.val=t}function m(e,t,n){for(;e.hi;)t[n++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[n++]=127&e.lo|128,e.lo=e.lo>>>7;t[n++]=e.lo}function g(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}f.create=d(),f.alloc=function(e){return new i.Array(e)},i.Array!==Array&&(f.alloc=i.pool(f.alloc,i.Array.prototype.subarray)),f.prototype._push=function(e,t,n){return this.tail=this.tail.next=new u(e,t,n),this.len+=t,this},p.prototype=Object.create(u.prototype),p.prototype.fn=function(e,t,n){for(;e>127;)t[n++]=127&e|128,e>>>=7;t[n]=e},f.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new p((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},f.prototype.int32=function(e){return e<0?this._push(m,10,o.fromNumber(e)):this.uint32(e)},f.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},f.prototype.uint64=function(e){var t=o.from(e);return this._push(m,t.length(),t)},f.prototype.int64=f.prototype.uint64,f.prototype.sint64=function(e){var t=o.from(e).zzEncode();return this._push(m,t.length(),t)},f.prototype.bool=function(e){return this._push(h,1,e?1:0)},f.prototype.fixed32=function(e){return this._push(g,4,e>>>0)},f.prototype.sfixed32=f.prototype.fixed32,f.prototype.fixed64=function(e){var t=o.from(e);return this._push(g,4,t.lo)._push(g,4,t.hi)},f.prototype.sfixed64=f.prototype.fixed64,f.prototype.float=function(e){return this._push(i.float.writeFloatLE,4,e)},f.prototype.double=function(e){return this._push(i.float.writeDoubleLE,8,e)};var y=i.Array.prototype.set?function(e,t,n){t.set(e,n)}:function(e,t,n){for(var r=0;r>>0;if(!t)return this._push(h,1,0);if(i.isString(e)){var n=f.alloc(t=a.length(e));a.decode(e,n,0),e=n}return this.uint32(t)._push(y,t,e)},f.prototype.string=function(e){var t=s.length(e);return t?this.uint32(t)._push(s.write,t,e):this._push(h,1,0)},f.prototype.fork=function(){return this.states=new c(this),this.head=this.tail=new u(l,0,0),this.len=0,this},f.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new u(l,0,0),this.len=0),this},f.prototype.ldelim=function(){var e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=e.next,this.tail=t,this.len+=n),this},f.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),n=0;e;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t},f._configure=function(e){r=e,f.create=d(),r._configure()}},3155:(e,t,n)=>{"use strict";e.exports=o;var r=n(1173);(o.prototype=Object.create(r.prototype)).constructor=o;var i=n(9693);function o(){r.call(this)}function a(e,t,n){e.length<40?i.utf8.write(e,t,n):t.utf8Write?t.utf8Write(e,n):t.write(e,n)}o._configure=function(){o.alloc=i._Buffer_allocUnsafe,o.writeBytesBuffer=i.Buffer&&i.Buffer.prototype instanceof Uint8Array&&"set"===i.Buffer.prototype.set.name?function(e,t,n){t.set(e,n)}:function(e,t,n){if(e.copy)e.copy(t,n,0,e.length);else for(var r=0;r>>0;return this.uint32(t),t&&this._push(o.writeBytesBuffer,t,e),this},o.prototype.string=function(e){var t=i.Buffer.byteLength(e);return this.uint32(t),t&&this._push(a,t,e),this},o._configure()},8698:(e,t,n)=>{"use strict";var r=n(7418),i=n(7294);function o(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rO;O++)S[O]=O+1;S[15]=0;var C=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,x=Object.prototype.hasOwnProperty,A={},I={};function N(e){return!!x.call(I,e)||!x.call(A,e)&&(C.test(e)?I[e]=!0:(A[e]=!0,!1))}function R(e,t,n,r,i,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o}var k={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){k[e]=new R(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];k[t]=new R(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){k[e]=new R(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){k[e]=new R(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){k[e]=new R(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){k[e]=new R(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){k[e]=new R(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){k[e]=new R(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){k[e]=new R(e,5,!1,e.toLowerCase(),null,!1)}));var P=/[\-:]([a-z])/g;function L(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(P,L);k[t]=new R(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(P,L);k[t]=new R(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(P,L);k[t]=new R(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){k[e]=new R(e,1,!1,e.toLowerCase(),null,!1)})),k.xlinkHref=new R("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){k[e]=new R(e,1,!1,e.toLowerCase(),null,!0)}));var D=/["'&<>]/;function M(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=D.exec(e);if(t){var n,r="",i=0;for(n=t.index;nt}return!1}(e,t,r,!1)?"":null!==r?(e=r.attributeName,3===(n=r.type)||4===n&&!0===t?e+'=""':(r.sanitizeURL&&(t=""+t),e+'="'+M(t)+'"')):N(e)?e+'="'+M(t)+'"':""}var j=null,F=null,B=null,z=!1,H=!1,W=null,V=0;function q(){if(null===j)throw o(Error(321));return j}function $(){if(0V))throw o(Error(301));if(e===j)if(H=!0,e={action:n,next:null},null===W&&(W=new Map),void 0===(n=W.get(t)))W.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}}function Z(){}var Q=0,ee={readContext:function(e){var t=Q;return T(e,t),e[t]},useContext:function(e){q();var t=Q;return T(e,t),e[t]},useMemo:function(e,t){if(j=q(),t=void 0===t?null:t,null!==(B=G())){var n=B.memoizedState;if(null!==n&&null!==t){e:{var r=n[1];if(null===r)r=!1;else{for(var i=0;i=s))throw o(Error(304));var l=new Uint16Array(s);for(l.set(a),(S=l)[0]=r+1,a=r;a=s.children.length){var u=s.footer;if(""!==u&&(this.previousWasTextNode=!1),this.stack.pop(),"select"===s.type)this.currentSelectValue=null;else if(null!=s.type&&null!=s.type.type&&s.type.type.$$typeof===f)this.popProvider(s.type);else if(s.type===m){this.suspenseDepth--;var l=r.pop();if(i){i=!1;var c=s.fallbackFrame;if(!c)throw o(Error(303));this.stack.push(c),r[this.suspenseDepth]+="\x3c!--$!--\x3e";continue}r[this.suspenseDepth]+=l}r[this.suspenseDepth]+=u}else{var d=s.children[s.childIndex++],h="";try{h+=this.render(d,s.context,s.domNamespace)}catch(e){throw e}r.length<=this.suspenseDepth&&r.push(""),r[this.suspenseDepth]+=h}}return r[0]}finally{ce.current=n,Q=t}},e.prototype.render=function(e,t,n){if("string"==typeof e||"number"==typeof e)return""===(n=""+e)?"":this.makeStaticMarkup?M(n):this.previousWasTextNode?"\x3c!-- --\x3e"+M(n):(this.previousWasTextNode=!0,M(n));if(e=(t=ve(e,t,this.threadID)).child,t=t.context,null===e||!1===e)return"";if(!i.isValidElement(e)){if(null!=e&&null!=e.$$typeof){if((n=e.$$typeof)===s)throw o(Error(257));throw o(Error(258),n.toString())}return e=le(e),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),""}var a=e.type;if("string"==typeof a)return this.renderDOM(e,t,n);switch(a){case l:case h:case c:case g:case u:return e=le(e.props.children),this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case m:throw o(Error(294))}if("object"==typeof a&&null!==a)switch(a.$$typeof){case p:j={};var _=a.render(e.props,e.ref);return _=K(a.render,e.props,_,e.ref),_=le(_),this.stack.push({type:null,domNamespace:n,children:_,childIndex:0,context:t,footer:""}),"";case y:return e=[i.createElement(a.type,r({ref:e.ref},e.props))],this.stack.push({type:null,domNamespace:n,children:e,childIndex:0,context:t,footer:""}),"";case f:return n={type:e,domNamespace:n,children:a=le(e.props.children),childIndex:0,context:t,footer:""},this.pushProvider(e),this.stack.push(n),"";case d:a=e.type,_=e.props;var E=this.threadID;return T(a,E),a=le(_.children(a[E])),this.stack.push({type:e,domNamespace:n,children:a,childIndex:0,context:t,footer:""}),"";case b:throw o(Error(338));case v:throw o(Error(295))}throw o(Error(130),null==a?a:typeof a,"")},e.prototype.renderDOM=function(e,t,n){var a=e.type.toLowerCase();if(n===te&&ne(a),!he.hasOwnProperty(a)){if(!de.test(a))throw o(Error(65),a);he[a]=!0}var s=e.props;if("input"===a)s=r({type:void 0},s,{defaultChecked:void 0,defaultValue:void 0,value:null!=s.value?s.value:s.defaultValue,checked:null!=s.checked?s.checked:s.defaultChecked});else if("textarea"===a){var u=s.value;if(null==u){u=s.defaultValue;var l=s.children;if(null!=l){if(null!=u)throw o(Error(92));if(Array.isArray(l)){if(!(1>=l.length))throw o(Error(93));l=l[0]}u=""+l}null==u&&(u="")}s=r({},s,{value:void 0,children:""+u})}else if("select"===a)this.currentSelectValue=null!=s.value?s.value:s.defaultValue,s=r({},s,{value:void 0});else if("option"===a){l=this.currentSelectValue;var c=function(e){if(null==e)return e;var t="";return i.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(s.children);if(null!=l){var f=null!=s.value?s.value+"":c;if(u=!1,Array.isArray(l)){for(var d=0;d":(_+=">",u="");e:{if(null!=(l=s.dangerouslySetInnerHTML)){if(null!=l.__html){l=l.__html;break e}}else if("string"==typeof(l=s.children)||"number"==typeof l){l=M(l);break e}l=null}return null!=l?(s=[],fe[a]&&"\n"===l.charAt(0)&&(_+="\n"),_+=l):s=le(s.children),e=e.type,n=null==n||"http://www.w3.org/1999/xhtml"===n?ne(e):"http://www.w3.org/2000/svg"===n&&"foreignObject"===e?"http://www.w3.org/1999/xhtml":n,this.stack.push({domNamespace:n,type:a,children:s,childIndex:0,context:t,footer:u}),this.previousWasTextNode=!1,_},e}(),_e={renderToString:function(e){e=new be(e,!1);try{return e.read(1/0)}finally{e.destroy()}},renderToStaticMarkup:function(e){e=new be(e,!0);try{return e.read(1/0)}finally{e.destroy()}},renderToNodeStream:function(){throw o(Error(207))},renderToStaticNodeStream:function(){throw o(Error(208))},version:"16.9.0"},Ee={default:_e},we=Ee&&_e||Ee;e.exports=we.default||we},4448:(e,t,n)=>{"use strict";var r=n(7294),i=n(7418),o=n(3840);function a(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rthis.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=ce,e.release=fe}i(le.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=se)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=se)},persist:function(){this.isPersistent=se},isPersistent:ue,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=ue,this._dispatchInstances=this._dispatchListeners=null}}),le.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},le.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var o=new t;return i(o,n.prototype),n.prototype=o,n.prototype.constructor=n,n.Interface=i({},r.Interface,e),n.extend=r.extend,de(n),n},de(le);var he=le.extend({data:null}),pe=le.extend({data:null}),me=[9,13,27,32],ge=$&&"CompositionEvent"in window,ye=null;$&&"documentMode"in document&&(ye=document.documentMode);var ve=$&&"TextEvent"in window&&!ye,be=$&&(!ge||ye&&8=ye),_e=String.fromCharCode(32),Ee={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},we=!1;function Te(e,t){switch(e){case"keyup":return-1!==me.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Se(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Oe=!1;var Ce={eventTypes:Ee,extractEvents:function(e,t,n,r){var i=void 0,o=void 0;if(ge)e:{switch(e){case"compositionstart":i=Ee.compositionStart;break e;case"compositionend":i=Ee.compositionEnd;break e;case"compositionupdate":i=Ee.compositionUpdate;break e}i=void 0}else Oe?Te(e,n)&&(i=Ee.compositionEnd):"keydown"===e&&229===n.keyCode&&(i=Ee.compositionStart);return i?(be&&"ko"!==n.locale&&(Oe||i!==Ee.compositionStart?i===Ee.compositionEnd&&Oe&&(o=ae()):(ie="value"in(re=r)?re.value:re.textContent,Oe=!0)),i=he.getPooled(i,t,n,r),o?i.data=o:null!==(o=Se(n))&&(i.data=o),q(i),o=i):o=null,(e=ve?function(e,t){switch(e){case"compositionend":return Se(t);case"keypress":return 32!==t.which?null:(we=!0,_e);case"textInput":return(e=t.data)===_e&&we?null:e;default:return null}}(e,n):function(e,t){if(Oe)return"compositionend"===e||!ge&&Te(e,t)?(e=ae(),oe=ie=re=null,Oe=!1,e):null;switch(e){default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1