From bf3db15b67ff3e3db5cafcef2e94373bde760e23 Mon Sep 17 00:00:00 2001 From: Alex Malkevich Date: Sat, 21 Oct 2023 03:29:14 +0000 Subject: [PATCH 1/2] feat: add build tools for extensions --- .devcontainer/devcontainer.json | 24 + .eslintignore | 1 + .eslintrc.json | 35 + .gitignore | 3 + .prettierignore | 5 + .prettierrc | 3 + LICENSE | 21 + README.md | 21 +- apps/.gitkeep | 0 apps/chrome/.babelrc | 3 + apps/chrome/.eslintrc.json | 18 + apps/chrome/assets/.gitkeep | 0 apps/chrome/manifest.json | 26 + apps/chrome/popup/app/index.html | 14 + apps/chrome/popup/app/jquery.ts | 3 + apps/chrome/popup/app/main.ts | 19 + apps/chrome/popup/app/styles.scss | 27 + apps/chrome/popup/rspack.config.js | 6 + apps/chrome/popup/tsconfig.app.json | 9 + apps/chrome/project.json | 89 + apps/chrome/rspack.config.js | 11 + apps/chrome/shared-assets | 1 + apps/chrome/src/index.html | 1 + apps/chrome/src/main.ts | 3 + apps/chrome/src/service-worker.ts | 6 + apps/chrome/tsconfig.app.json | 9 + apps/chrome/tsconfig.json | 13 + apps/firefox/.babelrc | 3 + apps/firefox/.eslintrc.json | 18 + apps/firefox/assets/.gitkeep | 0 apps/firefox/manifest.json | 26 + apps/firefox/popup/app/index.html | 14 + apps/firefox/popup/app/jquery.ts | 3 + apps/firefox/popup/app/main.ts | 19 + apps/firefox/popup/app/styles.scss | 436 + apps/firefox/popup/rspack.config.js | 6 + apps/firefox/popup/tsconfig.app.json | 9 + apps/firefox/project.json | 89 + apps/firefox/rspack.config.js | 11 + apps/firefox/shared-assets | 1 + apps/firefox/src/index.html | 1 + apps/firefox/src/main.ts | 3 + apps/firefox/src/service-worker.ts | 6 + apps/firefox/tsconfig.app.json | 9 + apps/firefox/tsconfig.json | 13 + apps/opera/.babelrc | 3 + apps/opera/.eslintrc.json | 18 + apps/opera/assets/.gitkeep | 0 apps/opera/manifest.json | 26 + apps/opera/popup/app/index.html | 14 + apps/opera/popup/app/jquery.ts | 3 + apps/opera/popup/app/main.ts | 19 + apps/opera/popup/app/styles.scss | 436 + apps/opera/popup/rspack.config.js | 6 + apps/opera/popup/tsconfig.app.json | 9 + apps/opera/project.json | 89 + apps/opera/rspack.config.js | 11 + apps/opera/shared-assets | 1 + apps/opera/src/index.html | 1 + apps/opera/src/main.ts | 3 + apps/opera/src/service-worker.ts | 6 + apps/opera/tsconfig.app.json | 9 + apps/opera/tsconfig.json | 13 + assets/icons/icon-120x120.png | Bin 0 -> 15822 bytes assets/icons/icon-16x16.png | Bin 0 -> 1623 bytes assets/icons/icon-48x48.png | Bin 0 -> 4669 bytes assets/logo.png | Bin 0 -> 14135 bytes assets/popup/github-sponsor.svg | 97 + assets/popup/home-feed-active.svg | 6 + assets/popup/home-feed.svg | 6 + assets/popup/paypal.svg | 1 + assets/popup/popup-more.svg | 5 + assets/popup/suggested-feed-active.svg | 13 + assets/popup/suggested-feed.svg | 13 + assets/popup/video-feed-active.svg | 7 + assets/popup/video-feed.svg | 7 + libs/.gitkeep | 0 libs/core/.eslintrc.json | 18 + libs/core/README.md | 3 + libs/core/project.json | 16 + libs/core/src/index.ts | 3 + libs/core/src/lib/extention.ts | 37 + libs/core/src/lib/skip-ads.ts | 42 + libs/core/src/lib/utils.ts | 5 + libs/core/tsconfig.json | 19 + libs/core/tsconfig.lib.json | 10 + libs/popup/.eslintrc.json | 18 + libs/popup/README.md | 3 + libs/popup/project.json | 16 + libs/popup/src/index.ts | 3 + .../components/content/content-element.html | 42 + .../components/content/content-element.scss | 358 + .../lib/components/content/content-element.ts | 44 + .../popup/src/lib/components/content/index.ts | 1 + libs/popup/src/lib/components/index.ts | 3 + .../src/lib/components/navigation/index.ts | 1 + .../navigation/navigation-element.html | 37 + .../navigation/navigation-element.scss | 137 + .../navigation/navigation-element.ts | 24 + libs/popup/src/lib/components/tabs/index.ts | 1 + .../src/lib/components/tabs/tabs-element.html | 16 + .../src/lib/components/tabs/tabs-element.scss | 40 + .../src/lib/components/tabs/tabs-element.ts | 56 + libs/popup/src/lib/extention-api-provider.ts | 17 + libs/popup/src/lib/jquery.ts | 6 + libs/popup/templates.d.ts | 4 + libs/popup/tsconfig.json | 19 + libs/popup/tsconfig.lib.json | 10 + nx.json | 32 + package-lock.json | 10529 ++++++++++++++++ package.json | 62 + tools/rspack/extention-config.js | 19 + tools/rspack/ui-config.js | 13 + tsconfig.base.json | 25 + 114 files changed, 13542 insertions(+), 7 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 LICENSE create mode 100644 apps/.gitkeep create mode 100644 apps/chrome/.babelrc create mode 100644 apps/chrome/.eslintrc.json create mode 100644 apps/chrome/assets/.gitkeep create mode 100644 apps/chrome/manifest.json create mode 100644 apps/chrome/popup/app/index.html create mode 100644 apps/chrome/popup/app/jquery.ts create mode 100644 apps/chrome/popup/app/main.ts create mode 100644 apps/chrome/popup/app/styles.scss create mode 100644 apps/chrome/popup/rspack.config.js create mode 100644 apps/chrome/popup/tsconfig.app.json create mode 100644 apps/chrome/project.json create mode 100644 apps/chrome/rspack.config.js create mode 120000 apps/chrome/shared-assets create mode 100644 apps/chrome/src/index.html create mode 100644 apps/chrome/src/main.ts create mode 100644 apps/chrome/src/service-worker.ts create mode 100644 apps/chrome/tsconfig.app.json create mode 100644 apps/chrome/tsconfig.json create mode 100644 apps/firefox/.babelrc create mode 100644 apps/firefox/.eslintrc.json create mode 100644 apps/firefox/assets/.gitkeep create mode 100644 apps/firefox/manifest.json create mode 100644 apps/firefox/popup/app/index.html create mode 100644 apps/firefox/popup/app/jquery.ts create mode 100644 apps/firefox/popup/app/main.ts create mode 100644 apps/firefox/popup/app/styles.scss create mode 100644 apps/firefox/popup/rspack.config.js create mode 100644 apps/firefox/popup/tsconfig.app.json create mode 100644 apps/firefox/project.json create mode 100644 apps/firefox/rspack.config.js create mode 120000 apps/firefox/shared-assets create mode 100644 apps/firefox/src/index.html create mode 100644 apps/firefox/src/main.ts create mode 100644 apps/firefox/src/service-worker.ts create mode 100644 apps/firefox/tsconfig.app.json create mode 100644 apps/firefox/tsconfig.json create mode 100644 apps/opera/.babelrc create mode 100644 apps/opera/.eslintrc.json create mode 100644 apps/opera/assets/.gitkeep create mode 100644 apps/opera/manifest.json create mode 100644 apps/opera/popup/app/index.html create mode 100644 apps/opera/popup/app/jquery.ts create mode 100644 apps/opera/popup/app/main.ts create mode 100644 apps/opera/popup/app/styles.scss create mode 100644 apps/opera/popup/rspack.config.js create mode 100644 apps/opera/popup/tsconfig.app.json create mode 100644 apps/opera/project.json create mode 100644 apps/opera/rspack.config.js create mode 120000 apps/opera/shared-assets create mode 100644 apps/opera/src/index.html create mode 100644 apps/opera/src/main.ts create mode 100644 apps/opera/src/service-worker.ts create mode 100644 apps/opera/tsconfig.app.json create mode 100644 apps/opera/tsconfig.json create mode 100644 assets/icons/icon-120x120.png create mode 100644 assets/icons/icon-16x16.png create mode 100644 assets/icons/icon-48x48.png create mode 100644 assets/logo.png create mode 100644 assets/popup/github-sponsor.svg create mode 100644 assets/popup/home-feed-active.svg create mode 100644 assets/popup/home-feed.svg create mode 100644 assets/popup/paypal.svg create mode 100644 assets/popup/popup-more.svg create mode 100644 assets/popup/suggested-feed-active.svg create mode 100644 assets/popup/suggested-feed.svg create mode 100644 assets/popup/video-feed-active.svg create mode 100644 assets/popup/video-feed.svg create mode 100644 libs/.gitkeep create mode 100644 libs/core/.eslintrc.json create mode 100644 libs/core/README.md create mode 100644 libs/core/project.json create mode 100644 libs/core/src/index.ts create mode 100644 libs/core/src/lib/extention.ts create mode 100644 libs/core/src/lib/skip-ads.ts create mode 100644 libs/core/src/lib/utils.ts create mode 100644 libs/core/tsconfig.json create mode 100644 libs/core/tsconfig.lib.json create mode 100644 libs/popup/.eslintrc.json create mode 100644 libs/popup/README.md create mode 100644 libs/popup/project.json create mode 100644 libs/popup/src/index.ts create mode 100644 libs/popup/src/lib/components/content/content-element.html create mode 100644 libs/popup/src/lib/components/content/content-element.scss create mode 100644 libs/popup/src/lib/components/content/content-element.ts create mode 100644 libs/popup/src/lib/components/content/index.ts create mode 100644 libs/popup/src/lib/components/index.ts create mode 100644 libs/popup/src/lib/components/navigation/index.ts create mode 100644 libs/popup/src/lib/components/navigation/navigation-element.html create mode 100644 libs/popup/src/lib/components/navigation/navigation-element.scss create mode 100644 libs/popup/src/lib/components/navigation/navigation-element.ts create mode 100644 libs/popup/src/lib/components/tabs/index.ts create mode 100644 libs/popup/src/lib/components/tabs/tabs-element.html create mode 100644 libs/popup/src/lib/components/tabs/tabs-element.scss create mode 100644 libs/popup/src/lib/components/tabs/tabs-element.ts create mode 100644 libs/popup/src/lib/extention-api-provider.ts create mode 100644 libs/popup/src/lib/jquery.ts create mode 100644 libs/popup/templates.d.ts create mode 100644 libs/popup/tsconfig.json create mode 100644 libs/popup/tsconfig.lib.json create mode 100644 nx.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 tools/rspack/extention-config.js create mode 100644 tools/rspack/ui-config.js create mode 100644 tsconfig.base.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..e14450d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,24 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node +{ + "name": "Node.js & TypeScript", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye", + + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + "ghcr.io/devcontainers/features/common-utils:2": {} + } + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "yarn install", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +node_modules diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..9ca2e83 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,35 @@ +{ + "root": true, + "ignorePatterns": ["**/*"], + "plugins": ["@nx"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@nx/enforce-module-boundaries": [ + "error", + { + "enforceBuildableLibDependency": true, + "allow": [], + "depConstraints": [ + { + "sourceTag": "*", + "onlyDependOnLibsWithTags": ["*"] + } + ] + } + ] + } + }, + { + "files": ["*.ts", "*.tsx"], + "extends": ["plugin:@nx/typescript"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "extends": ["plugin:@nx/javascript"], + "rules": {} + } + ] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ad9be6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +.nx +dist diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..56b66ac --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +# Add files here to ignore them from prettier formatting +/dist +/coverage + +/.nx/cache \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..85cabbc --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 0x48piraj + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 5a043c7..a0387fb 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@

FadBlock: Friendly Adblock for Youtube™

- This was posted over reddit a few months ago, [Apparently Ad Blockers are not allowed on Youtube. Is this a new thing they've implemented?](https://www.reddit.com/r/youtube/comments/13cfdbi/apparently_ad_blockers_are_not_allowed_on_youtube/?rdt=64832) and judging by all the recent comments and posts all over [r/youtube](https://www.reddit.com/r/youtube/), this change was just rolled out on a **larger scale**. This blocker is designed to monitor advertisements, automatically seek the ads and skip them. It's important to note that this doesn't classify as traditional ad blocking, as the ad content is technically "loaded". @@ -33,7 +32,7 @@ This extension effectively eliminates all categories of YouTube advertisements: **Category 4:** Skippable 5-second-must-be-watched video ads, which may be positioned at the video's start, midway, or at the end. -**Category 5:** Ads similar to Category 4, but with two consecutive video ads instead of one. +**Category 5:** Ads similar to Category 4, but with two consecutive video ads instead of one. **Category 6:** Inescapable 10-second video ads, which must be watched. @@ -59,7 +58,6 @@ Unfortunately there’s no app or anything. You cannot install Chrome extensions > Note: You will have to leave YouTube app and watch over a browser (not very elegant, sorry) - ## Install Fadblock to Opera, Edge, and Brave This section explains on how to install the extension utilizing the _developer mode_ as well as Chromium-based browsers, @@ -74,12 +72,21 @@ This section explains on how to install the extension utilizing the _developer m **Brave Browser:** You can visit Chrome Web Store and download the extension (https://chrome.google.com/webstore/detail/fadblock/mdadjjfmjhfcibgfhfjbaiiljpllkbfc). +## Building extensions -## Show your support +To build extensions: -* Follow me on GitHub [@0x48piraj](https://github.com/0x48piraj) for updates. -* I do not ask for donations, all I ask is that you star (⭐) this repository. +1. Install required dependencies using `npm install` +2. Build extension you want + - for Chrome `npx nx build chrome` + - for Firefox `npx nx build firefox` + - for Opera `npx nx build opera` +3. Build artifacts will be stored in `dist/apps` folder under specific browser name + +## Show your support +- Follow me on GitHub [@0x48piraj](https://github.com/0x48piraj) for updates. +- I do not ask for donations, all I ask is that you star (⭐) this repository. ## Disclaimer @@ -90,4 +97,4 @@ 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. \ No newline at end of file +software. diff --git a/apps/.gitkeep b/apps/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/chrome/.babelrc b/apps/chrome/.babelrc new file mode 100644 index 0000000..f2f3806 --- /dev/null +++ b/apps/chrome/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@nx/js/babel"] +} diff --git a/apps/chrome/.eslintrc.json b/apps/chrome/.eslintrc.json new file mode 100644 index 0000000..9d9c0db --- /dev/null +++ b/apps/chrome/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/chrome/assets/.gitkeep b/apps/chrome/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/chrome/manifest.json b/apps/chrome/manifest.json new file mode 100644 index 0000000..f6134ce --- /dev/null +++ b/apps/chrome/manifest.json @@ -0,0 +1,26 @@ +{ + "manifest_version": 3, + "name": "FadBlock: Friendly Adblock for Youtube™", + "version": "1.2.1", + "description": "A fast, lightweight, and undetectable YouTube Ads Blocker for Chrome.", + "icons": { + "16": "shared-assets/icons/icon-16x16.png", + "48": "shared-assets/icons/icon-48x48.png", + "128": "shared-assets/icons/icon-120x120.png" + }, + "action": { + "default_icon": "shared-assets/logo.png", + "default_popup": "popup/index.html" + }, + "permissions": ["scripting", "tabs"], + "host_permissions": ["https://www.youtube.com/*"], + "background": { + "service_worker": "service-worker.js" + }, + "content_scripts": [ + { + "matches": ["https://www.youtube.com/*"], + "js": ["main.js"] + } + ] +} diff --git a/apps/chrome/popup/app/index.html b/apps/chrome/popup/app/index.html new file mode 100644 index 0000000..7fd9972 --- /dev/null +++ b/apps/chrome/popup/app/index.html @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/apps/chrome/popup/app/jquery.ts b/apps/chrome/popup/app/jquery.ts new file mode 100644 index 0000000..4952e57 --- /dev/null +++ b/apps/chrome/popup/app/jquery.ts @@ -0,0 +1,3 @@ +import { initJQuery } from '@fadblock/popup'; + +initJQuery(); diff --git a/apps/chrome/popup/app/main.ts b/apps/chrome/popup/app/main.ts new file mode 100644 index 0000000..87c6bce --- /dev/null +++ b/apps/chrome/popup/app/main.ts @@ -0,0 +1,19 @@ +import './jquery'; +import 'jquery-nice-select'; +import 'jquery-ui'; +import { + ContentElement, + ExtensionApiProvider, + NavigationElement, + TabsElement, +} from '@fadblock/popup'; + +import './styles.scss'; + +if (window.chrome) { + ExtensionApiProvider.provide(chrome); +} + +NavigationElement.define(); +TabsElement.define(); +ContentElement.define(); diff --git a/apps/chrome/popup/app/styles.scss b/apps/chrome/popup/app/styles.scss new file mode 100644 index 0000000..71e1177 --- /dev/null +++ b/apps/chrome/popup/app/styles.scss @@ -0,0 +1,27 @@ +@import 'jquery-ui/dist/themes/base/jquery-ui.css'; +@import 'jquery-nice-select/css/nice-select.css'; + +body, +html { + overflow: hidden; + margin: 0px; + width: 314px; + height: 510px; + background-color: #fff; +} + +a:link { + color: #cc181e; + background-color: transparent; + text-decoration: none; +} +a:visited { + color: #da585c; + background-color: transparent; + text-decoration: none; +} +a:hover { + color: #d6464a; + background-color: transparent; + text-decoration: underline; +} diff --git a/apps/chrome/popup/rspack.config.js b/apps/chrome/popup/rspack.config.js new file mode 100644 index 0000000..6ee3cdd --- /dev/null +++ b/apps/chrome/popup/rspack.config.js @@ -0,0 +1,6 @@ +const { composePlugins, withNx, withWeb } = require('@nx/rspack'); +const { withUI } = require('../../../tools/rspack/ui-config'); + +module.exports = composePlugins(withNx(), withWeb(), withUI(), (config) => { + return config; +}); diff --git a/apps/chrome/popup/tsconfig.app.json b/apps/chrome/popup/tsconfig.app.json new file mode 100644 index 0000000..70340fa --- /dev/null +++ b/apps/chrome/popup/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node", "chrome"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["app/**/*.ts"] +} diff --git a/apps/chrome/project.json b/apps/chrome/project.json new file mode 100644 index 0000000..7a214af --- /dev/null +++ b/apps/chrome/project.json @@ -0,0 +1,89 @@ +{ + "name": "chrome", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/chrome", + "tags": [], + "targets": { + "build": { + "executor": "nx:run-commands", + "options": { + "commands": [ + { "command": "nx run chrome:build-extension" }, + { "command": "nx run chrome:build-popup" } + ], + "parallel": false + } + }, + "build-extension": { + "executor": "@nx/rspack:rspack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "web", + "outputPath": "dist/apps/chrome", + "main": "apps/chrome/src/main.ts", + "tsConfig": "apps/chrome/tsconfig.app.json", + "rspackConfig": "apps/chrome/rspack.config.js", + "assets": [ + "apps/chrome/shared-assets", + "apps/chrome/assets", + "apps/chrome/manifest.json" + ] + }, + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "mode": "production", + "optimization": true, + "sourceMap": false + } + } + }, + "build-popup": { + "executor": "@nx/rspack:rspack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "web", + "outputPath": "dist/apps/chrome/popup", + "main": "apps/chrome/popup/app/main.ts", + "indexHtml": "apps/chrome/popup/app/index.html", + "tsConfig": "apps/chrome/popup/tsconfig.app.json", + "rspackConfig": "apps/chrome/popup/rspack.config.js", + "assets": ["apps/chrome/shared-assets", "apps/chrome/assets"] + }, + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "mode": "production", + "optimization": true, + "sourceMap": false + } + } + }, + "serve-popup": { + "executor": "@nx/rspack:dev-server", + "options": { + "buildTarget": "chrome:build-popup:development" + }, + "configurations": { + "development": {}, + "production": { + "buildTarget": "chrome:build-popup:production" + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/chrome/**/*.ts"] + } + } + } +} diff --git a/apps/chrome/rspack.config.js b/apps/chrome/rspack.config.js new file mode 100644 index 0000000..40ef39a --- /dev/null +++ b/apps/chrome/rspack.config.js @@ -0,0 +1,11 @@ +const { composePlugins, withNx, withWeb } = require('@nx/rspack'); +const { withExtension } = require('../../tools/rspack/extention-config'); + +module.exports = composePlugins( + withNx(), + withWeb(), + withExtension('chrome'), + (config) => { + return config; + }, +); diff --git a/apps/chrome/shared-assets b/apps/chrome/shared-assets new file mode 120000 index 0000000..41aef43 --- /dev/null +++ b/apps/chrome/shared-assets @@ -0,0 +1 @@ +../../assets \ No newline at end of file diff --git a/apps/chrome/src/index.html b/apps/chrome/src/index.html new file mode 100644 index 0000000..c50eddd --- /dev/null +++ b/apps/chrome/src/index.html @@ -0,0 +1 @@ + diff --git a/apps/chrome/src/main.ts b/apps/chrome/src/main.ts new file mode 100644 index 0000000..932ac71 --- /dev/null +++ b/apps/chrome/src/main.ts @@ -0,0 +1,3 @@ +import { scheduleSkipAds } from '@fadblock/core'; + +scheduleSkipAds(); diff --git a/apps/chrome/src/service-worker.ts b/apps/chrome/src/service-worker.ts new file mode 100644 index 0000000..3ad8684 --- /dev/null +++ b/apps/chrome/src/service-worker.ts @@ -0,0 +1,6 @@ +import { FadblockExtension, scheduleSkipAds } from '@fadblock/core'; + +const extension = new FadblockExtension(chrome); + +extension.reloadYoutubeTabsOnInstall(); +extension.executeOnYoutubeTabs(scheduleSkipAds); diff --git a/apps/chrome/tsconfig.app.json b/apps/chrome/tsconfig.app.json new file mode 100644 index 0000000..07f1aa9 --- /dev/null +++ b/apps/chrome/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node", "chrome"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/apps/chrome/tsconfig.json b/apps/chrome/tsconfig.json new file mode 100644 index 0000000..f878be4 --- /dev/null +++ b/apps/chrome/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./popup/tsconfig.app.json" + } + ] +} diff --git a/apps/firefox/.babelrc b/apps/firefox/.babelrc new file mode 100644 index 0000000..f2f3806 --- /dev/null +++ b/apps/firefox/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@nx/js/babel"] +} diff --git a/apps/firefox/.eslintrc.json b/apps/firefox/.eslintrc.json new file mode 100644 index 0000000..9d9c0db --- /dev/null +++ b/apps/firefox/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/firefox/assets/.gitkeep b/apps/firefox/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/firefox/manifest.json b/apps/firefox/manifest.json new file mode 100644 index 0000000..3cf9b9b --- /dev/null +++ b/apps/firefox/manifest.json @@ -0,0 +1,26 @@ +{ + "manifest_version": 3, + "name": "FadBlock: Friendly Adblock for Youtube™", + "version": "1.2.1", + "description": "A fast, lightweight, and undetectable YouTube Ads Blocker for Firefox.", + "icons": { + "16": "shared-assets/icons/icon-16x16.png", + "48": "shared-assets/icons/icon-48x48.png", + "128": "shared-assets/icons/icon-120x120.png" + }, + "action": { + "default_icon": "shared-assets/logo.png", + "default_popup": "popup/index.html" + }, + "permissions": ["scripting", "tabs"], + "host_permissions": ["https://www.youtube.com/*"], + "background": { + "service_worker": "service-worker.js" + }, + "content_scripts": [ + { + "matches": ["https://www.youtube.com/*"], + "js": ["main.js"] + } + ] +} diff --git a/apps/firefox/popup/app/index.html b/apps/firefox/popup/app/index.html new file mode 100644 index 0000000..7fd9972 --- /dev/null +++ b/apps/firefox/popup/app/index.html @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/apps/firefox/popup/app/jquery.ts b/apps/firefox/popup/app/jquery.ts new file mode 100644 index 0000000..4952e57 --- /dev/null +++ b/apps/firefox/popup/app/jquery.ts @@ -0,0 +1,3 @@ +import { initJQuery } from '@fadblock/popup'; + +initJQuery(); diff --git a/apps/firefox/popup/app/main.ts b/apps/firefox/popup/app/main.ts new file mode 100644 index 0000000..a355340 --- /dev/null +++ b/apps/firefox/popup/app/main.ts @@ -0,0 +1,19 @@ +import './jquery'; +import 'jquery-nice-select'; +import 'jquery-ui'; +import { + ContentElement, + ExtensionApiProvider, + NavigationElement, + TabsElement, +} from '@fadblock/popup'; + +import './styles.scss'; + +if (window.browser) { + ExtensionApiProvider.provide(browser); +} + +NavigationElement.define(); +TabsElement.define(); +ContentElement.define(); diff --git a/apps/firefox/popup/app/styles.scss b/apps/firefox/popup/app/styles.scss new file mode 100644 index 0000000..4056e5e --- /dev/null +++ b/apps/firefox/popup/app/styles.scss @@ -0,0 +1,436 @@ +body, html { + overflow: hidden; + margin: 0px; + width: 314px; + height: 510px; + background-color: #FFF; +} +#navigation { + width: 100%; + height: 50px; +} +#logo { + font-family: Roboto; + font-weight: bold; + color: #282828; + font-size: 15px; + margin-left: 20px; + margin-top: 14px; +} +#logo img { + vertical-align: bottom; + margin-right: 7px; + margin-bottom: -1px; +} +#more { + position: absolute; + top: 16px; + right: 20px; + width: 35px; + height: 35px; + text-align: center; + border-radius: 50%; + transition: background-color .15s cubic-bezier(.05,.03,.35,1); + margin-top: -7px; +} +#more img { + margin-top: 7px; +} +#more:hover { + background-color: #E7EAEC; + cursor: pointer; +} +#tabs { + width: 100%; + height: 72px; + border-bottom: 1px solid #E7E9EB; + background-color: #FFF; +} +#feed-type { + display: table; + width: 90%; + height: 100%; + margin-left: auto; + margin-right: auto; +} +.type { + display: table-cell; + text-align: center; + width: 33%; + transition: opacity .15s cubic-bezier(.05,.03,.35,1); +} +.type:not(.type-active):hover { + opacity: .7; + cursor: pointer; +} +.type p { + color: #7B81A5; + font-size: 13px; + font-family: Roboto; + font-weight: 600; + margin-top: 7px; +} +#video-feed img { + width: 45px; + height: 30.3px; +} +#home-feed:not(.type-active) img { + margin-left: -2px; +} +#home-feed img { + margin-bottom: -3px; +} +#countdown-select { + top: 420px; + left: 35px; + position: absolute; + background: #FFFFFF; + border: 1px solid #C5C8CA; + box-sizing: border-box; + box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); + border-radius: 5px; + height: 92px; + width: 87px; + visibility: hidden; + transform: scale(0); + transition: all .15s cubic-bezier(.05,.03,.35,1); + transform-origin: top center; + opacity: 0; +} +.countdown, #more-select a { + font-family: Roboto; + font-weight: normal; + font-size: 14px; + text-align: center; + border-bottom: 1px solid #E7E9EB; + width: 100%; + height: 30px; + line-height: 30px; + background-color: #FFF; + overflow: hidden; + box-sizing: border-box; + transition: background-color .15s cubic-bezier(.05,.03,.35,1); + text-decoration: none; + color: #000; + display: block; +} +.countdown:hover, #more-select a:hover { + background-color: #F5F6F8; + cursor: pointer; +} +.countdown:first-child, #more-select a:first-child { + border-radius: 5px 5px 0px 0px; +} +.countdown:last-child, #more-select a:last-child { + border-bottom: 0px; + border-radius: 0px 0px 5px 5px; +} +.countactive { + visibility: visible!important; + transform: scale(1)!important; + opacity: 1!important; +} +#more-select a { + font-family: Roboto; + font-weight: normal; + font-size: 14px; + text-align: center; + border-bottom: 1px solid #E7E9EB; + width: 100%; + height: 30px; + line-height: 30px; + background-color: #FFF; + overflow: hidden; + box-sizing: border-box; + transition: background-color .15s cubic-bezier(.05,.03,.35,1); + text-decoration: none; + color: #000; + display: block; +} +#more-select a:hover { + background-color: #F5F6F8; + cursor: pointer; +} +#more-select a:first-child { + border-radius: 5px 5px 0px 0px; +} +#more-select a:last-child { + border-bottom: 0px; + border-radius: 0px 0px 5px 5px; +} +#more-select { + z-index: 2; + top: 40px; + right: 25px; + position: absolute; + background: #FFFFFF; + border: 1px solid #C5C8CA; + box-sizing: border-box; + box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); + border-radius: 5px; + height: 182px; + width: 140px; + visibility: hidden; + transform: scale(0); + transition: all .15s cubic-bezier(.05,.03,.35,1); + transform-origin: top center; + opacity: 0; +} + + +.cube { +position:relative; +width:300px; +height:60px; +margin:1rem auto; +-webkit-transform-style:preserve-3d; +-moz-transform-style: preserve-3d; +-ms-transform-style: preserve-3d; +-o-transform-style: preserve-3d; +transform-style: preserve-3d; +-webkit-perspective:200px; +-moz-perspective: 200px; +-ms-perspective: 200px; +-o-perspective: 200px; +perspective: 200px; +} +/* positions */ +.a, .b, .c, .d { +position:absolute; +width:50%; +height:100%; +left:0px; +z-index:222; +} +.a:before, .b:before, .c:before, .d:before, .a:after, .b:after { +content:''; +position:absolute; +top:0px; +left:0px; +width:300px; +height:60px; +} +.a:before, .b:before, .c:before, .d:before { +z-index:111; +} +.a:after, .b:after { +z-index:333; +} +.b { +top:0px; +-webkit-transform:rotateX(75deg) translateY(-60px); +-moz-transform: rotateX(75deg) translateY(-60px); +-o-transform: rotateX(75deg) translateY(-60px); +-ms-transform: rotateX(75deg) translateY(-60px); +transform: rotateX(75deg) translateY(-60px); +-webkit-transform-origin:0% 0%; +-moz-transform-origin: 0% 0%; +-o-transform-origin: 0% 0%; +-ms-transform-origin: 0% 0%; +transform-origin: 0% 0%; +} +.c { +top:0px; +-webkit-transform:rotateX(75deg); +-moz-transform: rotateX(75deg); +-o-transform: rotateX(75deg); +-ms-transform: rotateX(75deg); +transform: rotateX(75deg); +-webkit-transform-origin:100% 100%; +-moz-transform-origin: 100% 100%; +-o-transform-origin: 100% 100%; +-ms-transform-origin: 100% 100%; +transform-origin: 100% 100%; +} +.d { +-webkit-transform:translateZ(-60px) translateY(-15px); +-moz-transform: translateZ(-60px) translateY(-15px); +-o-transform: translateZ(-60px) translateY(-15px); +-ms-transform: translateZ(-60px) translateY(-15px); +transform: translateZ(-60px) translateY(-15px); +} +/* colors */ +.a, .b { +background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(204,24,30,0.8)), to(rgba(204,24,30,0.8))); +background-image: -webkit-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-image: -moz-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-image: -o-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-image: linear-gradient(to bottom, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-repeat:no-repeat; +background-size:100% 100%; +background-position:0% 0%; +} +.c, .d { +background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(204,24,30,0.5)), to(rgba(204,24,30,0.5))); +background-image:-webkit-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-image: -moz-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-image: -o-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-image: linear-gradient(to bottom, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-repeat:no-repeat; +background-size:100% 100%; +background-position:0% 0%; +} +.c:before { +-webkit-box-shadow:0px 30px 20px -20px rgba(0,0,0,0.4), + 0px 40px 15px -15px rgba(0,0,0,0.25); +-moz-box-shadow: 0px 30px 20px -20px rgba(0,0,0,0.4), + 0px 40px 15px -15px rgba(0,0,0,0.25); +box-shadow: 0px 30px 20px -20px rgba(0,0,0,0.4), + 0px 40px 15px -15px rgba(0,0,0,0.25); +} +.a:before, .b:before, .c:before, .d:before { +background-color:rgba(0,0,0,0.05); +} +.a:after { +background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.07)), to(rgba(0,0,0,0))); +background-image:-webkit-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); +background-image: -moz-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); +background-image: -o-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); +background-image: linear-gradient(to bottom, rgba(0,0,0,0.07), rgba(0,0,0,0)); +} +.b:after { +background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0.1)), to(rgba(255,255,255,0.25))); +background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +background-image: -moz-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +background-image: -o-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +background-image: linear-gradient(to bottom, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +} +/* jQuery stuff */ +#slider-range-min { +position:absolute; +width: 94%; +left:3%; +top:27px; +margin: 0px; +z-index:999; +} +.ui-slider { +height:5px; +border:none; +background:rgba(0,0,0,0.1); +-webkit-box-shadow:0px 2px 2px rgba(255,255,255,0.25), + inset 0px 1px 3px rgba(0,0,0,0.3); +-moz-box-shadow: 0px 2px 2px rgba(255,255,255,0.25), + inset 0px 1px 3px rgba(0,0,0,0.3); +box-shadow: 0px 2px 2px rgba(255,255,255,0.25), + inset 0px 1px 3px rgba(0,0,0,0.3); +} +.ui-slider:before, .ui-slider:after { +content:'IIIIIII'; +position:absolute; +left:2px; +width:100%; +font-family: 'Roboto', sans-serif; +font-size:1.2rem; +font-weight:300; +color:rgba(0,0,0,0.3); +letter-spacing:41px; +text-shadow:1px 1px 0px rgba(255,255,255,0.2); +} +.ui-slider:before { +top:-1.4rem; +} +.ui-slider:after { +bottom:-1.4rem; +} +.ui-slider-range {background:transparent;} +.ui-slider .ui-slider-handle { +top:-8px; +width:26px; +height:20px; +margin-left:-15px; +padding-left:4px; +border:none; +background:rgba(255,255,255,0.7); +border-radius:2px; +text-align:center; +font-family: 'Roboto', sans-serif; +font-size:1.2rem; +line-height:20px; +color:rgba(0,0,0,0.5); +text-decoration:none; +letter-spacing:3px; +cursor:pointer; +text-shadow:1px 1px 2px rgba(255,255,255,1); +-webkit-box-shadow:1px 1px 8px rgba(0,0,0,0.3); +-moz-box-shadow: 1px 1px 8px rgba(0,0,0,0.3); +box-shadow: 1px 1px 8px rgba(0,0,0,0.3); +} +.ui-slider .ui-slider-handle:focus { +outline:none; +} + +#title { +font-family: 'Roboto', sans-serif; +font-size:1.1rem; +font-weight:300; +line-height:1.8rem; +color: #282828; +margin: auto; +padding: 11px 0 19px 10px; +} +#cta { +position:relative; +display:inline-block; +text-align:center; +font-family: 'Roboto', sans-serif; +font-weight:400; +font-size:1rem; +color:#282828; +margin: auto; +padding: 10px 10px; +} +#cta:focus {outline:none;} +/* base */ +#content { +-webkit-box-sizing:border-box; +-moz-box-sizing: border-box; +box-sizing: border-box; +width:100%; +text-align:center; +} +#icons { +display: flex; +justify-content: space-between; +margin-top: 20px; +} +#icon { + margin: auto; +} +#icon img { + vertical-align: bottom; +} +#note { +display: none; +font-family: Roboto; +color: #282828; +font-size: 14px; +font-weight:500; +margin: auto; +} +#end { +position: absolute; +bottom: 0; +} +#endnote { +font-family: Roboto; +color: #282828; +font-size: 14px; +font-weight:300; +padding: 0 10px; +} +a:link { +color: #CC181E; +background-color: transparent; +text-decoration: none; +} +a:visited { +color: #DA585C; +background-color: transparent; +text-decoration: none; +} +a:hover { +color: #D6464A; +background-color: transparent; +text-decoration: underline; +} diff --git a/apps/firefox/popup/rspack.config.js b/apps/firefox/popup/rspack.config.js new file mode 100644 index 0000000..6ee3cdd --- /dev/null +++ b/apps/firefox/popup/rspack.config.js @@ -0,0 +1,6 @@ +const { composePlugins, withNx, withWeb } = require('@nx/rspack'); +const { withUI } = require('../../../tools/rspack/ui-config'); + +module.exports = composePlugins(withNx(), withWeb(), withUI(), (config) => { + return config; +}); diff --git a/apps/firefox/popup/tsconfig.app.json b/apps/firefox/popup/tsconfig.app.json new file mode 100644 index 0000000..3b233d9 --- /dev/null +++ b/apps/firefox/popup/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node", "firefox-webext-browser"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["app/**/*.ts"] +} diff --git a/apps/firefox/project.json b/apps/firefox/project.json new file mode 100644 index 0000000..d184f4e --- /dev/null +++ b/apps/firefox/project.json @@ -0,0 +1,89 @@ +{ + "name": "firefox", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/firefox", + "tags": [], + "targets": { + "build": { + "executor": "nx:run-commands", + "options": { + "commands": [ + { "command": "nx run firefox:build-extension" }, + { "command": "nx run firefox:build-popup" } + ], + "parallel": false + } + }, + "build-extension": { + "executor": "@nx/rspack:rspack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "web", + "outputPath": "dist/apps/firefox", + "main": "apps/firefox/src/main.ts", + "tsConfig": "apps/firefox/tsconfig.app.json", + "rspackConfig": "apps/firefox/rspack.config.js", + "assets": [ + "apps/firefox/shared-assets", + "apps/firefox/assets", + "apps/firefox/manifest.json" + ] + }, + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "mode": "production", + "optimization": true, + "sourceMap": false + } + } + }, + "build-popup": { + "executor": "@nx/rspack:rspack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "web", + "outputPath": "dist/apps/firefox/popup", + "main": "apps/firefox/popup/app/main.ts", + "indexHtml": "apps/firefox/popup/app/index.html", + "tsConfig": "apps/firefox/popup/tsconfig.app.json", + "rspackConfig": "apps/firefox/popup/rspack.config.js", + "assets": ["apps/firefox/shared-assets", "apps/firefox/assets"] + }, + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "mode": "production", + "optimization": true, + "sourceMap": false + } + } + }, + "serve-popup": { + "executor": "@nx/rspack:dev-server", + "options": { + "buildTarget": "firefox:build-popup:development" + }, + "configurations": { + "development": {}, + "production": { + "buildTarget": "firefox:build-popup:production" + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/firefox/**/*.ts"] + } + } + } +} diff --git a/apps/firefox/rspack.config.js b/apps/firefox/rspack.config.js new file mode 100644 index 0000000..eccc7ea --- /dev/null +++ b/apps/firefox/rspack.config.js @@ -0,0 +1,11 @@ +const { composePlugins, withNx, withWeb } = require('@nx/rspack'); +const { withExtension } = require('../../tools/rspack/extention-config'); + +module.exports = composePlugins( + withNx(), + withWeb(), + withExtension('firefox'), + (config) => { + return config; + }, +); diff --git a/apps/firefox/shared-assets b/apps/firefox/shared-assets new file mode 120000 index 0000000..41aef43 --- /dev/null +++ b/apps/firefox/shared-assets @@ -0,0 +1 @@ +../../assets \ No newline at end of file diff --git a/apps/firefox/src/index.html b/apps/firefox/src/index.html new file mode 100644 index 0000000..c50eddd --- /dev/null +++ b/apps/firefox/src/index.html @@ -0,0 +1 @@ + diff --git a/apps/firefox/src/main.ts b/apps/firefox/src/main.ts new file mode 100644 index 0000000..932ac71 --- /dev/null +++ b/apps/firefox/src/main.ts @@ -0,0 +1,3 @@ +import { scheduleSkipAds } from '@fadblock/core'; + +scheduleSkipAds(); diff --git a/apps/firefox/src/service-worker.ts b/apps/firefox/src/service-worker.ts new file mode 100644 index 0000000..2281df6 --- /dev/null +++ b/apps/firefox/src/service-worker.ts @@ -0,0 +1,6 @@ +import { FadblockExtension, scheduleSkipAds } from '@fadblock/core'; + +const extension = new FadblockExtension(browser); + +extension.reloadYoutubeTabsOnInstall(); +extension.executeOnYoutubeTabs(scheduleSkipAds); diff --git a/apps/firefox/tsconfig.app.json b/apps/firefox/tsconfig.app.json new file mode 100644 index 0000000..1b25977 --- /dev/null +++ b/apps/firefox/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node", "firefox-webext-browser"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/apps/firefox/tsconfig.json b/apps/firefox/tsconfig.json new file mode 100644 index 0000000..f878be4 --- /dev/null +++ b/apps/firefox/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./popup/tsconfig.app.json" + } + ] +} diff --git a/apps/opera/.babelrc b/apps/opera/.babelrc new file mode 100644 index 0000000..f2f3806 --- /dev/null +++ b/apps/opera/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@nx/js/babel"] +} diff --git a/apps/opera/.eslintrc.json b/apps/opera/.eslintrc.json new file mode 100644 index 0000000..9d9c0db --- /dev/null +++ b/apps/opera/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/opera/assets/.gitkeep b/apps/opera/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/opera/manifest.json b/apps/opera/manifest.json new file mode 100644 index 0000000..ef7d236 --- /dev/null +++ b/apps/opera/manifest.json @@ -0,0 +1,26 @@ +{ + "manifest_version": 3, + "name": "FadBlock: Friendly Adblock for Youtube™", + "version": "1.2.1", + "description": "A fast, lightweight, and undetectable YouTube Ads Blocker for Opera.", + "icons": { + "16": "shared-assets/icons/icon-16x16.png", + "48": "shared-assets/icons/icon-48x48.png", + "128": "shared-assets/icons/icon-120x120.png" + }, + "action": { + "default_icon": "shared-assets/logo.png", + "default_popup": "popup/index.html" + }, + "permissions": ["scripting", "tabs"], + "host_permissions": ["https://www.youtube.com/*"], + "background": { + "service_worker": "service-worker.js" + }, + "content_scripts": [ + { + "matches": ["https://www.youtube.com/*"], + "js": ["main.js"] + } + ] +} diff --git a/apps/opera/popup/app/index.html b/apps/opera/popup/app/index.html new file mode 100644 index 0000000..7fd9972 --- /dev/null +++ b/apps/opera/popup/app/index.html @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/apps/opera/popup/app/jquery.ts b/apps/opera/popup/app/jquery.ts new file mode 100644 index 0000000..4952e57 --- /dev/null +++ b/apps/opera/popup/app/jquery.ts @@ -0,0 +1,3 @@ +import { initJQuery } from '@fadblock/popup'; + +initJQuery(); diff --git a/apps/opera/popup/app/main.ts b/apps/opera/popup/app/main.ts new file mode 100644 index 0000000..87c6bce --- /dev/null +++ b/apps/opera/popup/app/main.ts @@ -0,0 +1,19 @@ +import './jquery'; +import 'jquery-nice-select'; +import 'jquery-ui'; +import { + ContentElement, + ExtensionApiProvider, + NavigationElement, + TabsElement, +} from '@fadblock/popup'; + +import './styles.scss'; + +if (window.chrome) { + ExtensionApiProvider.provide(chrome); +} + +NavigationElement.define(); +TabsElement.define(); +ContentElement.define(); diff --git a/apps/opera/popup/app/styles.scss b/apps/opera/popup/app/styles.scss new file mode 100644 index 0000000..4056e5e --- /dev/null +++ b/apps/opera/popup/app/styles.scss @@ -0,0 +1,436 @@ +body, html { + overflow: hidden; + margin: 0px; + width: 314px; + height: 510px; + background-color: #FFF; +} +#navigation { + width: 100%; + height: 50px; +} +#logo { + font-family: Roboto; + font-weight: bold; + color: #282828; + font-size: 15px; + margin-left: 20px; + margin-top: 14px; +} +#logo img { + vertical-align: bottom; + margin-right: 7px; + margin-bottom: -1px; +} +#more { + position: absolute; + top: 16px; + right: 20px; + width: 35px; + height: 35px; + text-align: center; + border-radius: 50%; + transition: background-color .15s cubic-bezier(.05,.03,.35,1); + margin-top: -7px; +} +#more img { + margin-top: 7px; +} +#more:hover { + background-color: #E7EAEC; + cursor: pointer; +} +#tabs { + width: 100%; + height: 72px; + border-bottom: 1px solid #E7E9EB; + background-color: #FFF; +} +#feed-type { + display: table; + width: 90%; + height: 100%; + margin-left: auto; + margin-right: auto; +} +.type { + display: table-cell; + text-align: center; + width: 33%; + transition: opacity .15s cubic-bezier(.05,.03,.35,1); +} +.type:not(.type-active):hover { + opacity: .7; + cursor: pointer; +} +.type p { + color: #7B81A5; + font-size: 13px; + font-family: Roboto; + font-weight: 600; + margin-top: 7px; +} +#video-feed img { + width: 45px; + height: 30.3px; +} +#home-feed:not(.type-active) img { + margin-left: -2px; +} +#home-feed img { + margin-bottom: -3px; +} +#countdown-select { + top: 420px; + left: 35px; + position: absolute; + background: #FFFFFF; + border: 1px solid #C5C8CA; + box-sizing: border-box; + box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); + border-radius: 5px; + height: 92px; + width: 87px; + visibility: hidden; + transform: scale(0); + transition: all .15s cubic-bezier(.05,.03,.35,1); + transform-origin: top center; + opacity: 0; +} +.countdown, #more-select a { + font-family: Roboto; + font-weight: normal; + font-size: 14px; + text-align: center; + border-bottom: 1px solid #E7E9EB; + width: 100%; + height: 30px; + line-height: 30px; + background-color: #FFF; + overflow: hidden; + box-sizing: border-box; + transition: background-color .15s cubic-bezier(.05,.03,.35,1); + text-decoration: none; + color: #000; + display: block; +} +.countdown:hover, #more-select a:hover { + background-color: #F5F6F8; + cursor: pointer; +} +.countdown:first-child, #more-select a:first-child { + border-radius: 5px 5px 0px 0px; +} +.countdown:last-child, #more-select a:last-child { + border-bottom: 0px; + border-radius: 0px 0px 5px 5px; +} +.countactive { + visibility: visible!important; + transform: scale(1)!important; + opacity: 1!important; +} +#more-select a { + font-family: Roboto; + font-weight: normal; + font-size: 14px; + text-align: center; + border-bottom: 1px solid #E7E9EB; + width: 100%; + height: 30px; + line-height: 30px; + background-color: #FFF; + overflow: hidden; + box-sizing: border-box; + transition: background-color .15s cubic-bezier(.05,.03,.35,1); + text-decoration: none; + color: #000; + display: block; +} +#more-select a:hover { + background-color: #F5F6F8; + cursor: pointer; +} +#more-select a:first-child { + border-radius: 5px 5px 0px 0px; +} +#more-select a:last-child { + border-bottom: 0px; + border-radius: 0px 0px 5px 5px; +} +#more-select { + z-index: 2; + top: 40px; + right: 25px; + position: absolute; + background: #FFFFFF; + border: 1px solid #C5C8CA; + box-sizing: border-box; + box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); + border-radius: 5px; + height: 182px; + width: 140px; + visibility: hidden; + transform: scale(0); + transition: all .15s cubic-bezier(.05,.03,.35,1); + transform-origin: top center; + opacity: 0; +} + + +.cube { +position:relative; +width:300px; +height:60px; +margin:1rem auto; +-webkit-transform-style:preserve-3d; +-moz-transform-style: preserve-3d; +-ms-transform-style: preserve-3d; +-o-transform-style: preserve-3d; +transform-style: preserve-3d; +-webkit-perspective:200px; +-moz-perspective: 200px; +-ms-perspective: 200px; +-o-perspective: 200px; +perspective: 200px; +} +/* positions */ +.a, .b, .c, .d { +position:absolute; +width:50%; +height:100%; +left:0px; +z-index:222; +} +.a:before, .b:before, .c:before, .d:before, .a:after, .b:after { +content:''; +position:absolute; +top:0px; +left:0px; +width:300px; +height:60px; +} +.a:before, .b:before, .c:before, .d:before { +z-index:111; +} +.a:after, .b:after { +z-index:333; +} +.b { +top:0px; +-webkit-transform:rotateX(75deg) translateY(-60px); +-moz-transform: rotateX(75deg) translateY(-60px); +-o-transform: rotateX(75deg) translateY(-60px); +-ms-transform: rotateX(75deg) translateY(-60px); +transform: rotateX(75deg) translateY(-60px); +-webkit-transform-origin:0% 0%; +-moz-transform-origin: 0% 0%; +-o-transform-origin: 0% 0%; +-ms-transform-origin: 0% 0%; +transform-origin: 0% 0%; +} +.c { +top:0px; +-webkit-transform:rotateX(75deg); +-moz-transform: rotateX(75deg); +-o-transform: rotateX(75deg); +-ms-transform: rotateX(75deg); +transform: rotateX(75deg); +-webkit-transform-origin:100% 100%; +-moz-transform-origin: 100% 100%; +-o-transform-origin: 100% 100%; +-ms-transform-origin: 100% 100%; +transform-origin: 100% 100%; +} +.d { +-webkit-transform:translateZ(-60px) translateY(-15px); +-moz-transform: translateZ(-60px) translateY(-15px); +-o-transform: translateZ(-60px) translateY(-15px); +-ms-transform: translateZ(-60px) translateY(-15px); +transform: translateZ(-60px) translateY(-15px); +} +/* colors */ +.a, .b { +background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(204,24,30,0.8)), to(rgba(204,24,30,0.8))); +background-image: -webkit-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-image: -moz-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-image: -o-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-image: linear-gradient(to bottom, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); +background-repeat:no-repeat; +background-size:100% 100%; +background-position:0% 0%; +} +.c, .d { +background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(204,24,30,0.5)), to(rgba(204,24,30,0.5))); +background-image:-webkit-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-image: -moz-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-image: -o-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-image: linear-gradient(to bottom, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); +background-repeat:no-repeat; +background-size:100% 100%; +background-position:0% 0%; +} +.c:before { +-webkit-box-shadow:0px 30px 20px -20px rgba(0,0,0,0.4), + 0px 40px 15px -15px rgba(0,0,0,0.25); +-moz-box-shadow: 0px 30px 20px -20px rgba(0,0,0,0.4), + 0px 40px 15px -15px rgba(0,0,0,0.25); +box-shadow: 0px 30px 20px -20px rgba(0,0,0,0.4), + 0px 40px 15px -15px rgba(0,0,0,0.25); +} +.a:before, .b:before, .c:before, .d:before { +background-color:rgba(0,0,0,0.05); +} +.a:after { +background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.07)), to(rgba(0,0,0,0))); +background-image:-webkit-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); +background-image: -moz-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); +background-image: -o-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); +background-image: linear-gradient(to bottom, rgba(0,0,0,0.07), rgba(0,0,0,0)); +} +.b:after { +background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0.1)), to(rgba(255,255,255,0.25))); +background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +background-image: -moz-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +background-image: -o-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +background-image: linear-gradient(to bottom, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); +} +/* jQuery stuff */ +#slider-range-min { +position:absolute; +width: 94%; +left:3%; +top:27px; +margin: 0px; +z-index:999; +} +.ui-slider { +height:5px; +border:none; +background:rgba(0,0,0,0.1); +-webkit-box-shadow:0px 2px 2px rgba(255,255,255,0.25), + inset 0px 1px 3px rgba(0,0,0,0.3); +-moz-box-shadow: 0px 2px 2px rgba(255,255,255,0.25), + inset 0px 1px 3px rgba(0,0,0,0.3); +box-shadow: 0px 2px 2px rgba(255,255,255,0.25), + inset 0px 1px 3px rgba(0,0,0,0.3); +} +.ui-slider:before, .ui-slider:after { +content:'IIIIIII'; +position:absolute; +left:2px; +width:100%; +font-family: 'Roboto', sans-serif; +font-size:1.2rem; +font-weight:300; +color:rgba(0,0,0,0.3); +letter-spacing:41px; +text-shadow:1px 1px 0px rgba(255,255,255,0.2); +} +.ui-slider:before { +top:-1.4rem; +} +.ui-slider:after { +bottom:-1.4rem; +} +.ui-slider-range {background:transparent;} +.ui-slider .ui-slider-handle { +top:-8px; +width:26px; +height:20px; +margin-left:-15px; +padding-left:4px; +border:none; +background:rgba(255,255,255,0.7); +border-radius:2px; +text-align:center; +font-family: 'Roboto', sans-serif; +font-size:1.2rem; +line-height:20px; +color:rgba(0,0,0,0.5); +text-decoration:none; +letter-spacing:3px; +cursor:pointer; +text-shadow:1px 1px 2px rgba(255,255,255,1); +-webkit-box-shadow:1px 1px 8px rgba(0,0,0,0.3); +-moz-box-shadow: 1px 1px 8px rgba(0,0,0,0.3); +box-shadow: 1px 1px 8px rgba(0,0,0,0.3); +} +.ui-slider .ui-slider-handle:focus { +outline:none; +} + +#title { +font-family: 'Roboto', sans-serif; +font-size:1.1rem; +font-weight:300; +line-height:1.8rem; +color: #282828; +margin: auto; +padding: 11px 0 19px 10px; +} +#cta { +position:relative; +display:inline-block; +text-align:center; +font-family: 'Roboto', sans-serif; +font-weight:400; +font-size:1rem; +color:#282828; +margin: auto; +padding: 10px 10px; +} +#cta:focus {outline:none;} +/* base */ +#content { +-webkit-box-sizing:border-box; +-moz-box-sizing: border-box; +box-sizing: border-box; +width:100%; +text-align:center; +} +#icons { +display: flex; +justify-content: space-between; +margin-top: 20px; +} +#icon { + margin: auto; +} +#icon img { + vertical-align: bottom; +} +#note { +display: none; +font-family: Roboto; +color: #282828; +font-size: 14px; +font-weight:500; +margin: auto; +} +#end { +position: absolute; +bottom: 0; +} +#endnote { +font-family: Roboto; +color: #282828; +font-size: 14px; +font-weight:300; +padding: 0 10px; +} +a:link { +color: #CC181E; +background-color: transparent; +text-decoration: none; +} +a:visited { +color: #DA585C; +background-color: transparent; +text-decoration: none; +} +a:hover { +color: #D6464A; +background-color: transparent; +text-decoration: underline; +} diff --git a/apps/opera/popup/rspack.config.js b/apps/opera/popup/rspack.config.js new file mode 100644 index 0000000..6ee3cdd --- /dev/null +++ b/apps/opera/popup/rspack.config.js @@ -0,0 +1,6 @@ +const { composePlugins, withNx, withWeb } = require('@nx/rspack'); +const { withUI } = require('../../../tools/rspack/ui-config'); + +module.exports = composePlugins(withNx(), withWeb(), withUI(), (config) => { + return config; +}); diff --git a/apps/opera/popup/tsconfig.app.json b/apps/opera/popup/tsconfig.app.json new file mode 100644 index 0000000..70340fa --- /dev/null +++ b/apps/opera/popup/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node", "chrome"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["app/**/*.ts"] +} diff --git a/apps/opera/project.json b/apps/opera/project.json new file mode 100644 index 0000000..df83386 --- /dev/null +++ b/apps/opera/project.json @@ -0,0 +1,89 @@ +{ + "name": "opera", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/opera", + "tags": [], + "targets": { + "build": { + "executor": "nx:run-commands", + "options": { + "commands": [ + { "command": "nx run opera:build-extension" }, + { "command": "nx run opera:build-popup" } + ], + "parallel": false + } + }, + "build-extension": { + "executor": "@nx/rspack:rspack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "web", + "outputPath": "dist/apps/opera", + "main": "apps/opera/src/main.ts", + "tsConfig": "apps/opera/tsconfig.app.json", + "rspackConfig": "apps/opera/rspack.config.js", + "assets": [ + "apps/opera/shared-assets", + "apps/opera/assets", + "apps/opera/manifest.json" + ] + }, + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "mode": "production", + "optimization": true, + "sourceMap": false + } + } + }, + "build-popup": { + "executor": "@nx/rspack:rspack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "web", + "outputPath": "dist/apps/opera/popup", + "main": "apps/opera/popup/app/main.ts", + "indexHtml": "apps/opera/popup/app/index.html", + "tsConfig": "apps/opera/popup/tsconfig.app.json", + "rspackConfig": "apps/opera/popup/rspack.config.js", + "assets": ["apps/opera/shared-assets", "apps/opera/assets"] + }, + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "mode": "production", + "optimization": true, + "sourceMap": false + } + } + }, + "serve-popup": { + "executor": "@nx/rspack:dev-server", + "options": { + "buildTarget": "opera:build-popup:development" + }, + "configurations": { + "development": {}, + "production": { + "buildTarget": "opera:build-popup:production" + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/opera/**/*.ts"] + } + } + } +} diff --git a/apps/opera/rspack.config.js b/apps/opera/rspack.config.js new file mode 100644 index 0000000..bbe5c42 --- /dev/null +++ b/apps/opera/rspack.config.js @@ -0,0 +1,11 @@ +const { composePlugins, withNx, withWeb } = require('@nx/rspack'); +const { withExtension } = require('../../tools/rspack/extention-config'); + +module.exports = composePlugins( + withNx(), + withWeb(), + withExtension('opera'), + (config) => { + return config; + }, +); diff --git a/apps/opera/shared-assets b/apps/opera/shared-assets new file mode 120000 index 0000000..41aef43 --- /dev/null +++ b/apps/opera/shared-assets @@ -0,0 +1 @@ +../../assets \ No newline at end of file diff --git a/apps/opera/src/index.html b/apps/opera/src/index.html new file mode 100644 index 0000000..c50eddd --- /dev/null +++ b/apps/opera/src/index.html @@ -0,0 +1 @@ + diff --git a/apps/opera/src/main.ts b/apps/opera/src/main.ts new file mode 100644 index 0000000..932ac71 --- /dev/null +++ b/apps/opera/src/main.ts @@ -0,0 +1,3 @@ +import { scheduleSkipAds } from '@fadblock/core'; + +scheduleSkipAds(); diff --git a/apps/opera/src/service-worker.ts b/apps/opera/src/service-worker.ts new file mode 100644 index 0000000..3ad8684 --- /dev/null +++ b/apps/opera/src/service-worker.ts @@ -0,0 +1,6 @@ +import { FadblockExtension, scheduleSkipAds } from '@fadblock/core'; + +const extension = new FadblockExtension(chrome); + +extension.reloadYoutubeTabsOnInstall(); +extension.executeOnYoutubeTabs(scheduleSkipAds); diff --git a/apps/opera/tsconfig.app.json b/apps/opera/tsconfig.app.json new file mode 100644 index 0000000..07f1aa9 --- /dev/null +++ b/apps/opera/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node", "chrome"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/apps/opera/tsconfig.json b/apps/opera/tsconfig.json new file mode 100644 index 0000000..f878be4 --- /dev/null +++ b/apps/opera/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./popup/tsconfig.app.json" + } + ] +} diff --git a/assets/icons/icon-120x120.png b/assets/icons/icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2e6a5ddf81807e56ee8aa4583e488d285af712 GIT binary patch literal 15822 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 literal 0 HcmV?d00001 diff --git a/assets/icons/icon-16x16.png b/assets/icons/icon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2411de3a99f6ddff0cce6dae075516769b7d2d GIT binary patch literal 1623 zcmZ{j2~-nT6owyKtHs^cx+0K`ERdOrNgz?Sutr_^&gGw!h;Wb3)s z0D#FtKW`DV(=21cSU6LiriMWCk=!%D6M%~S6OEE_(6^KNi2?xFNC6;qI{?G*Rq7)E zl2HJjtOkIe1Hi0=JpHo80F2QDFBSW=i2~dGeYG4`I-O!r$T~uT4F0~|UTz%%*9&aq zBIekNIbLKlJH1?cd_4^TeqG|Ao~X#yI7Pd_wTp{&bJ0$LYqv7?V(`*dHnW|LTnZG{ zxG!o(s4WP!&Yf2;aBE;v8&O)5=b{?k!t)%Y+{vNZ&E*t>taD+N(aEJ8w3tCDb!HWF z(Bn+naULh1Y?nv2&toxjxU9n@yKKUO0}O{EKc5^LIg@OE(1}(Ou__yN%%l*sL|ZMv zMoY3gK(XJ)=jM329Yh_oS}VV8>=^9oczVA2URFkr2mji7 zwP|?RI6O3BHjj*q7>9<;CezKdEkEbx+%G8_ywv*Jk-S&^eP*-yZb@M+lX|DDxdyYYF2^GD0_~2o4(;1ARbEMp@s%%fw zoTAvBrV<*%SLj26PErY{X~fp}*rCC}fu=?sLMx?{ZkOv?(=>$y8-2vem$z>T60J9SW$#{^G)B&8Dg_@!*|bOeT{)R<6gRUq60yt6Wz=BXw&tu2-LZ ze(R=jc=&on`Ky6}-eX7f3iCE5u0_V%`p&aQ6$BCy!i&ArEPxwrSHzJ3o+ffpF#?c=+|PxyuZ(tyCA;ALY2 zNU?@&RqRQ)a%8nnm^xabmhq*DGH3t`Wi52VP$!Hf#+>1*2>pFWa_9q zA&QMMfC>cK0=H){6gn!jTqFcBiZ~hkbVM1ij#J5z7)gpks)|oS{#|lJf^lRqE*Oi4 sNl;FVi!6#4g|b{wNeqTMvw2ZcCR8wCf5f;jIjjJLK7rmk!RoZX08TBC3IG5A literal 0 HcmV?d00001 diff --git a/assets/icons/icon-48x48.png b/assets/icons/icon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7eb5f5d2ba203835dae9bb112fe6b43b53de99 GIT binary patch literal 4669 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
o5ftqIkNV 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 B=PLjJ literal 0 HcmV?d00001 diff --git a/assets/popup/github-sponsor.svg b/assets/popup/github-sponsor.svg new file mode 100644 index 0000000..29d837b --- /dev/null +++ b/assets/popup/github-sponsor.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/popup/home-feed-active.svg b/assets/popup/home-feed-active.svg new file mode 100644 index 0000000..7dafcdd --- /dev/null +++ b/assets/popup/home-feed-active.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/popup/home-feed.svg b/assets/popup/home-feed.svg new file mode 100644 index 0000000..7876dc7 --- /dev/null +++ b/assets/popup/home-feed.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/popup/paypal.svg b/assets/popup/paypal.svg new file mode 100644 index 0000000..e399fb7 --- /dev/null +++ b/assets/popup/paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/popup/popup-more.svg b/assets/popup/popup-more.svg new file mode 100644 index 0000000..7c1a8de --- /dev/null +++ b/assets/popup/popup-more.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/popup/suggested-feed-active.svg b/assets/popup/suggested-feed-active.svg new file mode 100644 index 0000000..49ee23b --- /dev/null +++ b/assets/popup/suggested-feed-active.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/assets/popup/suggested-feed.svg b/assets/popup/suggested-feed.svg new file mode 100644 index 0000000..6774a49 --- /dev/null +++ b/assets/popup/suggested-feed.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/assets/popup/video-feed-active.svg b/assets/popup/video-feed-active.svg new file mode 100644 index 0000000..73a55d9 --- /dev/null +++ b/assets/popup/video-feed-active.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/popup/video-feed.svg b/assets/popup/video-feed.svg new file mode 100644 index 0000000..1518e72 --- /dev/null +++ b/assets/popup/video-feed.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libs/.gitkeep b/libs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/libs/core/.eslintrc.json b/libs/core/.eslintrc.json new file mode 100644 index 0000000..1ad7cf0 --- /dev/null +++ b/libs/core/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/core/README.md b/libs/core/README.md new file mode 100644 index 0000000..0ca4a19 --- /dev/null +++ b/libs/core/README.md @@ -0,0 +1,3 @@ +# core + +This library was generated with [Nx](https://nx.dev). diff --git a/libs/core/project.json b/libs/core/project.json new file mode 100644 index 0000000..ccd5c06 --- /dev/null +++ b/libs/core/project.json @@ -0,0 +1,16 @@ +{ + "name": "core", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/core/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/eslint:lint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/core/**/*.ts"] + } + } + }, + "tags": [] +} diff --git a/libs/core/src/index.ts b/libs/core/src/index.ts new file mode 100644 index 0000000..928e56c --- /dev/null +++ b/libs/core/src/index.ts @@ -0,0 +1,3 @@ +export * from './lib/extention'; +export * from './lib/skip-ads'; +export * from './lib/utils'; diff --git a/libs/core/src/lib/extention.ts b/libs/core/src/lib/extention.ts new file mode 100644 index 0000000..737f6ec --- /dev/null +++ b/libs/core/src/lib/extention.ts @@ -0,0 +1,37 @@ +export class FadblockExtension { + constructor(protected api: typeof chrome | typeof browser) {} + + reloadYoutubeTabsOnInstall() { + this.api.runtime.onInstalled.addListener(async (details) => { + if (details.reason !== 'install' && details.reason !== 'update') { + return; + } + + const tabs = await this.api.tabs.query({}); + + await Promise.all( + tabs + .filter( + (tab) => + tab.id !== undefined && + tab.url?.startsWith('https://www.youtube.com'), + ) + .map((tab) => this.api.tabs.reload(tab.id!)), + ); + }); + } + + executeOnYoutubeTabs(func: () => void) { + this.api.tabs.onUpdated.addListener(async (tabId, changeInfo, tab) => { + if ( + changeInfo.status === 'complete' && + String(tab.url).includes('https://www.youtube.com/watch') + ) { + await this.api.scripting.executeScript({ + target: { tabId }, + func, + }); + } + }); + } +} diff --git a/libs/core/src/lib/skip-ads.ts b/libs/core/src/lib/skip-ads.ts new file mode 100644 index 0000000..7024947 --- /dev/null +++ b/libs/core/src/lib/skip-ads.ts @@ -0,0 +1,42 @@ +import { hideElementsBySelector } from './utils'; + +export function scheduleSkipAds(delayMs = 100) { + setTimeout(trySkipAds, delayMs); +} + +export function trySkipAds() { + const videoContainer = document.getElementById('movie_player'); + const isAd = + videoContainer?.classList.contains('ad-interrupting') || + videoContainer?.classList.contains('ad-showing'); + const skipLock = document.querySelector('.ytp-ad-preview-text') + ?.innerText; + + if (isAd && skipLock) { + const videoPlayer = + document.querySelector('.video-stream')!; + videoPlayer.muted = true; // videoPlayer.volume = 0; + videoPlayer.currentTime = videoPlayer.duration - 0.1; + // CLICK ON THE SKIP AD BTN + document.querySelector('.ytp-ad-skip-button')?.click(); + } + + const staticAds = [ + '.ytd-companion-slot-renderer', + '.ytd-action-companion-ad-renderer', // in-feed video ads + '.ytd-watch-next-secondary-results-renderer.sparkles-light-cta', + '.ytd-unlimited-offer-module-renderer', // similar components + '.ytp-ad-overlay-image', + '.ytp-ad-text-overlay', // deprecated overlay ads (04-06-2023) + '.ytd-display-ad-renderer', + '.ytd-statement-banner-renderer', + '.ytd-in-feed-ad-layout-renderer', // homepage ads + '.ytd-banner-promo-renderer', + '.ytd-video-masthead-ad-v3-renderer', + '.ytd-primetime-promo-renderer', // subscribe for premium & youtube tv ads + ]; + + staticAds.forEach(hideElementsBySelector); + + scheduleSkipAds(); +} diff --git a/libs/core/src/lib/utils.ts b/libs/core/src/lib/utils.ts new file mode 100644 index 0000000..97b9231 --- /dev/null +++ b/libs/core/src/lib/utils.ts @@ -0,0 +1,5 @@ +export function hideElementsBySelector(selector: string) { + document + .querySelectorAll(selector) + .forEach((el) => (el.style.display = 'none')); +} diff --git a/libs/core/tsconfig.json b/libs/core/tsconfig.json new file mode 100644 index 0000000..6032a95 --- /dev/null +++ b/libs/core/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "ES2015", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] +} diff --git a/libs/core/tsconfig.lib.json b/libs/core/tsconfig.lib.json new file mode 100644 index 0000000..7ac01ec --- /dev/null +++ b/libs/core/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../dist/out-tsc", + "declaration": true, + "types": ["node", "chrome", "firefox-webext-browser"] + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/libs/popup/.eslintrc.json b/libs/popup/.eslintrc.json new file mode 100644 index 0000000..1ad7cf0 --- /dev/null +++ b/libs/popup/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/popup/README.md b/libs/popup/README.md new file mode 100644 index 0000000..43d4b32 --- /dev/null +++ b/libs/popup/README.md @@ -0,0 +1,3 @@ +# popup + +This library was generated with [Nx](https://nx.dev). diff --git a/libs/popup/project.json b/libs/popup/project.json new file mode 100644 index 0000000..bbe06e0 --- /dev/null +++ b/libs/popup/project.json @@ -0,0 +1,16 @@ +{ + "name": "popup", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/popup/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/eslint:lint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/popup/**/*.ts"] + } + } + }, + "tags": [] +} diff --git a/libs/popup/src/index.ts b/libs/popup/src/index.ts new file mode 100644 index 0000000..bd9b1ea --- /dev/null +++ b/libs/popup/src/index.ts @@ -0,0 +1,3 @@ +export * from './lib/components'; +export * from './lib/extention-api-provider'; +export * from './lib/jquery'; diff --git a/libs/popup/src/lib/components/content/content-element.html b/libs/popup/src/lib/components/content/content-element.html new file mode 100644 index 0000000..b3a3f1a --- /dev/null +++ b/libs/popup/src/lib/components/content/content-element.html @@ -0,0 +1,42 @@ +

YouTube stopped throwing tantrums?

+
+
+
+
+
+
+
+
+

+ Slide-o-meter to 0. if it fails, +
rocket to 100 if it rocks! +

+

+ Note: Disable other adblockers. Reach out over + Issues + if it still doesn't work. +

+
+
+ +
+
+ +
+
+
+
+
+

+ I'm working hard on writing the new features as well as keeping the + extension up-to-date. +

+
diff --git a/libs/popup/src/lib/components/content/content-element.scss b/libs/popup/src/lib/components/content/content-element.scss new file mode 100644 index 0000000..e77e95c --- /dev/null +++ b/libs/popup/src/lib/components/content/content-element.scss @@ -0,0 +1,358 @@ +.cube { + position: relative; + width: 300px; + height: 60px; + margin: 1rem auto; + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + -ms-transform-style: preserve-3d; + -o-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-perspective: 200px; + -moz-perspective: 200px; + -ms-perspective: 200px; + -o-perspective: 200px; + perspective: 200px; +} +/* positions */ +.a, +.b, +.c, +.d { + position: absolute; + width: 50%; + height: 100%; + left: 0px; + z-index: 222; +} +.a:before, +.b:before, +.c:before, +.d:before, +.a:after, +.b:after { + content: ''; + position: absolute; + top: 0px; + left: 0px; + width: 300px; + height: 60px; +} +.a:before, +.b:before, +.c:before, +.d:before { + z-index: 111; +} +.a:after, +.b:after { + z-index: 333; +} +.b { + top: 0px; + -webkit-transform: rotateX(75deg) translateY(-60px); + -moz-transform: rotateX(75deg) translateY(-60px); + -o-transform: rotateX(75deg) translateY(-60px); + -ms-transform: rotateX(75deg) translateY(-60px); + transform: rotateX(75deg) translateY(-60px); + -webkit-transform-origin: 0% 0%; + -moz-transform-origin: 0% 0%; + -o-transform-origin: 0% 0%; + -ms-transform-origin: 0% 0%; + transform-origin: 0% 0%; +} +.c { + top: 0px; + -webkit-transform: rotateX(75deg); + -moz-transform: rotateX(75deg); + -o-transform: rotateX(75deg); + -ms-transform: rotateX(75deg); + transform: rotateX(75deg); + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} +.d { + -webkit-transform: translateZ(-60px) translateY(-15px); + -moz-transform: translateZ(-60px) translateY(-15px); + -o-transform: translateZ(-60px) translateY(-15px); + -ms-transform: translateZ(-60px) translateY(-15px); + transform: translateZ(-60px) translateY(-15px); +} +/* colors */ +.a, +.b { + background-image: -webkit-gradient( + linear, + left top, + left bottom, + from(rgba(204, 24, 30, 0.8)), + to(rgba(204, 24, 30, 0.8)) + ); + background-image: -webkit-linear-gradient( + top, + rgba(204, 24, 30, 0.8), + rgba(204, 24, 30, 0.8) + ); + background-image: -moz-linear-gradient( + top, + rgba(204, 24, 30, 0.8), + rgba(204, 24, 30, 0.8) + ); + background-image: -o-linear-gradient( + top, + rgba(204, 24, 30, 0.8), + rgba(204, 24, 30, 0.8) + ); + background-image: linear-gradient( + to bottom, + rgba(204, 24, 30, 0.8), + rgba(204, 24, 30, 0.8) + ); + background-repeat: no-repeat; + background-size: 100% 100%; + background-position: 0% 0%; +} +.c, +.d { + background-image: -webkit-gradient( + linear, + left top, + left bottom, + from(rgba(204, 24, 30, 0.5)), + to(rgba(204, 24, 30, 0.5)) + ); + background-image: -webkit-linear-gradient( + top, + rgba(204, 24, 30, 0.5), + rgba(204, 24, 30, 0.5) + ); + background-image: -moz-linear-gradient( + top, + rgba(204, 24, 30, 0.5), + rgba(204, 24, 30, 0.5) + ); + background-image: -o-linear-gradient( + top, + rgba(204, 24, 30, 0.5), + rgba(204, 24, 30, 0.5) + ); + background-image: linear-gradient( + to bottom, + rgba(204, 24, 30, 0.5), + rgba(204, 24, 30, 0.5) + ); + background-repeat: no-repeat; + background-size: 100% 100%; + background-position: 0% 0%; +} +.c:before { + -webkit-box-shadow: + 0px 30px 20px -20px rgba(0, 0, 0, 0.4), + 0px 40px 15px -15px rgba(0, 0, 0, 0.25); + -moz-box-shadow: + 0px 30px 20px -20px rgba(0, 0, 0, 0.4), + 0px 40px 15px -15px rgba(0, 0, 0, 0.25); + box-shadow: + 0px 30px 20px -20px rgba(0, 0, 0, 0.4), + 0px 40px 15px -15px rgba(0, 0, 0, 0.25); +} +.a:before, +.b:before, +.c:before, +.d:before { + background-color: rgba(0, 0, 0, 0.05); +} +.a:after { + background-image: -webkit-gradient( + linear, + left top, + left bottom, + from(rgba(0, 0, 0, 0.07)), + to(rgba(0, 0, 0, 0)) + ); + background-image: -webkit-linear-gradient( + top, + rgba(0, 0, 0, 0.07), + rgba(0, 0, 0, 0) + ); + background-image: -moz-linear-gradient( + top, + rgba(0, 0, 0, 0.07), + rgba(0, 0, 0, 0) + ); + background-image: -o-linear-gradient( + top, + rgba(0, 0, 0, 0.07), + rgba(0, 0, 0, 0) + ); + background-image: linear-gradient( + to bottom, + rgba(0, 0, 0, 0.07), + rgba(0, 0, 0, 0) + ); +} +.b:after { + background-image: -webkit-gradient( + linear, + left top, + left bottom, + from(rgba(255, 255, 255, 0.1)), + to(rgba(255, 255, 255, 0.25)) + ); + background-image: -webkit-linear-gradient( + top, + rgba(255, 255, 255, 0.1), + rgba(255, 255, 255, 0.25) + ); + background-image: -moz-linear-gradient( + top, + rgba(255, 255, 255, 0.1), + rgba(255, 255, 255, 0.25) + ); + background-image: -o-linear-gradient( + top, + rgba(255, 255, 255, 0.1), + rgba(255, 255, 255, 0.25) + ); + background-image: linear-gradient( + to bottom, + rgba(255, 255, 255, 0.1), + rgba(255, 255, 255, 0.25) + ); +} + +/* jQuery stuff */ +#slider-range-min { + position: absolute; + width: 94%; + left: 3%; + top: 27px; + margin: 0px; + z-index: 999; +} +.ui-slider { + height: 5px; + border: none; + background: rgba(0, 0, 0, 0.1); + -webkit-box-shadow: + 0px 2px 2px rgba(255, 255, 255, 0.25), + inset 0px 1px 3px rgba(0, 0, 0, 0.3); + -moz-box-shadow: + 0px 2px 2px rgba(255, 255, 255, 0.25), + inset 0px 1px 3px rgba(0, 0, 0, 0.3); + box-shadow: + 0px 2px 2px rgba(255, 255, 255, 0.25), + inset 0px 1px 3px rgba(0, 0, 0, 0.3); +} +.ui-slider:before, +.ui-slider:after { + content: 'IIIIIII'; + position: absolute; + left: 2px; + width: 100%; + font-family: 'Roboto', sans-serif; + font-size: 1.2rem; + font-weight: 300; + color: rgba(0, 0, 0, 0.3); + letter-spacing: 41px; + text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.2); +} +.ui-slider:before { + top: -1.4rem; +} +.ui-slider:after { + bottom: -1.4rem; +} +.ui-slider-range { + background: transparent; +} +.ui-slider .ui-slider-handle { + top: -8px; + width: 26px; + height: 20px; + margin-left: -15px; + padding-left: 4px; + border: none; + background: rgba(255, 255, 255, 0.7); + border-radius: 2px; + text-align: center; + font-family: 'Roboto', sans-serif; + font-size: 1.2rem; + line-height: 20px; + color: rgba(0, 0, 0, 0.5); + text-decoration: none; + letter-spacing: 3px; + cursor: pointer; + text-shadow: 1px 1px 2px rgba(255, 255, 255, 1); + -webkit-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.3); +} +.ui-slider .ui-slider-handle:focus { + outline: none; +} + +#title { + font-family: 'Roboto', sans-serif; + font-size: 1.1rem; + font-weight: 300; + line-height: 1.8rem; + color: #282828; + margin: auto; + padding: 11px 0 19px 10px; +} +#cta { + position: relative; + display: inline-block; + text-align: center; + font-family: 'Roboto', sans-serif; + font-weight: 400; + font-size: 1rem; + color: #282828; + margin: auto; + padding: 10px 10px; +} +#cta:focus { + outline: none; +} +/* base */ +#content { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + text-align: center; +} +#icons { + display: flex; + justify-content: space-between; + margin-top: 20px; +} +#icon { + margin: auto; +} +#icon img { + vertical-align: bottom; +} +#note { + display: none; + font-family: Roboto; + color: #282828; + font-size: 14px; + font-weight: 500; + margin: auto; +} +#end { + position: absolute; + bottom: 0; +} +#endnote { + font-family: Roboto; + color: #282828; + font-size: 14px; + font-weight: 300; + padding: 0 10px; +} diff --git a/libs/popup/src/lib/components/content/content-element.ts b/libs/popup/src/lib/components/content/content-element.ts new file mode 100644 index 0000000..a2a9128 --- /dev/null +++ b/libs/popup/src/lib/components/content/content-element.ts @@ -0,0 +1,44 @@ +import $ from 'jquery'; +import template from './content-element.html'; +import './content-element.scss'; + +export class ContentElement extends HTMLElement { + static define() { + customElements.define('fad-content', ContentElement); + } + + connectedCallback() { + this.innerHTML = template; + this.updateUI(); + } + + protected async updateUI() { + ($('#slider-range-min') as any).slider({ + range: 'min', + value: 50, + min: 0, + max: 100, + slide: (_: any, ui: any) => { + if (ui.value >= 70) { + $('#note').hide(); + $('#cta').html( + "How about treating me a cup of joe to back my work and becoming a project sponsor?", + ); + } else if (ui.value >= 30) { + $('#note').hide(); + $('#cta').html( + "If you'd like to help, leave a star over GitHub or share the extension with your colleagues.", + ); + } else { + $('#note').show(); + $('#cta').html( + "Read FAQs for using other adblockers with fadblock.", + ); + } + + $('.a, .b, .c, .d').width(ui.value + '%'); + }, + }); + $('.ui-slider-handle').text('<>'); + } +} diff --git a/libs/popup/src/lib/components/content/index.ts b/libs/popup/src/lib/components/content/index.ts new file mode 100644 index 0000000..802425b --- /dev/null +++ b/libs/popup/src/lib/components/content/index.ts @@ -0,0 +1 @@ +export * from './content-element'; diff --git a/libs/popup/src/lib/components/index.ts b/libs/popup/src/lib/components/index.ts new file mode 100644 index 0000000..d4ebbbe --- /dev/null +++ b/libs/popup/src/lib/components/index.ts @@ -0,0 +1,3 @@ +export * from './content'; +export * from './navigation'; +export * from './tabs'; diff --git a/libs/popup/src/lib/components/navigation/index.ts b/libs/popup/src/lib/components/navigation/index.ts new file mode 100644 index 0000000..daef266 --- /dev/null +++ b/libs/popup/src/lib/components/navigation/index.ts @@ -0,0 +1 @@ +export * from './navigation-element'; diff --git a/libs/popup/src/lib/components/navigation/navigation-element.html b/libs/popup/src/lib/components/navigation/navigation-element.html new file mode 100644 index 0000000..10f0aa5 --- /dev/null +++ b/libs/popup/src/lib/components/navigation/navigation-element.html @@ -0,0 +1,37 @@ + diff --git a/libs/popup/src/lib/components/navigation/navigation-element.scss b/libs/popup/src/lib/components/navigation/navigation-element.scss new file mode 100644 index 0000000..5d29a59 --- /dev/null +++ b/libs/popup/src/lib/components/navigation/navigation-element.scss @@ -0,0 +1,137 @@ +#navigation { + width: 100%; + height: 50px; +} +#logo { + font-family: Roboto; + font-weight: bold; + color: #282828; + font-size: 15px; + margin-left: 20px; + margin-top: 14px; +} +#logo img { + vertical-align: bottom; + margin-right: 7px; + margin-bottom: -1px; +} +#more { + position: absolute; + top: 16px; + right: 20px; + width: 35px; + height: 35px; + text-align: center; + border-radius: 50%; + transition: background-color 0.15s cubic-bezier(0.05, 0.03, 0.35, 1); + margin-top: -7px; +} +#more img { + margin-top: 7px; +} +#more:hover { + background-color: #e7eaec; + cursor: pointer; +} + +#more-select a { + font-family: Roboto; + font-weight: normal; + font-size: 14px; + text-align: center; + border-bottom: 1px solid #e7e9eb; + width: 100%; + height: 30px; + line-height: 30px; + background-color: #fff; + overflow: hidden; + box-sizing: border-box; + transition: background-color 0.15s cubic-bezier(0.05, 0.03, 0.35, 1); + text-decoration: none; + color: #000; + display: block; +} +#more-select a:hover { + background-color: #f5f6f8; + cursor: pointer; +} +#more-select a:first-child { + border-radius: 5px 5px 0px 0px; +} +#more-select a:last-child { + border-bottom: 0px; + border-radius: 0px 0px 5px 5px; +} +#more-select { + z-index: 2; + top: 40px; + right: 25px; + position: absolute; + background: #ffffff; + border: 1px solid #c5c8ca; + box-sizing: border-box; + box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); + border-radius: 5px; + height: 182px; + width: 140px; + visibility: hidden; + transform: scale(0); + transition: all 0.15s cubic-bezier(0.05, 0.03, 0.35, 1); + transform-origin: top center; + opacity: 0; +} + +#countdown-select { + top: 420px; + left: 35px; + position: absolute; + background: #ffffff; + border: 1px solid #c5c8ca; + box-sizing: border-box; + box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); + border-radius: 5px; + height: 92px; + width: 87px; + visibility: hidden; + transform: scale(0); + transition: all 0.15s cubic-bezier(0.05, 0.03, 0.35, 1); + transform-origin: top center; + opacity: 0; +} +.countdown, +#more-select a { + font-family: Roboto; + font-weight: normal; + font-size: 14px; + text-align: center; + border-bottom: 1px solid #e7e9eb; + width: 100%; + height: 30px; + line-height: 30px; + background-color: #fff; + overflow: hidden; + box-sizing: border-box; + transition: background-color 0.15s cubic-bezier(0.05, 0.03, 0.35, 1); + text-decoration: none; + color: #000; + display: block; +} +.countdown:hover, +#more-select a:hover { + background-color: #f5f6f8; + cursor: pointer; +} +.countdown:first-child, +#more-select a:first-child { + border-radius: 5px 5px 0px 0px; +} +.countdown:last-child, +#more-select a:last-child { + border-bottom: 0px; + border-radius: 0px 0px 5px 5px; +} +.countactive { + visibility: visible !important; + transform: scale(1) !important; + opacity: 1 !important; +} diff --git a/libs/popup/src/lib/components/navigation/navigation-element.ts b/libs/popup/src/lib/components/navigation/navigation-element.ts new file mode 100644 index 0000000..8f75d7b --- /dev/null +++ b/libs/popup/src/lib/components/navigation/navigation-element.ts @@ -0,0 +1,24 @@ +import $ from 'jquery'; +import template from './navigation-element.html'; +import './navigation-element.scss'; + +export class NavigationElement extends HTMLElement { + static define() { + customElements.define('fad-navigation', NavigationElement); + } + + connectedCallback() { + this.innerHTML = template; + this.updateUI(); + } + + protected async updateUI() { + $('#more').on('click', () => { + if ($('#more-select').hasClass('countactive')) { + $('#more-select').removeClass('countactive'); + } else { + $('#more-select').addClass('countactive'); + } + }); + } +} diff --git a/libs/popup/src/lib/components/tabs/index.ts b/libs/popup/src/lib/components/tabs/index.ts new file mode 100644 index 0000000..7232753 --- /dev/null +++ b/libs/popup/src/lib/components/tabs/index.ts @@ -0,0 +1 @@ +export * from './tabs-element'; diff --git a/libs/popup/src/lib/components/tabs/tabs-element.html b/libs/popup/src/lib/components/tabs/tabs-element.html new file mode 100644 index 0000000..62e7363 --- /dev/null +++ b/libs/popup/src/lib/components/tabs/tabs-element.html @@ -0,0 +1,16 @@ +
+
+
+ +

Video Ads

+
+
+ +

Homebeta

+
+
+ +

Suggestedbeta

+
+
+
diff --git a/libs/popup/src/lib/components/tabs/tabs-element.scss b/libs/popup/src/lib/components/tabs/tabs-element.scss new file mode 100644 index 0000000..4a824d2 --- /dev/null +++ b/libs/popup/src/lib/components/tabs/tabs-element.scss @@ -0,0 +1,40 @@ +#tabs { + width: 100%; + height: 72px; + border-bottom: 1px solid #e7e9eb; + background-color: #fff; +} +#feed-type { + display: table; + width: 90%; + height: 100%; + margin-left: auto; + margin-right: auto; +} +.type { + display: table-cell; + text-align: center; + width: 33%; + transition: opacity 0.15s cubic-bezier(0.05, 0.03, 0.35, 1); +} +.type:not(.type-active):hover { + opacity: 0.7; + cursor: pointer; +} +.type p { + color: #7b81a5; + font-size: 13px; + font-family: Roboto; + font-weight: 600; + margin-top: 7px; +} +#video-feed img { + width: 45px; + height: 30.3px; +} +#home-feed:not(.type-active) img { + margin-left: -2px; +} +#home-feed img { + margin-bottom: -3px; +} diff --git a/libs/popup/src/lib/components/tabs/tabs-element.ts b/libs/popup/src/lib/components/tabs/tabs-element.ts new file mode 100644 index 0000000..ff79928 --- /dev/null +++ b/libs/popup/src/lib/components/tabs/tabs-element.ts @@ -0,0 +1,56 @@ +import $ from 'jquery'; +import template from './tabs-element.html'; +import './tabs-element.scss'; + +import { ExtensionApiProvider } from '../../extention-api-provider'; + +export class TabsElement extends HTMLElement { + static define() { + customElements.define('fad-tabs', TabsElement); + } + + protected api = ExtensionApiProvider.get(); + + connectedCallback() { + this.innerHTML = template; + this.updateUI(); + } + + protected async updateUI() { + if (!this.api) { + return; + } + + const tabs = await this.api.tabs.query({ + active: true, + currentWindow: true, + }); + + const isOnYoutubeTab = tabs.some((tab) => tab.url?.includes('youtube.com')); + + if (!isOnYoutubeTab) { + $('#video-feed').removeClass('type-active'); + $('#suggested-feed').removeClass('type-active'); + $('#home-feed').removeClass('type-active'); + return; + } + + const isOnYoutubeWatchPage = tabs.some( + (tab) => tab.url?.includes('youtube.com/watch'), + ); + + if (isOnYoutubeWatchPage) { + $('#video-feed').addClass('type-active'); + $('#video-feed') + .find('img') + .attr('src', '../assets/popup/video-feed-active.svg'); + $('#suggested-feed').addClass('type-active'); + $('#suggested-feed') + .find('img') + .attr('src', '../assets/popup/suggested-feed-active.svg'); + } else { + $('#home-feed').addClass('type-active'); + $('#home-feed').find('img').attr('src', '../assets/popup/home-feed.svg'); + } + } +} diff --git a/libs/popup/src/lib/extention-api-provider.ts b/libs/popup/src/lib/extention-api-provider.ts new file mode 100644 index 0000000..9bad125 --- /dev/null +++ b/libs/popup/src/lib/extention-api-provider.ts @@ -0,0 +1,17 @@ +export class ExtensionApiProvider { + protected static provider?: ExtensionApiProvider; + + static provide(api: typeof chrome | typeof browser) { + this.provider = new ExtensionApiProvider(api); + } + + static get() { + return this.provider?.get(); + } + + constructor(protected api: typeof chrome | typeof browser) {} + + get() { + return this.api; + } +} diff --git a/libs/popup/src/lib/jquery.ts b/libs/popup/src/lib/jquery.ts new file mode 100644 index 0000000..26e5c14 --- /dev/null +++ b/libs/popup/src/lib/jquery.ts @@ -0,0 +1,6 @@ +import $ from 'jquery'; + +export function initJQuery() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (window as any).jQuery = (window as any).$ = $; +} diff --git a/libs/popup/templates.d.ts b/libs/popup/templates.d.ts new file mode 100644 index 0000000..448f7d1 --- /dev/null +++ b/libs/popup/templates.d.ts @@ -0,0 +1,4 @@ +declare module '*.html' { + const content: string; + export default content; +} diff --git a/libs/popup/tsconfig.json b/libs/popup/tsconfig.json new file mode 100644 index 0000000..db7b566 --- /dev/null +++ b/libs/popup/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] +} diff --git a/libs/popup/tsconfig.lib.json b/libs/popup/tsconfig.lib.json new file mode 100644 index 0000000..2ffe7f1 --- /dev/null +++ b/libs/popup/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../dist/out-tsc", + "declaration": true, + "types": ["node", "chrome", "firefox-webext-browser"] + }, + "include": ["**/*.ts", "templates.d.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/nx.json b/nx.json new file mode 100644 index 0000000..91081b9 --- /dev/null +++ b/nx.json @@ -0,0 +1,32 @@ +{ + "npmScope": "fadblock", + "targetDefaults": { + "lint": { + "inputs": [ + "default", + "{workspaceRoot}/.eslintrc.json", + "{workspaceRoot}/.eslintignore", + "{workspaceRoot}/eslint.config.js" + ] + }, + "build": { + "inputs": ["production", "^production"] + } + }, + "affected": { + "defaultBase": "master" + }, + "generators": { + "@nx/web:application": { + "style": "scss", + "linter": "eslint", + "unitTestRunner": "none", + "e2eTestRunner": "none" + } + }, + "namedInputs": { + "default": ["{projectRoot}/**/*", "sharedGlobals"], + "sharedGlobals": [], + "production": ["default"] + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8a1c83b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10529 @@ +{ + "name": "fadblock", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fadblock", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@types/firefox-webext-browser": "^111.0.3", + "jquery": "^3.7.1", + "jquery-nice-select": "^1.1.0", + "jquery-ui": "^1.13.2", + "tslib": "^2.3.0" + }, + "devDependencies": { + "@nx/eslint-plugin": "^17.0.1", + "@nx/js": "^17.0.1", + "@nx/linter": "^17.0.1", + "@nx/rspack": "^17.0.0", + "@rollup/plugin-typescript": "^11.1.5", + "@rspack/core": "^0.3.7", + "@rspack/dev-server": "^0.3.7", + "@swc-node/register": "~1.6.7", + "@swc/core": "~1.3.85", + "@types/chrome": "^0.0.248", + "@types/jquery": "^3.5.24", + "@types/node": "^20.8.7", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^8.51.0", + "eslint-config-prettier": "^9.0.0", + "glob": "^10.3.10", + "nx": "^17.0.1", + "prettier": "^3.0.3", + "raw-loader": "^4.0.2", + "rollup": "^2.79.1", + "rollup-plugin-copy": "^3.5.0", + "sass": "^1.69.4", + "sass-loader": "^13.3.2", + "typescript": "~5.2.2", + "webpack": "^5.89.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", + "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==", + "dev": true, + "peer": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz", + "integrity": "sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", + "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz", + "integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.2", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.23.0", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz", + "integrity": "sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nrwl/devkit": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.0.1.tgz", + "integrity": "sha512-/4wANytOG8RlGAU6QbPzka330Ud1zo0/1NxZcAvOkexW8w7lzZoT+O0ArTCVHuWVDa2h4cKjfd15+XCEglyazg==", + "dev": true, + "dependencies": { + "@nx/devkit": "17.0.1" + } + }, + "node_modules/@nrwl/eslint-plugin-nx": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-17.0.1.tgz", + "integrity": "sha512-L3rD1vnZPI637tigeHhLmSUjaNxI0Rwd3xFb8BTm2sCi1wPAR8LVxb3tERC3qjVU9EWl6v2AyLnAFaRK9birhg==", + "dev": true, + "dependencies": { + "@nx/eslint-plugin": "17.0.1" + } + }, + "node_modules/@nrwl/js": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.0.1.tgz", + "integrity": "sha512-CUXqhvbGw7WaxzguorQllC6i1C9gpG8ha+I8/mxI6FaDJ7EJG/osoriJsYlyQsOrNWFwF4begvUiH7ko6wLyFA==", + "dev": true, + "dependencies": { + "@nx/js": "17.0.1" + } + }, + "node_modules/@nrwl/rspack": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@nrwl/rspack/-/rspack-17.0.0.tgz", + "integrity": "sha512-lCODsciMpWmkMIm9pMwsb6RsXHQTLAFYqn+CB/piAYKApR1S7O28hIjsIQCCsI/RE6q4tpCkwYU0JHJjsWCjtg==", + "dev": true, + "dependencies": { + "@nx/rspack": "17.0.0" + } + }, + "node_modules/@nrwl/tao": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-17.0.1.tgz", + "integrity": "sha512-UtqLJi3kCtGFY4voZ78FfQ/t3av7F9gYgWkG9/WquDmXzUMNufPgsnIX4wwzvyeifwy1ocEA0APsUfRX63d5rw==", + "dev": true, + "dependencies": { + "nx": "17.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nrwl/workspace": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-17.0.1.tgz", + "integrity": "sha512-w5g4AzP1o+xyK/dMJbLw9vKKMLCE7L/l0oVY363A7jq1GQRpqaUO9IoBYV7aTikgL25uK7Fu9T768l2uKzVrKA==", + "dev": true, + "dependencies": { + "@nx/workspace": "17.0.1" + } + }, + "node_modules/@nx/devkit": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.0.1.tgz", + "integrity": "sha512-YMyype8zN+VrLiTbJMa3zrmMRRolLfPQ+5qGjUhAbgvpzVJlrtkXmZzI8YjYZ7dvo5e/y+NiljUYF+ZN88gpmQ==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "17.0.1", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 16 <= 18" + } + }, + "node_modules/@nx/eslint": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-17.0.1.tgz", + "integrity": "sha512-oSTLucDyHcAhzWSZIoJT4KHUMotvd06zWasd/mMc8GLbXTtYRO38ZiTsQUkA0YpWg4Ng/S5fxiFoHTiol6sXdA==", + "dev": true, + "dependencies": { + "@nx/devkit": "17.0.1", + "@nx/js": "17.0.1", + "@nx/linter": "17.0.1", + "tslib": "^2.3.0", + "typescript": "~5.1.3" + }, + "peerDependencies": { + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-17.0.1.tgz", + "integrity": "sha512-XvLqg3JcLhvU/VoSXaJK/iwnlDH4xHgCubno6X9l3V6+uLzMEJew69IPHPvRptWMwGSrkhmPKBHauQQUBDkIvQ==", + "dev": true, + "dependencies": { + "@nrwl/eslint-plugin-nx": "17.0.1", + "@nx/devkit": "17.0.1", + "@nx/js": "17.0.1", + "@typescript-eslint/type-utils": "^5.60.1", + "@typescript-eslint/utils": "^5.60.1", + "chalk": "^4.1.0", + "confusing-browser-globals": "^1.0.9", + "jsonc-eslint-parser": "^2.1.0", + "semver": "7.5.3", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.60.1", + "eslint-config-prettier": "^9.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/@nx/eslint/node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@nx/js": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.0.1.tgz", + "integrity": "sha512-HfVf6zsskLCZgBlKtLu5MMpCIalGnBxsLeeqcIyRfwJVdqbCYzy1duVm87CgakXAlRg8ZpmEEf5K2eUhm56Gmw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.0.1", + "@nx/devkit": "17.0.1", + "@nx/workspace": "17.0.1", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, + "node_modules/@nx/linter": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-17.0.1.tgz", + "integrity": "sha512-EpKj8W9eW+lGTG+oAd3x64yUwFKBvYvG15ObLiqVJmjSEQOSenGwqW5JanLA8leYvGouJ1sR3LGwg9I2o/vqRg==", + "dev": true, + "dependencies": { + "@nx/eslint": "17.0.1" + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.0.1.tgz", + "integrity": "sha512-Ksgrtck+vZtdh4mFw+IF4ECh4VGQktuHZNT7MwzKQTzLc7gQgjt3OyC97rDWoTb8qgUNc857Hor6ZAZpqHkItA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-17.0.1.tgz", + "integrity": "sha512-QBGRDwh9xxBAeOI9WUgiihOqnJ3WUlNtIajf3rsH0A9UpU2hPg/7rTSzLRSJHScEPeB9ICLRoiCRnvoZ1iuQMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.0.1.tgz", + "integrity": "sha512-r7cCVBdypTK73b5uPiewIQSq9klSEabcYJkhOP5H0Kzdb3n5G8eJrQBLopoXXqnkxIZnfzvIV/ATssr7nIGJJg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.0.1.tgz", + "integrity": "sha512-s0EGuEMvib+yxji+A/C5BDzOe03GczVtB8ArSKWUxwSGq2jv7ybTXgZK0VdJc0odhzXu6zpwy6mEm1ZAGfshDw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.0.1.tgz", + "integrity": "sha512-gB4gdBrnXh4XXqk6RC+GBDnDNZ3UnCnQRTvyVZUtlDZnJ7j9FYbNTZB+m/zoQGweBpCDYAYnpx+bJ7sK1lVwlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.0.1.tgz", + "integrity": "sha512-h2258DDRwV10bp3ygmaBxLVnV/gUXo9fQc5yBLgJD679RcyhtQNIW76pCtqqJAb/ErzxJAj6s90YxQdtnnScqQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.0.1.tgz", + "integrity": "sha512-KrmkK3CcROGgjO5yOtHgVa9Add2UTjrJnPGFcBES4nm6+7ZDCDwll7ukYCsPy6cwx6hhC5aHrKCARc0oTRmjOQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.0.1.tgz", + "integrity": "sha512-qMWAPb+dH50bkM/LgCLhgOMC1Ie0A7lEl4KsJGQcib7CE9l7ntdRso9osJGkBtmidpohL5LbfRb3W4DJunz6Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.0.1.tgz", + "integrity": "sha512-nVsZIqUnqYeo3fkrxjivy2mHW+wbORaJPv2donxPJDCFjXgn1gPsQenKl1wlkeetw+TDCOLQmt09wMkDfpFO2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.0.1.tgz", + "integrity": "sha512-0W1Hk7tbAOrou6ScTRo6hlZiIIBt0ECdn6rALEDWN4lNKheu0pb2gHZO/hSYMwGj3XUpNvApvUCCdcSTBjegRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/rspack": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-17.0.0.tgz", + "integrity": "sha512-MRnLWRqFd3zezhzvqgwsxt2ZH+EHDfGRZhY1DdZjE5cLDBisrH6klz5sIcFsQz1WNpucHL54+2BPqMClpLbnGg==", + "dev": true, + "dependencies": { + "@nrwl/rspack": "17.0.0", + "@nx/devkit": "^17.0.1", + "@nx/eslint": "^17.0.1", + "@nx/js": "^17.0.1", + "@phenomnomnominal/tsquery": "~5.0.1", + "ajv": "^8.12.0", + "ajv-keywords": "5.1.0", + "enquirer": "2.3.6", + "less-loader": "11.1.0", + "license-webpack-plugin": "^4.0.2", + "sass-loader": "^12.2.0", + "stylus-loader": "^7.1.0", + "tsconfig-paths": "4.2.0" + } + }, + "node_modules/@nx/rspack/node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/@nx/workspace": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-17.0.1.tgz", + "integrity": "sha512-QnbGZMFpa6xHHUQwD0JTfanEsRhA6OL4tgrhgI3n6tw05qOVeF3kFmT+t5Ad9er/W8zxMIIarKet07ZyN7t68Q==", + "dev": true, + "dependencies": { + "@nrwl/workspace": "17.0.1", + "@nx/devkit": "17.0.1", + "chalk": "^4.1.0", + "enquirer": "~2.3.6", + "nx": "17.0.1", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "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/@phenomnomnominal/tsquery": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", + "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", + "dev": true, + "dependencies": { + "esquery": "^1.4.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", + "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", + "dev": true, + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <4.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz", + "integrity": "sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-typescript/node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rspack/binding": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-0.3.7.tgz", + "integrity": "sha512-DoD+NE9USx7JBp8My2S7dhtlgzi8cKqxiIxWOZ2+aPqPfuemwQAKvRIROKJRmkuSXNk7myx0BuVDc2wJrvS8mw==", + "dev": true, + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "0.3.7", + "@rspack/binding-darwin-x64": "0.3.7", + "@rspack/binding-linux-arm64-gnu": "0.3.7", + "@rspack/binding-linux-arm64-musl": "0.3.7", + "@rspack/binding-linux-x64-gnu": "0.3.7", + "@rspack/binding-linux-x64-musl": "0.3.7", + "@rspack/binding-win32-arm64-msvc": "0.3.7", + "@rspack/binding-win32-ia32-msvc": "0.3.7", + "@rspack/binding-win32-x64-msvc": "0.3.7" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-0.3.7.tgz", + "integrity": "sha512-E146WCTQqRqZSI0KP4EFejr0/kMJGe49mbzxrVW4mIbb2XT9dzOYTI1ouiGFGEx+PpTwgO0DVbiubwL8hHhj4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-0.3.7.tgz", + "integrity": "sha512-xvYkHYDtCXad1EsYrobxUm5ovZlD1u9IlLigpQ4dHk2ms4wnp6GGM3T1zGBVcuUkSe1f7jLC83xgyF20MnGEuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.3.7.tgz", + "integrity": "sha512-q75F914Obvlq/G/u4VWhHPdxEM2V1dUC0cMO4QOzJrGJF226UwUDSu7L1luG5w4DzRFIBi6xsJpw1itBEykOkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.3.7.tgz", + "integrity": "sha512-dHuQiwzYDMMzpCd/F4YFxfpnsCg6yCeb9UyuGpm2/I8NbXlRSv6K9IkfVqa85l2wEOdklhs1pPvbOdq9QJyr6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.3.7.tgz", + "integrity": "sha512-LLxCyMvbepSSVNZ5KoIGd6paIoXv0+WyR+u96mldFmWTb4Dx3x/x9KMttSQgTPzZFfLZ4uN8HxpFuzjWzx06Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-0.3.7.tgz", + "integrity": "sha512-97cKhn3AlwJsKKEMYQ1r0h7nGQjgFG/uD77z/4rf496OovgOkMYwXA40gfIoAdZmgo4G/GNBdRAT1liWi6JjCw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.3.7.tgz", + "integrity": "sha512-pFz3n5ptC3X9EM4e2sUu5d0Av0k7Kdoa7tTZ2GdvmhnWlhazuhHfCLjlnki8RQFSRwUtMXNY/xJxRWI1hSLrcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.3.7.tgz", + "integrity": "sha512-mIRvLg4up4a+/znAs1SNVbW2+P+GAzgeQTiuZ+fnAnc9BZsDzv7jVlEcHFGq+r0DYCeBbgOBxdJIXJPnwUnyMw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.3.7.tgz", + "integrity": "sha512-koKkY8tcs2biTkEsnryr8Jf/SzvjnVq+7J0fSS/BKdZyPdlwU9Ihz4EJBbcbe7tufWDwYgapPDoRlXdsoDwtMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-0.3.7.tgz", + "integrity": "sha512-S2zTVAhH8XqnkLB1kr0tsnX9QiHu42Blq0EGi/oq6i+rpZ9nKuqJ55neCoJEb/fVUKeWiHnILCUt28joZvnaGw==", + "dev": true, + "dependencies": { + "@rspack/binding": "0.3.7", + "@swc/helpers": "0.5.1", + "browserslist": "^4.21.3", + "compare-versions": "6.0.0-rc.1", + "enhanced-resolve": "5.12.0", + "graceful-fs": "4.2.10", + "neo-async": "2.6.2", + "react-refresh": "0.14.0", + "schema-utils": "^4.0.0", + "tapable": "2.2.1", + "terminal-link": "^2.1.1", + "util": "0.12.5", + "watchpack": "^2.4.0", + "webpack-sources": "3.2.3", + "zod": "^3.21.4", + "zod-validation-error": "1.2.0" + } + }, + "node_modules/@rspack/core/node_modules/@swc/helpers": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rspack/core/node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@rspack/core/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/@rspack/core/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@rspack/dev-server": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-0.3.7.tgz", + "integrity": "sha512-SHTLbWNAoe9x1cL+5BZWprFvbTGx/IxdvNwuRZIRS6tqfZ8Rse1ELFn2gAa+CxlZq47Tdn7ebU19Efo2DoLnyw==", + "dev": true, + "dependencies": { + "@rspack/dev-server": "0.3.7", + "@rspack/plugin-react-refresh": "0.3.7", + "chokidar": "3.5.3", + "connect-history-api-fallback": "2.0.0", + "express": "4.18.1", + "http-proxy-middleware": "2.0.6", + "mime-types": "2.1.35", + "webpack": "5.76.0", + "webpack-dev-middleware": "6.0.2", + "webpack-dev-server": "4.13.1", + "ws": "8.8.1" + }, + "peerDependencies": { + "@rspack/core": "*" + } + }, + "node_modules/@rspack/dev-server/node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@rspack/dev-server/node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@rspack/dev-server/node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/@rspack/dev-server/node_modules/webpack": { + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@rspack/plugin-react-refresh": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-0.3.7.tgz", + "integrity": "sha512-ZHHP+OZZf2c2Q9jkyCR/CrU+Iv7KNLlJ0xCR3d4eLSzKIw6sz9XGOg+ETVIHB2DOir7x+rlq5aBUo0ed9OAAqQ==", + "dev": true, + "dependencies": { + "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", + "schema-utils": "^4.0.0" + }, + "peerDependencies": { + "react-refresh": ">=0.10.0 <1.0.0" + }, + "peerDependenciesMeta": { + "react-refresh": { + "optional": true + } + } + }, + "node_modules/@rspack/plugin-react-refresh/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@swc-node/core": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.10.6.tgz", + "integrity": "sha512-lDIi/rPosmKIknWzvs2/Fi9zWRtbkx8OJ9pQaevhsoGzJSal8Pd315k1W5AIrnknfdAB4HqRN12fk6AhqnrEEw==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@swc/core": ">= 1.3" + } + }, + "node_modules/@swc-node/register": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.6.8.tgz", + "integrity": "sha512-74ijy7J9CWr1Z88yO+ykXphV29giCrSpANQPQRooE0bObpkTO1g4RzQovIfbIaniBiGDDVsYwDoQ3FIrCE8HcQ==", + "dev": true, + "dependencies": { + "@swc-node/core": "^1.10.6", + "@swc-node/sourcemap-support": "^0.3.0", + "colorette": "^2.0.19", + "debug": "^4.3.4", + "pirates": "^4.0.5", + "tslib": "^2.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@swc/core": ">= 1.3", + "typescript": ">= 4.3" + } + }, + "node_modules/@swc-node/sourcemap-support": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.3.0.tgz", + "integrity": "sha512-gqBJSmJMWomZFxlppaKea7NeAqFrDrrS0RMt24No92M3nJWcyI9YKGEQKl+EyJqZ5gh6w1s0cTklMHMzRwA1NA==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.21", + "tslib": "^2.5.0" + } + }, + "node_modules/@swc-node/sourcemap-support/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/@swc/core": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", + "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.93", + "@swc/core-darwin-x64": "1.3.93", + "@swc/core-linux-arm-gnueabihf": "1.3.93", + "@swc/core-linux-arm64-gnu": "1.3.93", + "@swc/core-linux-arm64-musl": "1.3.93", + "@swc/core-linux-x64-gnu": "1.3.93", + "@swc/core-linux-x64-musl": "1.3.93", + "@swc/core-win32-arm64-msvc": "1.3.93", + "@swc/core-win32-ia32-msvc": "1.3.93", + "@swc/core-win32-x64-msvc": "1.3.93" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", + "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", + "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz", + "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.12.tgz", + "integrity": "sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chrome": { + "version": "0.0.248", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.248.tgz", + "integrity": "sha512-qtBzxZD1v3eWZn8XxH1i07pAhzJDHnxJBBVy7bmntXxXKxjzNXYxD41teqa5yOcX/Yy8brRFGZESEzGoINvBDg==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", + "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz", + "integrity": "sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz", + "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz", + "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", + "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", + "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.39", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz", + "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/filesystem": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.34.tgz", + "integrity": "sha512-La4bGrgck8/rosDUA1DJJP8hrFcKq0BV6JaaVlNnOo1rJdJDcft3//slEbAmsWNUJwXRCc0DXpeO40yuATlexw==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.31.tgz", + "integrity": "sha512-12df1utOvPC80+UaVoOO1d81X8pa5MefHNS+gWX9R2ucSESpMz9K5QwlTWDGKASrzCpSFwj7NPYh+nTsolgEGA==", + "dev": true + }, + "node_modules/@types/firefox-webext-browser": { + "version": "111.0.3", + "resolved": "https://registry.npmjs.org/@types/firefox-webext-browser/-/firefox-webext-browser-111.0.3.tgz", + "integrity": "sha512-yboaUEJfY6AGB1hJIWzRGNa/qQUCC/2CAgBSWkdJ8rml4k0bXIyxlWYLSRTr6jHT29gdHkdHsPVuF5McSNERfw==" + }, + "node_modules/@types/fs-extra": { + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.4.tgz", + "integrity": "sha512-OMcQKnlrkrOI0TaZ/MgVDA8LYFl7CykzFsjMj9l5x3un2nFxCY20ZFlnqrM0lcqlbs0Yro2HbnZlmopyRaoJ5w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/har-format": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.14.tgz", + "integrity": "sha512-pEmBAoccWvO6XbSI8A7KvIDGEoKtlLWtdqVCKoVBcCDSFvR4Ijd7zGLu7MWGEqk2r8D54uWlMRt+VZuSrfFMzQ==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz", + "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.13", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.13.tgz", + "integrity": "sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jquery": { + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.24.tgz", + "integrity": "sha512-V/TG69ge5amcr8Ap7vY3SObqKfZlV7ttqcYnNcYnndI77ySIRi05+3GjvfwRtE2qalAC2ySLIL1ker512sI20g==", + "dev": true, + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", + "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", + "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.9", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", + "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz", + "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz", + "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.3.tgz", + "integrity": "sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz", + "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sizzle": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.5.tgz", + "integrity": "sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ==", + "dev": true + }, + "node_modules/@types/sockjs": { + "version": "0.3.35", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.35.tgz", + "integrity": "sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", + "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-plugin-const-enum": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", + "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.3.3", + "@babel/traverse": "^7.16.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-typescript-metadata": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", + "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "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/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/bonjour-service/node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "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.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "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-lite": { + "version": "1.0.30001551", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", + "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/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/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/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "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/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compare-versions": { + "version": "6.0.0-rc.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.0.0-rc.1.tgz", + "integrity": "sha512-cFhkjbGY1jLFWIV7KegECbfuyYPxSGvgGkdkfM+ibboQDoPwg2FRHm5BSNTOApiauRBzJIQH7qvOJs2sW5ueKQ==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "peer": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-js-compat": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.1.tgz", + "integrity": "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.22.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.1.tgz", + "integrity": "sha512-wCXGbLjnsP10PlK/thHSQlOLlLKNEkaWbTzVvHHZ79fZNeN1gUmw2gBlpItxPv/pvqldevEXFh/d5stdNvl6EQ==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "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/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "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/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.562", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.562.tgz", + "integrity": "sha512-kMGVZLP65O2/oH7zzaoIA5hcr4/xPYO6Sa83FrIpWcd7YPPtSlxqwxTd8lJIwKxaiXM6FGsYK4ukyJ40XkW7jg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "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/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true + }, + "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-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/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/eslint/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/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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/eslint/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/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "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/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "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/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "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": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-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-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "peer": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/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/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "node_modules/jquery-nice-select": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jquery-nice-select/-/jquery-nice-select-1.1.0.tgz", + "integrity": "sha512-4H+MMamBCyoXVC58aBgotnFpvZUSz6m78F3W/+df8iNSpK+rb8Q3nGL/1rxuU3XXUS4ThiQLZMIYiGupaa+u7w==", + "dependencies": { + "jquery": "^2.2.3" + } + }, + "node_modules/jquery-nice-select/node_modules/jquery": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "integrity": "sha512-lBHj60ezci2u1v2FqnZIraShGgEXq35qCzMv4lITyHGppTnA13rwR0MgwyNJh9TnDs3aXUvd1xjAotfraMHX/Q==" + }, + "node_modules/jquery-ui": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", + "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", + "dependencies": { + "jquery": ">=1.8.0 <4.0.0" + } + }, + "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/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-eslint-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.3.0.tgz", + "integrity": "sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "peer": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.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/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "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/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "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-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", + "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-17.0.1.tgz", + "integrity": "sha512-OA5M0oJmVAujXjjbXTN9zBG9fG0B2efaKICkfsrFy/g74QhdCxnzvEiGjO2CUQbx5nn/l8sJv0ApEBwfX+F24Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nrwl/tao": "17.0.1", + "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.5.1", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.3.1", + "dotenv-expand": "~10.0.0", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^11.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "js-yaml": "4.1.0", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "3.0.5", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "17.0.1", + "@nx/nx-darwin-x64": "17.0.1", + "@nx/nx-freebsd-x64": "17.0.1", + "@nx/nx-linux-arm-gnueabihf": "17.0.1", + "@nx/nx-linux-arm64-gnu": "17.0.1", + "@nx/nx-linux-arm64-musl": "17.0.1", + "@nx/nx-linux-x64-gnu": "17.0.1", + "@nx/nx-linux-x64-musl": "17.0.1", + "@nx/nx-win32-arm64-msvc": "17.0.1", + "@nx/nx-win32-x64-msvc": "17.0.1" + }, + "peerDependencies": { + "@swc-node/register": "^1.6.7", + "@swc/core": "^1.3.85" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/nx/node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "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": "*" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/parse-json/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/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "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/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-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/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-copy": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", + "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/rollup-plugin-copy/node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "node_modules/rollup-plugin-copy/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup-plugin-copy/node_modules/globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/rollup-plugin-copy/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/rollup-plugin-copy/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.69.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz", + "integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==", + "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": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/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/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/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/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "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/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "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.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-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/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylus": { + "version": "0.60.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.60.0.tgz", + "integrity": "sha512-j2pBgEwzCu05yCuY4cmyp0FtPQQFBBAGB7TY7QaNl7eztiHwkxzwvIp5vjZJND/a1JNOka+ZW9ewVPFZpI3pcA==", + "dev": true, + "peer": true, + "dependencies": { + "@adobe/css-tools": "~4.2.0", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz", + "integrity": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.12", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus-loader/node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/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, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stylus/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "peer": true + }, + "node_modules/stylus/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", + "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-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/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "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/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.0.2.tgz", + "integrity": "sha512-iOddiJzPcQC6lwOIu60vscbGWth8PCRcWRCwoQcTQf9RMoOWBHg5EyzpGdtSmGMrSPd5vHEfFXmVErQEmkRngQ==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.1.tgz", + "integrity": "sha512-5tWg00bnWbYgkN+pd5yISQKDejRBYGEw15RaEEslH+zdbNDxxaZvEAO2WulaSaFKb5n3YG8JXsGaDsut1D0xdA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "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" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-1.2.0.tgz", + "integrity": "sha512-laJkD/ugwEh8CpuH+xXv5L9Z+RLz3lH8alNxolfaHZJck611OJj97R4Rb+ZqA7WNly2kNtTo4QwjdjXw9scpiw==", + "dev": true, + "engines": { + "node": "^14.17 || >=16.0.0" + }, + "peerDependencies": { + "zod": "^3.18.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b76d0bc --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "name": "fadblock", + "version": "1.0.0", + "description": "Friendly Adblock for YouTube: A fast, lightweight, and undetectable YouTube Ads Blocker for Chrome, Opera and Firefox", + "author": "0x48piraj", + "license": "MIT", + "homepage": "https://github.com/0x48piraj/fadblock#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/0x48piraj/fadblock.git" + }, + "bugs": { + "url": "https://github.com/0x48piraj/fadblock/issues" + }, + "keywords": [ + "adblock", + "privacy", + "youtube", + "extension", + "chrome", + "firefox", + "opera" + ], + "dependencies": { + "@types/firefox-webext-browser": "^111.0.3", + "jquery": "^3.7.1", + "jquery-nice-select": "^1.1.0", + "jquery-ui": "^1.13.2", + "tslib": "^2.3.0" + }, + "devDependencies": { + "@nx/eslint-plugin": "^17.0.1", + "@nx/js": "^17.0.1", + "@nx/linter": "^17.0.1", + "@nx/rspack": "^17.0.0", + "@rollup/plugin-typescript": "^11.1.5", + "@rspack/core": "^0.3.7", + "@rspack/dev-server": "^0.3.7", + "@swc-node/register": "~1.6.7", + "@swc/core": "~1.3.85", + "@types/chrome": "^0.0.248", + "@types/jquery": "^3.5.24", + "@types/node": "^20.8.7", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^8.51.0", + "eslint-config-prettier": "^9.0.0", + "glob": "^10.3.10", + "nx": "^17.0.1", + "prettier": "^3.0.3", + "raw-loader": "^4.0.2", + "rollup": "^2.79.1", + "rollup-plugin-copy": "^3.5.0", + "sass": "^1.69.4", + "sass-loader": "^13.3.2", + "typescript": "~5.2.2", + "webpack": "^5.89.0" + }, + "nx": { + "targets": {} + } +} diff --git a/tools/rspack/extention-config.js b/tools/rspack/extention-config.js new file mode 100644 index 0000000..5dcf1d3 --- /dev/null +++ b/tools/rspack/extention-config.js @@ -0,0 +1,19 @@ +const glob = require('glob'); + +module.exports.withExtension = (libName) => (config) => { + config.entry = { + ...Object.fromEntries( + glob + .sync(`./apps/${libName}/src/*.ts`) + .map((path) => [ + path.replace(`apps/${libName}/src/`, '').replace('.ts', ''), + './' + path, + ]), + ), + ...config.entry, + }; + + config.output.filename = '[name].js'; + + return config; +}; diff --git a/tools/rspack/ui-config.js b/tools/rspack/ui-config.js new file mode 100644 index 0000000..627f36e --- /dev/null +++ b/tools/rspack/ui-config.js @@ -0,0 +1,13 @@ +module.exports.withUI = () => (config) => { + config.module.rules.push({ + test: /\.scss$/, + use: [{ loader: 'sass-loader', options: {} }], + type: 'css', + }); + config.module.rules.push({ + test: /\.html$/, + use: [{ loader: 'raw-loader', options: {} }], + }); + + return config; +}; diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..4f8b596 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,25 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "rootDir": ".", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es2015", + "module": "esnext", + "lib": ["es2020", "dom"], + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "isolatedModules": true, + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "paths": { + "@fadblock/core": ["libs/core/src/index.ts"], + "@fadblock/popup": ["libs/popup/src/index.ts"] + } + }, + "exclude": ["node_modules", "tmp"] +} From 39e780a046bf865636557bda34d568cd75784dfc Mon Sep 17 00:00:00 2001 From: Alex Malkevich Date: Sun, 22 Oct 2023 05:52:23 +0000 Subject: [PATCH 2/2] refactor: drop old files --- apps/chrome/manifest.json | 2 +- apps/firefox/manifest.json | 2 +- apps/opera/manifest.json | 2 +- build/build.sh | 31 - libs/core/src/lib/skip-ads.ts | 6 + src/chrome/assets/icons/icon-120x120.png | Bin 15822 -> 0 bytes src/chrome/assets/icons/icon-16x16.png | Bin 1623 -> 0 bytes src/chrome/assets/icons/icon-48x48.png | Bin 4669 -> 0 bytes src/chrome/assets/logo.png | Bin 14135 -> 0 bytes src/chrome/assets/popup/github-sponsor.svg | 97 -- src/chrome/assets/popup/home-feed-active.svg | 6 - src/chrome/assets/popup/home-feed.svg | 6 - src/chrome/assets/popup/paypal.svg | 1 - src/chrome/assets/popup/popup-more.svg | 5 - .../assets/popup/suggested-feed-active.svg | 13 - src/chrome/assets/popup/suggested-feed.svg | 13 - src/chrome/assets/popup/video-feed-active.svg | 7 - src/chrome/assets/popup/video-feed.svg | 7 - src/chrome/css/libraries/jquery-ui.css | 1225 ----------------- src/chrome/css/libraries/nice-select.css | 124 -- src/chrome/css/popup.css | 436 ------ src/chrome/html/popup.html | 62 - src/chrome/js/background.js | 67 - src/chrome/js/content.js | 53 - src/chrome/js/libraries/jquery-3.5.1.min.js | 2 - src/chrome/js/libraries/jquery-ui.min.js | 13 - .../js/libraries/jquery.nice-select.min.js | 4 - src/chrome/js/popup.js | 51 - src/chrome/manifest.json | 29 - src/firefox/assets/icons/icon-120x120.png | Bin 15822 -> 0 bytes src/firefox/assets/icons/icon-16x16.png | Bin 1623 -> 0 bytes src/firefox/assets/icons/icon-48x48.png | Bin 4669 -> 0 bytes src/firefox/assets/logo.png | Bin 14135 -> 0 bytes src/firefox/assets/popup/github-sponsor.svg | 97 -- src/firefox/assets/popup/home-feed-active.svg | 6 - src/firefox/assets/popup/home-feed.svg | 6 - src/firefox/assets/popup/paypal.svg | 1 - src/firefox/assets/popup/popup-more.svg | 5 - .../assets/popup/suggested-feed-active.svg | 13 - src/firefox/assets/popup/suggested-feed.svg | 13 - .../assets/popup/video-feed-active.svg | 7 - src/firefox/assets/popup/video-feed.svg | 7 - src/firefox/css/libraries/jquery-ui.css | 1225 ----------------- src/firefox/css/libraries/nice-select.css | 124 -- src/firefox/css/popup.css | 436 ------ src/firefox/html/popup.html | 62 - src/firefox/js/background.js | 67 - src/firefox/js/content.js | 53 - src/firefox/js/libraries/jquery-3.5.1.min.js | 2 - src/firefox/js/libraries/jquery-ui.min.js | 13 - .../js/libraries/jquery.nice-select.min.js | 4 - src/firefox/js/popup.js | 51 - src/firefox/manifest.json | 27 - src/opera/assets/icons/icon-120x120.png | Bin 15822 -> 0 bytes src/opera/assets/icons/icon-16x16.png | Bin 1623 -> 0 bytes src/opera/assets/icons/icon-48x48.png | Bin 4669 -> 0 bytes src/opera/assets/logo.png | Bin 14135 -> 0 bytes src/opera/assets/popup/github-sponsor.svg | 97 -- src/opera/assets/popup/home-feed-active.svg | 6 - src/opera/assets/popup/home-feed.svg | 6 - src/opera/assets/popup/paypal.svg | 1 - src/opera/assets/popup/popup-more.svg | 5 - .../assets/popup/suggested-feed-active.svg | 13 - src/opera/assets/popup/suggested-feed.svg | 13 - src/opera/assets/popup/video-feed-active.svg | 7 - src/opera/assets/popup/video-feed.svg | 7 - src/opera/css/libraries/jquery-ui.css | 1225 ----------------- src/opera/css/libraries/nice-select.css | 124 -- src/opera/css/popup.css | 436 ------ src/opera/html/popup.html | 62 - src/opera/js/background.js | 67 - src/opera/js/content.js | 53 - src/opera/js/libraries/jquery-3.5.1.min.js | 2 - src/opera/js/libraries/jquery-ui.min.js | 13 - .../js/libraries/jquery.nice-select.min.js | 4 - src/opera/js/popup.js | 51 - src/opera/manifest.json | 29 - 77 files changed, 9 insertions(+), 6695 deletions(-) delete mode 100644 build/build.sh delete mode 100644 src/chrome/assets/icons/icon-120x120.png delete mode 100644 src/chrome/assets/icons/icon-16x16.png delete mode 100644 src/chrome/assets/icons/icon-48x48.png delete mode 100644 src/chrome/assets/logo.png delete mode 100644 src/chrome/assets/popup/github-sponsor.svg delete mode 100644 src/chrome/assets/popup/home-feed-active.svg delete mode 100644 src/chrome/assets/popup/home-feed.svg delete mode 100644 src/chrome/assets/popup/paypal.svg delete mode 100644 src/chrome/assets/popup/popup-more.svg delete mode 100644 src/chrome/assets/popup/suggested-feed-active.svg delete mode 100644 src/chrome/assets/popup/suggested-feed.svg delete mode 100644 src/chrome/assets/popup/video-feed-active.svg delete mode 100644 src/chrome/assets/popup/video-feed.svg delete mode 100644 src/chrome/css/libraries/jquery-ui.css delete mode 100644 src/chrome/css/libraries/nice-select.css delete mode 100644 src/chrome/css/popup.css delete mode 100644 src/chrome/html/popup.html delete mode 100644 src/chrome/js/background.js delete mode 100644 src/chrome/js/content.js delete mode 100644 src/chrome/js/libraries/jquery-3.5.1.min.js delete mode 100644 src/chrome/js/libraries/jquery-ui.min.js delete mode 100644 src/chrome/js/libraries/jquery.nice-select.min.js delete mode 100644 src/chrome/js/popup.js delete mode 100644 src/chrome/manifest.json delete mode 100644 src/firefox/assets/icons/icon-120x120.png delete mode 100644 src/firefox/assets/icons/icon-16x16.png delete mode 100644 src/firefox/assets/icons/icon-48x48.png delete mode 100644 src/firefox/assets/logo.png delete mode 100644 src/firefox/assets/popup/github-sponsor.svg delete mode 100644 src/firefox/assets/popup/home-feed-active.svg delete mode 100644 src/firefox/assets/popup/home-feed.svg delete mode 100644 src/firefox/assets/popup/paypal.svg delete mode 100644 src/firefox/assets/popup/popup-more.svg delete mode 100644 src/firefox/assets/popup/suggested-feed-active.svg delete mode 100644 src/firefox/assets/popup/suggested-feed.svg delete mode 100644 src/firefox/assets/popup/video-feed-active.svg delete mode 100644 src/firefox/assets/popup/video-feed.svg delete mode 100644 src/firefox/css/libraries/jquery-ui.css delete mode 100644 src/firefox/css/libraries/nice-select.css delete mode 100644 src/firefox/css/popup.css delete mode 100644 src/firefox/html/popup.html delete mode 100644 src/firefox/js/background.js delete mode 100644 src/firefox/js/content.js delete mode 100644 src/firefox/js/libraries/jquery-3.5.1.min.js delete mode 100644 src/firefox/js/libraries/jquery-ui.min.js delete mode 100644 src/firefox/js/libraries/jquery.nice-select.min.js delete mode 100644 src/firefox/js/popup.js delete mode 100644 src/firefox/manifest.json delete mode 100644 src/opera/assets/icons/icon-120x120.png delete mode 100644 src/opera/assets/icons/icon-16x16.png delete mode 100644 src/opera/assets/icons/icon-48x48.png delete mode 100644 src/opera/assets/logo.png delete mode 100644 src/opera/assets/popup/github-sponsor.svg delete mode 100644 src/opera/assets/popup/home-feed-active.svg delete mode 100644 src/opera/assets/popup/home-feed.svg delete mode 100644 src/opera/assets/popup/paypal.svg delete mode 100644 src/opera/assets/popup/popup-more.svg delete mode 100644 src/opera/assets/popup/suggested-feed-active.svg delete mode 100644 src/opera/assets/popup/suggested-feed.svg delete mode 100644 src/opera/assets/popup/video-feed-active.svg delete mode 100644 src/opera/assets/popup/video-feed.svg delete mode 100644 src/opera/css/libraries/jquery-ui.css delete mode 100644 src/opera/css/libraries/nice-select.css delete mode 100644 src/opera/css/popup.css delete mode 100644 src/opera/html/popup.html delete mode 100644 src/opera/js/background.js delete mode 100644 src/opera/js/content.js delete mode 100644 src/opera/js/libraries/jquery-3.5.1.min.js delete mode 100644 src/opera/js/libraries/jquery-ui.min.js delete mode 100644 src/opera/js/libraries/jquery.nice-select.min.js delete mode 100644 src/opera/js/popup.js delete mode 100644 src/opera/manifest.json diff --git a/apps/chrome/manifest.json b/apps/chrome/manifest.json index f6134ce..c746d5e 100644 --- a/apps/chrome/manifest.json +++ b/apps/chrome/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "FadBlock: Friendly Adblock for Youtube™", - "version": "1.2.1", + "version": "1.3", "description": "A fast, lightweight, and undetectable YouTube Ads Blocker for Chrome.", "icons": { "16": "shared-assets/icons/icon-16x16.png", diff --git a/apps/firefox/manifest.json b/apps/firefox/manifest.json index 3cf9b9b..66ff26a 100644 --- a/apps/firefox/manifest.json +++ b/apps/firefox/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "FadBlock: Friendly Adblock for Youtube™", - "version": "1.2.1", + "version": "1.3", "description": "A fast, lightweight, and undetectable YouTube Ads Blocker for Firefox.", "icons": { "16": "shared-assets/icons/icon-16x16.png", diff --git a/apps/opera/manifest.json b/apps/opera/manifest.json index ef7d236..8fee270 100644 --- a/apps/opera/manifest.json +++ b/apps/opera/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "FadBlock: Friendly Adblock for Youtube™", - "version": "1.2.1", + "version": "1.3", "description": "A fast, lightweight, and undetectable YouTube Ads Blocker for Opera.", "icons": { "16": "shared-assets/icons/icon-16x16.png", diff --git a/build/build.sh b/build/build.sh deleted file mode 100644 index 08c1046..0000000 --- a/build/build.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -DOC_FILES="../README.md" -IMG_FILES="../src/chrome/assets/logo.png" - -# Strip subdirectories for manifest -sed 's/src\/.*\///g' ../manifest.json > temp-chrome-manifest.json - -# Fix update url for Chrome manifest -sed -i 's/updates\.xml/src\/updates\/updates.xml/g' temp-chrome-manifest.json - -# Strip subdirectories for background.js -sed 's/src\/.*\///g' ../src/js/background.js > temp-background.js - -JS_FILES="temp-background.js" -GEN_FILES="$JS_FILES $DOC_FILES $IMG_FILES" -CH_FILES="$GEN_FILES temp-chrome-manifest.json ../src/updates/updates.xml" -FF_FILES="$GEN_FILES temp-ff-manifest.json ../src/updates/updates.json ../src/chrome/assets/logo.png" - -NAME="output/fadblock" - -# Remove existing files -rm -f $NAME.crx $NAME.xpi - -# Generate Chrome .crx extension package -7z a -tzip -mx9 $NAME.crx $CH_FILES -7z rn $NAME.crx temp-chrome-manifest.json manifest.json temp-background.js background.js - -# Remove temp files -echo "\nDeleting temp files..." -rm -v temp-chrome-manifest.json temp-ff-manifest.json temp-background.js \ No newline at end of file diff --git a/libs/core/src/lib/skip-ads.ts b/libs/core/src/lib/skip-ads.ts index 7024947..0b4f7f2 100644 --- a/libs/core/src/lib/skip-ads.ts +++ b/libs/core/src/lib/skip-ads.ts @@ -11,14 +11,20 @@ export function trySkipAds() { videoContainer?.classList.contains('ad-showing'); const skipLock = document.querySelector('.ytp-ad-preview-text') ?.innerText; + const adSurvey = document.querySelector('.ytp-ad-survey'); + const surveyLock = adSurvey && adSurvey.length > 0; if (isAd && skipLock) { const videoPlayer = document.querySelector('.video-stream')!; videoPlayer.muted = true; // videoPlayer.volume = 0; videoPlayer.currentTime = videoPlayer.duration - 0.1; + videoPlayer.paused && videoPlayer.play(); // CLICK ON THE SKIP AD BTN document.querySelector('.ytp-ad-skip-button')?.click(); + } else if (isAd && surveyLock) { + // CLICK ON THE SKIP SURVEY BTN + document.querySelector('.ytp-ad-skip-button')?.click(); } const staticAds = [ diff --git a/src/chrome/assets/icons/icon-120x120.png b/src/chrome/assets/icons/icon-120x120.png deleted file mode 100644 index 0e2e6a5ddf81807e56ee8aa4583e488d285af712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15822 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 diff --git a/src/chrome/assets/icons/icon-16x16.png b/src/chrome/assets/icons/icon-16x16.png deleted file mode 100644 index 1e2411de3a99f6ddff0cce6dae075516769b7d2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1623 zcmZ{j2~-nT6owyKtHs^cx+0K`ERdOrNgz?Sutr_^&gGw!h;Wb3)s z0D#FtKW`DV(=21cSU6LiriMWCk=!%D6M%~S6OEE_(6^KNi2?xFNC6;qI{?G*Rq7)E zl2HJjtOkIe1Hi0=JpHo80F2QDFBSW=i2~dGeYG4`I-O!r$T~uT4F0~|UTz%%*9&aq zBIekNIbLKlJH1?cd_4^TeqG|Ao~X#yI7Pd_wTp{&bJ0$LYqv7?V(`*dHnW|LTnZG{ zxG!o(s4WP!&Yf2;aBE;v8&O)5=b{?k!t)%Y+{vNZ&E*t>taD+N(aEJ8w3tCDb!HWF z(Bn+naULh1Y?nv2&toxjxU9n@yKKUO0}O{EKc5^LIg@OE(1}(Ou__yN%%l*sL|ZMv zMoY3gK(XJ)=jM329Yh_oS}VV8>=^9oczVA2URFkr2mji7 zwP|?RI6O3BHjj*q7>9<;CezKdEkEbx+%G8_ywv*Jk-S&^eP*-yZb@M+lX|DDxdyYYF2^GD0_~2o4(;1ARbEMp@s%%fw zoTAvBrV<*%SLj26PErY{X~fp}*rCC}fu=?sLMx?{ZkOv?(=>$y8-2vem$z>T60J9SW$#{^G)B&8Dg_@!*|bOeT{)R<6gRUq60yt6Wz=BXw&tu2-LZ ze(R=jc=&on`Ky6}-eX7f3iCE5u0_V%`p&aQ6$BCy!i&ArEPxwrSHzJ3o+ffpF#?c=+|PxyuZ(tyCA;ALY2 zNU?@&RqRQ)a%8nnm^xabmhq*DGH3t`Wi52VP$!Hf#+>1*2>pFWa_9q zA&QMMfC>cK0=H){6gn!jTqFcBiZ~hkbVM1ij#J5z7)gpks)|oS{#|lJf^lRqE*Oi4 sNl;FVi!6#4g|b{wNeqTMvw2ZcCR8wCf5f;jIjjJLK7rmk!RoZX08TBC3IG5A diff --git a/src/chrome/assets/icons/icon-48x48.png b/src/chrome/assets/icons/icon-48x48.png deleted file mode 100644 index 1f7eb5f5d2ba203835dae9bb112fe6b43b53de99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4669 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
o5ftqIkNV z-+1t|Xd=^qu6rII`n`B)QslB3P}Zf1H%NuX&*U?UAY)&O%L$E@h(Xg-Rb`BARy8#+ zcqm5Rv#=dR8Qzn1Xv$X}aoEbc03y};YyGJDoWR?Y8JiG*tE-2Y22V=IU zsoGW{8&!d6+ro`yDGChnH-u+{v@-hVzPA`z^zyxwU2RyA#Yr#kn~WTlVWjjU?wt+S~y{8oFfg()TK{U?Sjv4m}bmFM16 zVYXO}DaNqf=GY#IqWgeD(7WG3=(5k=h*j4hSXPDrO@2)cP!zYyrCY=TeqQU(?)#t{(Fcv)S(6p zQAI^07=R_HkSI{jsSp>CKhbMvYFEFKy~PoPZuP%f**3u!>>&k6A!Oj zr-n3Dke;{+u`uHM?kXX6LtcDUonvwu) zeErowy><0f!+P1Ka6#EQ4&q!26dIXrquw%67m4B2`xXO-9tH$LxsKu8JEPyRt4n}I zpb}`P$6v0z0?mK_8@f<9O2lL`cBs(A6$Qa?1gTU?07n373b0WRT7%|XVRWBydY;fP zxa_}KdcXOPMGN&Fw&eln@@wHb^HE?x(_y4jBAB|4F^rji6RM|71@s`PR0YDT-?3TV z&BGBBOq50@Pu+IBH2oA*HZ~xvsnAH?IWkaS?Tdm4J)4tVpMyz)NaoGZ`&@GJ|Te5`h1j{TPdpcJxFi6Q>J z+2+uX7=*DT`@&IBRQi8M{tPI@N{L&&_9|Y#<|^!^aFK`O0_bY`ZZMkWm;kI(RBLPJ zF8bMTyj>cAPnP}sSUzSHy0*3;8i|Os5c1ggU5YM|&_$Z{05-+SaMp@HtGSNtf)x13=;K+< z)~&3TQhETDQGQESV3L3&pC*HuO5@v57&Bjd1?btU1G3L$uzN~Q?&^&F4x& z8i-{x;lH%|^u_3>o&iGAqtd?Y%Y=a3(9Z59*gbu}wx32Z(r9?(A-r|pLUd9%qN*ZH zwPN$us_EDkiQ)8{ei2Ycj?8i@7o@-kjyZz$NE=oKXF6%2!ucaSR?^56NgaynX`cs7 zn23Hi-VE;gDBD3pA#Vjm9a>s|vU2GUb@DNH2ax36Lt`UA?mLptPUPf2r6nt-0sQ4X zJaq9z=%oS`4uGx}>QJ6H6>&{xb)kql^XA(+Dy2fbYK_S$fg=i5|>GIp-Ev zD8VR0Cj_DNdn!nhztdtEe(sOZ?ZS(|gQ1e6N} zNvH6{%o#X*zyKU{#g#xbDnR^?0=Qv47EPIq-nNMvo#GxopQs2@yTk${HQm~->iUfN z^G7M;CcW7gN9O^d&~BkbC7HnUV@88DG+@7zr(nRGIY1-|h>UGYc-m8P*bzXq zfE(+vaO_Fg$1+gunh}m1^h^ndry82h8dO~!JA3xx*y(3q&?bP^Gf&;K?4}zp?#vmY z;N(1)kxZ8geg4lz)5a!M!w>IW0DONiIN5(C9D;>x-HL}Nj7N`j8m6M6|EyWq=h907 zV#DNWD&ab%o}wfY_|qv>tkx_zP`nk7o;nRxo4!RC zQeqqmbd#@$24m3}lJQoUnvMpjIPSb3udX@&CwO2jiDx(4Rfw1IV+ zj!Q@b?YnR308$akwk`P0xN$g`bCg>alA4C~wvB!#pNxIy&I2M5X;YR;W^J4&C~(?T zRBl+05VK*ZDmGg-dX5-@{y)13sH)nf3#PpxE94h74ZMEk6=+)V2lNg~j^hF-XFC&I zqg4D>4)i&33>$F!omuX*JOEeTd?WvG`R`Z-xEiFiKw_Ch;x_Y9p;XJa8YVV`BDmz$ z-vhN>!1X|TW0yLtkbztA#NKGh%#~ncBo})wopk?CSn{LF$=buGS3X|%Zj{;o!o_$0zsShh7x>a{#0$JVoo>G(%C{0|h1nf(H*^BbF_18^C|eog)B@ zDaZrRWuu}_k1=eu8CrYog|nAG1w_j_4B(P+C*c6wLMKWN3It`ExnUupX;^17^q+h( z_S*%NNC3V)Z7QN`S0k*d2nmXp%*QehZ_$!QFSDw+o>>JnT&a zrr0TE=ZVxy4Q>i1C5S1i#%#varrORpFO>$WW6UUuL%vi)rN?YYhuWOrL@Me)>~sVhE2- z$JBlT@DJ0b3IL-)9U-Ch$;e!@vyU$Y9j$c@aND0*0;KuRN|Tdg-t)SfsRV~F(x z2*6^c%-J*{?4a#igdy8El|(lxZ6>2yRmI>%ek83%+d|rASf4g`iV_LHH>XWSVAV>5 zbsdpVP-=aSnIu`a2@?voCX>6J5=B&k*+~EO13dAgAD|C;5-F_2mzPr|;Y zflf;10VoMpy6U)KGqjN63|M2Bf)e-N0ZJqQUl>0Y6`MCAtZN85)GqT-4?a4q%fdpV*(?l%^@j$>yLnqv1 zma`CvmLgGgITw9TJ5##9b^yRWrio7E*&&B+?%Hy?P;ko>l-Oe1*l6=?N-V)+;{q7nunv)6 z2*H33+gJMLM!;PV$xhQ4!}^qgirpX+1%L$C#&7ZPgmLJZPI?sRIxc(;3{k31fnZ9K z9)8`8u^tm9BwP~71MrbShw>h&gisXR3C#{A$<<0(Xd9ql)D1VH_sLTPn<>@xC1hYj z9qt`{BKAt9&_yUQnlB=qSuS*MW?Q08fsV9gVRH^8w&$^N0gP-|k4P{m>KO!QD&XgF zK~!x^*roNRC1m2!x8DJDs@)|X8zCMD#HI#3c>GB8Oi2LUgPt@H3c)a_k^vSN(-qEB zbls$)Ch@wT*rth9mW?TQ{R&-2pVT4kPypCihkHhk z!d}TFI_sLGK*xpT$^gkqodOz~bkh`t8Lc+MMw>}WEWu7x;w^Y?(gZ{|tVcK$a*9wW z+dR9&2c@+OJ(y%7X{c0eV_4W^+o%{i9LL}B%U$F)&B_sLGAC`JjayKPN?LrEs_(8yt^ZE8Ry z6!N5>t6b5@f}t=>!$@(<3O9x$7;yFv*Z048_FhFPaM6H%yf3I+N|ufJ0Tip#k&Ee6 z3Trtq>;4B&HFVex0eI)A6VWG~6abPPBq&hKc+R>KvXH=(B3?9DuneSBRVY$}rq4jX zD+>Eg1wI7ePo0T=1t?Jfm`dQe31d9~$>=)xKozM?O;5S0DPVR{QBPrQ9U7zS*%sZBO@x2iT7|? z)JAhS66`rK-x3BZ6Zs#puM z&mw}vb0|0!u0*FK6AwRi1`Z-h3`azcjVlA6oiqXZx;2P|!h*W96Gh}rT#74nOSiEe z`GM1nq24gj<;bHj;+}hVSSAvHZ=ZJ#HvRcsR7JuLfYO!b_GS})TTyn-SxY#o_8NT> zhTL+Shg%x}X3Plja86uMJ}5^znZjB{#RbcshTi{>9iYGl+;QUZ=#`A4Yd{wilU+;R zwhG`*II$Luv_@tl&d57t;>hVUaQM~NNJ^wdmyF|?NfQv-uwH1OBm;8+^xL_`?(CWv zf7h>eNG1}1Z=H88HvRb>0U(ublYZ)!lSd*Eq>>5gmExSWgu-eq z$>3iv=s1AxL%CrN%P{bb&2Skd^!7WbLn#S@g*G+f_7jgs?_@%-P!WM9`A445#)z~|}*HY6c{47tfRLUUdT-b^0 zO%q2=KNUw@d!3M5&rLZQ%7*m_lDs8q_sPIQvae8sqO6()N4a69iH&IkHN%EuLI)|4 z0DSMVOYzMcucJB=LP*u5FSJnq8V=SJ2&mD+2V%;@kF^h=s1(hM2WD2Ml}_Uu#svi` z2kaPtxA_1R9UaK9R#dNzh}1$YMfAt z=fpw-K{a;RK%D$YI{ ztk3sw)^jfwr@$rs59HmA6ck@>rng#M=QiiC&7B0WZaZ!rGYZ{WnuIHj*cwqzo9TV- zD)M2OO*zuX=z>UnX5yA5G+f!xlZl2sxsC7KYj|vv!dp&kGFKvsP7;p16e_+`$IdMq zEtZ8XHphq`oreQ2o6~Nhb1r}sDUlJ0Y%i^&aIqFWpz^*1;7jcRn5HhYIo*;nk3zpD z8MvA#a7Sfe4uG;}3>A4~v$vuuMGl8^8|8S8VlfG_S&#_cnv%Whf&8RlKW*pAK2LFx zJ+s8&7cJBfNU&tfLY$Nu%f`S{XW+>BH+BfX3WoyyZZx+mh)03clc(>#r2$B3=l*tA zxf4lR=xPScdEsSXN0b;JfVD({!nXxh9P zMm!+^EY#wzkn5n>eOwS_!n#a^pkCet-sbWO{B-%#K%c(tCVBZOuq>b>5+FSwQ<0hT zc&w!)00$h%yHPE7K=azu`elVs_bFw?FtCOJmptTa~J+oPq8rN;dO~;Q!uXGZ% zF1Tj_o}YawjJoZDRcqAxA?GOI)Apop zA#lAK5za(MDykFN77XDh3+_W?$k3AFqf}=0?qwtcUqiXBi(qpmB9krlDJ>=u47N{! zi~9HD-AzNXP?u#C;A1X;mp=2X17PV*4O{?kq*z!wg-)7m`JXlTqP#O(oyj#NC{2*q zX0vS}SzUt*mn;SL*#}Qdm;k=jS0PJd{p^~id1VCoegpehz z%d+sbVd9DxUfL-Ddl)IyP%kk@Hi^D8PCH5eifiuO&iAPV>2f_i_Z0a2hzCDGF(k;<7y$!bJ=2^S~=P zGr>sXPY!?;y5>=!bm~(wlba1M=0vbiW#9dAc3Vo!ef|6KZUq4JKklvskThNoKnJ|G z`dho~+}V;q=CX*?Km$o?Aiy~i)tzwJqmKax93WkE6n7gt7RvgyPDEasD()e=PdVCU z!T6w)jps%vC>BbTw~g{iqh*+L&jOEamO^2% ztOwMpK}TY0TZVitfPQLlS0<4)#RJzczS9&)09KLO?wBnFy$}UhxoCppbVxK!3u)63 z;H7IjCWmzQN8~H~e|An}h@IYBG!O>(GBD_PC z7cEid<*{QUg_nPLHn#rt0|6j$2e%1c-XbOzs_AOgkw;@%Tdp)0K<*UY7ZOGEAjU2R zP$c#W1Gab@WI=5X>vI8QriFxQqJ=Xd^Dd)aHT(C=^k^eY1bE4>jsO4_Ts9LKepFAfIUK>DJ zHcKxWv3c1vUbxjbSUen2I}aU(3HRPt9KeN+3?vFH7M~+|VObVdn-(r!_B)jCAb>ZG zIssjh2?3z&tLF7y&3ab<vrd>dJ9tEaTcwqF2&?#3(*Cl|$%_n8FWatt+@=Uje!}#8~@y3Xo zZ}plHo7^X$a-SbesaOJ8lHJlNmvQ zSGr$;RvVtp=k*VxR?bXloFwy7mDQN@=%X2#m%VL{m;xo0#FEjYV1Kg`Wzk4M3iN62 z@;6T3ZweiewwWNx3x;s%qMfHac`ptnmBNzICnCI=5{`8#n~4o&D==dB8qOF?M51b+ zapQ5^&9@e(z{LXx@J{hokr(Rj6O%{!B9y|gDs2b=Yjy&_o~DUvmvuNd%5`}PyUT5) zPThbl8x4j5qf=*G`S|0G%#*bhg*G9eiCR4RM6lJXP!@613iDaC-$CF;{7oZ`?WTqL zvhtmld6_#pqfE5o&cVl`OCp|?R+uv~2_S{Z!Vz}ptkbq1HTSBnxeLzw&7y&a@S4_U znNw0EH$})FlPJ)_84DMo*XS`FYTMx&@>I5dp`m&X_{y>(rAsvgv={*6qX&8d6`Lf5__8) z@ynq@&^4VzFsHgX&&=T*je#HrpLf9nhg^Kgc|`$SIPehOskKEUmilE+?j{`s;9Aqd z#G7u$!82xdFtJy<(g?t=!i>lOSWxRFIV5DBEj%nnr&`Q=tbNKW1R!}kqTx`1oNReE z0Z8|v*R82E8Y(Jq<-H3$@H(Qb6<;I{fc16w#o+IwH?zea9InFRav(n^Qo$3=;aGV1 z#j^(H;|V#-HQBnX@{SUgxJk7eEn>C~(k3 zQWN#GX`zW;tE+J}f#=$J1!P_x%lA=WTL8M$*P2R;I*f*35ObF-McLpXCHXdsl65Xu zacd)1ug0xoM+*Rn1LZ^?yk9BcDQ4N>czFemn=`L+ztc}|E(+j-LkIIPRVVobX(5?J zt8|@VVZ@v{IOhBdJ6Ic$Pl1I16s+1ud8z6eT>Zo{N82ne^V$NClm%JfDZ6fvDMD$6 z!ka@Zn&cg0*b<81+WVKFZ1CV6w)2WopwqRG{rgM&a`Hs<>lx9zMUY%jUuC47b<>j-`Rl*ZPF+A0YNcbJoDVu__HW~sU%zeO5d8L&M zbch0}N&M%Z;r2-ruunkC(gFN)PIa!J?T*0F5G`Xr`RKE@Yvg}BVJs(uS0v3AkrXbg zS(`{=-^o)j^|sqPSRW_>oHukZx~9|U914i7bo^|=rM!B>K)R+Au3PqGhbb=?KzsEn zM5#7{q92qd;!q!P6AD3XPaCLQAUd0AQ54{}0EdiW6bTE1` z8#UDAz)2zWD9@QtlfZl8w=!r>22q-~aA?)?w= zWZtf&Ja0icCDt2We+|F+$%WY4DX$Zb407mGnYlL~oY5|EL`!D3?(E!m|I#)EK6Ba( zyYb_XRMj+OqN#`wP>Q$wotHmCS{gZa_wIu$UU~%xcBI6*Fo2%SqYe&fNqN_Ml;5@7+Rq831LMiqD^1hL^6t9=&xH zv{kwXps3JtI#npN4Hgr2pxLbl`_a4aw+-Oar_Zn(KK@A6Eeips>5Q8hCO~vzaP;u? z+sN)CqHD7Sb z-~@o=pdkQ%{LXvr^ohCfe7@?BZzEutqRoiq#LY-%h*~`dL|Vh!O%n~3)wuqRH-U<( zlKXwSN({+BVxiTJn~WxuD378F^MCg{Df84Fr@VY6<{OkpLc$qN3uT*O2oKA(i!$Kt z3OlboU}c{e3m+_Agg@SW7kZK#O_$YK{;X{GIz*Y2k`+1NKz7E9ue1%||GD;R{^7IF zAYd6{pC6Ix?NluYm6b}nh`h-z;~ZOpA>8!#A4U0b$-UAX3M2q22epzq)+(w{B2v}W zn7?e9lzBTzdAR`cRo{r9sjWcRc}<_NH#{BTvr}dC&fX>X#(|5Huiv2V*j*U=o z^Y4ET^!Z-L0UREM?`mW^o3*JwbUH z0I6G{iD&1{!`Cl9FB%<*dCtd9{KTZ_kEUV2<4-V7T(~%^EppyZKELyh^xF?Ts7Gv5 zmD|o`pW4~3rCMa{WmMo9E;)lMTzS=6yt zdSl#8hu!7_E`Uh@8xtv9v0x#}Pa0b~fV2XW3H<2jqtUgp0zapCUY|a@Oy=dSc+tQYRdD=ocEV6#}S7ehS0wII-5|I9)R9eoWL6oaiERg;)>zJuvbtQ z+Ya~%#XXPa+OiolR8?()f^#puyu8a#e$v_|1@aXu!na;_NwPedFk;|Aw;>$;$SbvW ziaJuJg*dg_8b1*y+;tatkh-|E&-!GmDJC7Q-sX_SlbLpQ0=@gug*uSCv$OXt_Ipv_ z`qvL|)oG`pM=*eLO?Kd*BUh23DN3tqssT#)+L>o)%KZ6R&292#n{%$+dc-Ve;vAnLx?%-(*-YgE~redDG}BJq5pi~rRmBuzhSDm?qtOtH;ffW1lAZm&11r4!Dg4i!A-I8Q;Eg$#Jcd|+O ze{Onr@0}$pr>dJq+%a+lBK6xv+Y^`n_~SnkDG6dL6f{L+#{5q|&)XWO5DQiBIBtX; z+Pc|_8fl*blf5$N9d(Bw0Jk%aev>C-JT<=wlvGySf07IxfEc8kSt}W9&s{ zmzU7xZpWHQ;G#LEPOouQRqLZ=`1vQc-@gX*E!`vY-J9awJ0h{&Kst@ZXPk!Sk3K{vu?4Hlq?46dP8z2_ zt&uadsG4Q>?5)pR@u&7#C_Tc{mt4#@u6WCeB@?*P?1r8 z*o28V;m*49M#bmy*=dJu0|3>Y6?f(VKa5Dc<5oo zys*sf35f3elb+Njriv| zk3KdqcjN{2{r7(TtK`QIFAYaqTPzcbp63sBl5B-CBlbI&tE-Xrk?7n7*O6On?|o!x zm)AJ9efx0FPV4T!o7Y;I%rVozZ!WkH>)!eUY82XSFATXuct-XKwZ&&r(Y#V_(pJu` zW6nBf=!x^^e^3&D>t23o)iXbxyLV+OshUpTm8>5+JD9m1ONy@%t1wbTtY|9qglDAe>V%Ftz zu;0|FVowRLm7KuP2c-9>^GELY-syW9{6ckZxt}?*#k0Kq?`3Dh)F&U~-fOQ#>Z^YX z@IrxLmgCyj{6Z>>E`W}^lG&EERZ;c%tJW2qfPx=#&Z7&54{Zr--9r6fs7rd@-ni1c z;cQ3l*3daywVIrvl~NX}_t85IrZap@wUWG3| z{1B`E@ekqAifJ0cfq-yY`{kV|XmN{r{NPC&0%kgmmWoR2>VJM&aA&ciPygyg7xGnq zT)~h^P*Q^v*v&pY7ese%Ni(ICJ<_ho;Z6NhXv;TKRbcW=?-o52L^u{hd380y<>lhF ztg0H7H8o;2mRD7wvbtJar^@*(5{n@i3JKv)-TY`W{0+lhcA|wsuxVn89MtEAj#QFj zDl%D%T4*NXaUl*G>+6MdYHDZ{ns!TL6PoJl(AwC5mWBo-T3eB7jU(C8jC3L)^Z+`K z#0hO07GyTU90E8>SJKE&EGoF1^6or`OU9ij9VJ}m#oElOJ?wDntQTLVhs`^R0$BIL zb8jrZ=9-ZeW?I!PQ_VyQ!{^z5I$tI|Lx#yg4?1 z()iYzmS%*~sT2dkimDnMir>AK0zkf?%pBx)P@-Y`_Mmr@X{oJb?j$+$CqAZ@`&0@| zGS$Jm(D*ag=%6>;@AVfsKfXE;y02x~4k*57^Nk>jYPy*BYCmP9iZLXRO%T@hup6zdy9Z#tC7y7Vi;ivw+VUvmsy|`7^vu;?^{kDXYjf! zxdwCoY_vZXF{e5iehP=mY*TGeHEaLzlm9mT*Y^%C_9$&?0DR+`18EG6fSa1gJQs0t7ivia|eD_m|{!6Q2P|q9)P9atL;|m zj+#dED9WfAEN)qKX+u|g?$vz5-#+yAhu9$&>i&rT>tFqEIqUS#qAksg5}j1WNo!`@ z?aJDb=h;Q)7B*n>+otE|TFPH$D5enY>y*;P~J!a{rd=9ySot(W9v z%KPp(rIj?h*?ifjGs?R=g+h#RuBI%DHJK)?iVF4TGfvOTec34rbbs9P{`nF2s^8YzmZ)7Hr3R9Co?mrqLHQLhtuzSDQ2Px^OQZoS zoKxEwlA-k8Ik>1y75%F`P0Tkb?aEkrB{7lYP%kn5C~UQkJ~?f6#<>8B?jyEE1(>F4 zqMNhLm~d-yY9uAZ3pv6lk|T6WgFXj`PAT-lB;%Yh1!~fuJ)m?9pLFuv3HL6%qx5Af z&+O=9c-L?F=%db`zWdG-|Ni*H!E3(wB5EZQA~{E~nWb??AQ>v>L5;w%EtR6tI_FFi z-K!j*1ZR}#P6!GrbP|VCx4o`Ij?CWExvcxj9`CGi$+z`gzHe?s%k`GDuZH$A`v|ljTw=Oa=oIe z+A6EAYOSoUNtahvy;9bx=E?HT760t4SGFJ+Ok>0d@pv6!k?mnw`m?uprJekqFJG>G z*w7Htg268Fmd44g4UHEx)z|k>!J{pWjRK^m#sN8PBY9ZtEy05RY^;!uBubbo3V=O-$W}aJ~_Nkp9W>*NZCRC zJ8*nw0Q?Tj#ed}x{s-WHC2W52{a^k7|Gy9a{{jiInFbmuk1+rM002ovPDHLkV1h0C B=PLjJ diff --git a/src/chrome/assets/popup/github-sponsor.svg b/src/chrome/assets/popup/github-sponsor.svg deleted file mode 100644 index 29d837b..0000000 --- a/src/chrome/assets/popup/github-sponsor.svg +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/chrome/assets/popup/home-feed-active.svg b/src/chrome/assets/popup/home-feed-active.svg deleted file mode 100644 index 7dafcdd..0000000 --- a/src/chrome/assets/popup/home-feed-active.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/chrome/assets/popup/home-feed.svg b/src/chrome/assets/popup/home-feed.svg deleted file mode 100644 index 7876dc7..0000000 --- a/src/chrome/assets/popup/home-feed.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/chrome/assets/popup/paypal.svg b/src/chrome/assets/popup/paypal.svg deleted file mode 100644 index e399fb7..0000000 --- a/src/chrome/assets/popup/paypal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/chrome/assets/popup/popup-more.svg b/src/chrome/assets/popup/popup-more.svg deleted file mode 100644 index 7c1a8de..0000000 --- a/src/chrome/assets/popup/popup-more.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/chrome/assets/popup/suggested-feed-active.svg b/src/chrome/assets/popup/suggested-feed-active.svg deleted file mode 100644 index 49ee23b..0000000 --- a/src/chrome/assets/popup/suggested-feed-active.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/chrome/assets/popup/suggested-feed.svg b/src/chrome/assets/popup/suggested-feed.svg deleted file mode 100644 index 6774a49..0000000 --- a/src/chrome/assets/popup/suggested-feed.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/chrome/assets/popup/video-feed-active.svg b/src/chrome/assets/popup/video-feed-active.svg deleted file mode 100644 index 73a55d9..0000000 --- a/src/chrome/assets/popup/video-feed-active.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/chrome/assets/popup/video-feed.svg b/src/chrome/assets/popup/video-feed.svg deleted file mode 100644 index 1518e72..0000000 --- a/src/chrome/assets/popup/video-feed.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/chrome/css/libraries/jquery-ui.css b/src/chrome/css/libraries/jquery-ui.css deleted file mode 100644 index 62578c5..0000000 --- a/src/chrome/css/libraries/jquery-ui.css +++ /dev/null @@ -1,1225 +0,0 @@ -/*! jQuery UI - v1.11.2 - 2014-10-16 -* http://jqueryui.com -* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-clearfix { - min-height: 0; /* support: IE7 */ -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - filter:Alpha(Opacity=0); /* support: IE8 */ -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; -} - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ui-accordion .ui-accordion-header { - display: block; - cursor: pointer; - position: relative; - margin: 2px 0 0 0; - padding: .5em .5em .5em .7em; - min-height: 0; /* support: IE7 */ - font-size: 100%; -} -.ui-accordion .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-icons .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-header .ui-accordion-header-icon { - position: absolute; - left: .5em; - top: 50%; - margin-top: -8px; -} -.ui-accordion .ui-accordion-content { - padding: 1em 2.2em; - border-top: 0; - overflow: auto; -} -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} -.ui-button { - display: inline-block; - position: relative; - padding: 0; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - overflow: visible; /* removes extra width in IE */ -} -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2.2em; -} -/* button elements seem to need a little more width */ -button.ui-button-icon-only { - width: 2.4em; -} -.ui-button-icons-only { - width: 3.4em; -} -button.ui-button-icons-only { - width: 3.7em; -} - -/* button text element */ -.ui-button .ui-button-text { - display: block; - line-height: normal; -} -.ui-button-text-only .ui-button-text { - padding: .4em 1em; -} -.ui-button-icon-only .ui-button-text, -.ui-button-icons-only .ui-button-text { - padding: .4em; - text-indent: -9999999px; -} -.ui-button-text-icon-primary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 1em .4em 2.1em; -} -.ui-button-text-icon-secondary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 2.1em .4em 1em; -} -.ui-button-text-icons .ui-button-text { - padding-left: 2.1em; - padding-right: 2.1em; -} -/* no icon support for input elements, provide padding by default */ -input.ui-button { - padding: .4em 1em; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon, -.ui-button-text-icon-primary .ui-icon, -.ui-button-text-icon-secondary .ui-icon, -.ui-button-text-icons .ui-icon, -.ui-button-icons-only .ui-icon { - position: absolute; - top: 50%; - margin-top: -8px; -} -.ui-button-icon-only .ui-icon { - left: 50%; - margin-left: -8px; -} -.ui-button-text-icon-primary .ui-button-icon-primary, -.ui-button-text-icons .ui-button-icon-primary, -.ui-button-icons-only .ui-button-icon-primary { - left: .5em; -} -.ui-button-text-icon-secondary .ui-button-icon-secondary, -.ui-button-text-icons .ui-button-icon-secondary, -.ui-button-icons-only .ui-button-icon-secondary { - right: .5em; -} - -/* button sets */ -.ui-buttonset { - margin-right: 7px; -} -.ui-buttonset .ui-button { - margin-left: 0; - margin-right: -.3em; -} - -/* workarounds */ -/* reset extra padding in Firefox, see h5bp.com/l */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.ui-datepicker { - width: 17em; - padding: .2em .2em 0; - display: none; -} -.ui-datepicker .ui-datepicker-header { - position: relative; - padding: .2em 0; -} -.ui-datepicker .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-next { - position: absolute; - top: 2px; - width: 1.8em; - height: 1.8em; -} -.ui-datepicker .ui-datepicker-prev-hover, -.ui-datepicker .ui-datepicker-next-hover { - top: 1px; -} -.ui-datepicker .ui-datepicker-prev { - left: 2px; -} -.ui-datepicker .ui-datepicker-next { - right: 2px; -} -.ui-datepicker .ui-datepicker-prev-hover { - left: 1px; -} -.ui-datepicker .ui-datepicker-next-hover { - right: 1px; -} -.ui-datepicker .ui-datepicker-prev span, -.ui-datepicker .ui-datepicker-next span { - display: block; - position: absolute; - left: 50%; - margin-left: -8px; - top: 50%; - margin-top: -8px; -} -.ui-datepicker .ui-datepicker-title { - margin: 0 2.3em; - line-height: 1.8em; - text-align: center; -} -.ui-datepicker .ui-datepicker-title select { - font-size: 1em; - margin: 1px 0; -} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { - width: 45%; -} -.ui-datepicker table { - width: 100%; - font-size: .9em; - border-collapse: collapse; - margin: 0 0 .4em; -} -.ui-datepicker th { - padding: .7em .3em; - text-align: center; - font-weight: bold; - border: 0; -} -.ui-datepicker td { - border: 0; - padding: 1px; -} -.ui-datepicker td span, -.ui-datepicker td a { - display: block; - padding: .2em; - text-align: right; - text-decoration: none; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - margin: .7em 0 0 0; - padding: 0 .2em; - border-left: 0; - border-right: 0; - border-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: right; - margin: .5em .2em .4em; - cursor: pointer; - padding: .2em .6em .3em .6em; - width: auto; - overflow: visible; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: left; -} - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group { - float: left; -} -.ui-datepicker-multi .ui-datepicker-group table { - width: 95%; - margin: 0 auto .4em; -} -.ui-datepicker-multi-2 .ui-datepicker-group { - width: 50%; -} -.ui-datepicker-multi-3 .ui-datepicker-group { - width: 33.3%; -} -.ui-datepicker-multi-4 .ui-datepicker-group { - width: 25%; -} -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { - border-left-width: 0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - clear: left; -} -.ui-datepicker-row-break { - clear: both; - width: 100%; - font-size: 0; -} - -/* RTL support */ -.ui-datepicker-rtl { - direction: rtl; -} -.ui-datepicker-rtl .ui-datepicker-prev { - right: 2px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next { - left: 2px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-prev:hover { - right: 1px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next:hover { - left: 1px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane { - clear: right; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, -.ui-datepicker-rtl .ui-datepicker-group { - float: right; -} -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { - border-right-width: 0; - border-left-width: 1px; -} -.ui-dialog { - overflow: hidden; - position: absolute; - top: 0; - left: 0; - padding: .2em; - outline: 0; -} -.ui-dialog .ui-dialog-titlebar { - padding: .4em 1em; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 0; - white-space: nowrap; - width: 90%; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 20px; - margin: -10px 0 0 0; - padding: 1px; - height: 20px; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background-image: none; - margin-top: .5em; - padding: .3em 1em .5em .4em; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-se { - width: 12px; - height: 12px; - right: -5px; - bottom: -5px; - background-position: 16px 16px; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-draggable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-menu { - list-style: none; - padding: 0; - margin: 0; - display: block; - outline: none; -} -.ui-menu .ui-menu { - position: absolute; -} -.ui-menu .ui-menu-item { - position: relative; - margin: 0; - padding: 3px 1em 3px .4em; - cursor: pointer; - min-height: 0; /* support: IE7 */ - /* support: IE10, see #8844 */ - list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); -} -.ui-menu .ui-menu-divider { - margin: 5px 0; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-state-focus, -.ui-menu .ui-state-active { - margin: -1px; -} - -/* icon support */ -.ui-menu-icons { - position: relative; -} -.ui-menu-icons .ui-menu-item { - padding-left: 2em; -} - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: 0; - bottom: 0; - left: .2em; - margin: auto 0; -} - -/* right-aligned */ -.ui-menu .ui-menu-icon { - left: auto; - right: 0; -} -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; -} -.ui-progressbar .ui-progressbar-overlay { - background: url("data:image/gif;base64,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"); - height: 100%; - filter: alpha(opacity=25); /* support: IE8 */ - opacity: 0.25; -} -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; -} -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; - -ms-touch-action: none; - touch-action: none; -} -.ui-resizable-disabled .ui-resizable-handle, -.ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -} -.ui-selectable { - -ms-touch-action: none; - touch-action: none; -} -.ui-selectable-helper { - position: absolute; - z-index: 100; - border: 1px dotted black; -} -.ui-selectmenu-menu { - padding: 0; - margin: 0; - position: absolute; - top: 0; - left: 0; - display: none; -} -.ui-selectmenu-menu .ui-menu { - overflow: auto; - /* Support: IE7 */ - overflow-x: hidden; - padding-bottom: 1px; -} -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { - font-size: 1em; - font-weight: bold; - line-height: 1.5; - padding: 2px 0.4em; - margin: 0.5em 0 0 0; - height: auto; - border: 0; -} -.ui-selectmenu-open { - display: block; -} -.ui-selectmenu-button { - display: inline-block; - overflow: hidden; - position: relative; - text-decoration: none; - cursor: pointer; -} -.ui-selectmenu-button span.ui-icon { - right: 0.5em; - left: auto; - margin-top: -8px; - position: absolute; - top: 50%; -} -.ui-selectmenu-button span.ui-selectmenu-text { - text-align: left; - padding: 0.4em 2.1em 0.4em 1em; - display: block; - line-height: 1.4; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: default; - -ms-touch-action: none; - touch-action: none; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} - -/* support: IE8 - See #6727 */ -.ui-slider.ui-state-disabled .ui-slider-handle, -.ui-slider.ui-state-disabled .ui-slider-range { - filter: inherit; -} - -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} - -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -} -.ui-sortable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-spinner { - position: relative; - display: inline-block; - overflow: hidden; - padding: 0; - vertical-align: middle; -} -.ui-spinner-input { - border: none; - background: none; - color: inherit; - padding: 0; - margin: .2em 0; - vertical-align: middle; - margin-left: .4em; - margin-right: 22px; -} -.ui-spinner-button { - width: 16px; - height: 50%; - font-size: .5em; - padding: 0; - margin: 0; - text-align: center; - position: absolute; - cursor: default; - display: block; - overflow: hidden; - right: 0; -} -/* more specificity required here to override default borders */ -.ui-spinner a.ui-spinner-button { - border-top: none; - border-bottom: none; - border-right: none; -} -/* vertically center icon */ -.ui-spinner .ui-icon { - position: absolute; - margin-top: -8px; - top: 50%; - left: 0; -} -.ui-spinner-up { - top: 0; -} -.ui-spinner-down { - bottom: 0; -} - -/* TR overrides */ -.ui-spinner .ui-icon-triangle-1-s { - /* need to fix icons sprite */ - background-position: -65px -16px; -} -.ui-tabs { - position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ - padding: .2em; -} -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 0; - margin: 1px .2em 0 0; - border-bottom-width: 0; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav .ui-tabs-anchor { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - margin-bottom: -1px; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { - cursor: text; -} -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { - cursor: pointer; -} -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - padding: 1em 1.4em; - background: none; -} -.ui-tooltip { - padding: 8px; - position: absolute; - z-index: 9999; - max-width: 300px; - -webkit-box-shadow: 0 0 5px #aaa; - box-shadow: 0 0 5px #aaa; -} -body .ui-tooltip { - border-width: 2px; -} - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: Verdana,Arial,sans-serif; - font-size: 1.1em; -} -.ui-widget .ui-widget { - font-size: 1em; -} -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - font-family: Verdana,Arial,sans-serif; - font-size: 1em; -} -.ui-widget-content { - border: 1px solid #aaaaaa; - background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x; - color: #222222; -} -.ui-widget-content a { - color: #222222; -} -.ui-widget-header { - border: 1px solid #aaaaaa; - background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; - color: #222222; - font-weight: bold; -} -.ui-widget-header a { - color: #222222; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - border: 1px solid #d3d3d3; - background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; - font-weight: normal; - color: #555555; -} -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited { - color: #555555; - text-decoration: none; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - border: 1px solid #999999; - background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; - font-weight: normal; - color: #212121; -} -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited { - color: #212121; - text-decoration: none; -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - border: 1px solid #aaaaaa; - background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; - font-weight: normal; - color: #212121; -} -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #212121; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #fcefa1; - background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; - color: #363636; -} -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #363636; -} -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #cd0a0a; - background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; - color: #cd0a0a; -} -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #cd0a0a; -} -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #cd0a0a; -} -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - filter:Alpha(Opacity=70); /* support: IE8 */ - font-weight: normal; -} -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - filter:Alpha(Opacity=35); /* support: IE8 */ - background-image: none; -} -.ui-state-disabled .ui-icon { - filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("images/ui-icons_222222_256x240.png"); -} -.ui-widget-header .ui-icon { - background-image: url("images/ui-icons_222222_256x240.png"); -} -.ui-state-default .ui-icon { - background-image: url("images/ui-icons_888888_256x240.png"); -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url("images/ui-icons_454545_256x240.png"); -} -.ui-state-active .ui-icon { - background-image: url("images/ui-icons_454545_256x240.png"); -} -.ui-state-highlight .ui-icon { - background-image: url("images/ui-icons_2e83ff_256x240.png"); -} -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("images/ui-icons_cd0a0a_256x240.png"); -} - -/* positioning */ -.ui-icon-blank { background-position: 16px 16px; } -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 4px; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 4px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 4px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 4px; -} - -/* Overlays */ -.ui-widget-overlay { - background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; - opacity: .3; - filter: Alpha(Opacity=30); /* support: IE8 */ -} -.ui-widget-shadow { - margin: -8px 0 0 -8px; - padding: 8px; - background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; - opacity: .3; - filter: Alpha(Opacity=30); /* support: IE8 */ - border-radius: 8px; -} diff --git a/src/chrome/css/libraries/nice-select.css b/src/chrome/css/libraries/nice-select.css deleted file mode 100644 index 7d311e1..0000000 --- a/src/chrome/css/libraries/nice-select.css +++ /dev/null @@ -1,124 +0,0 @@ -.nice-select { - -webkit-tap-highlight-color: transparent; - background-color: #fff; - border-radius: 5px; - border: solid 1px #D3DADF; - box-sizing: border-box; - clear: both; - cursor: pointer; - display: block; - float: left; - font-family: inherit; - font-size: 14px; - font-weight: normal; - height: 42px; - line-height: 40px; - outline: none; - padding-left: 18px; - padding-right: 30px; - position: relative; - text-align: left !important; - transition: all 0.2s ease-in-out; - user-select: none; - white-space: nowrap; - box-sizing: border-box; - width: auto; } - .nice-select:hover { - border-color: #dbdbdb; } - .nice-select:active, .nice-select.open, .nice-select:focus { - border-color: #D3DADF; border-width: 1.5px; } - .nice-select:after { - border-bottom: 2px solid #999; - border-right: 2px solid #999; - content: ''; - display: block; - height: 5px; - margin-top: -4px; - pointer-events: none; - position: absolute; - right: 12px; - top: 50%; - transform-origin: 66% 66%; - transform: rotate(45deg); - transition: all 0.15s ease-in-out; - width: 5px; } - .nice-select.open:after { - transform: rotate(-135deg); } - .nice-select.open .list { - opacity: 1; - pointer-events: auto; - transform: scaleY(1) translateY(0); } - .nice-select.disabled { - border-color: #ededed; - color: #999; - pointer-events: none; } - .nice-select.disabled:after { - border-color: #cccccc; } - .nice-select.wide { - width: 100%; } - .nice-select.wide .list { - left: 0 !important; - right: 0 !important; } - .nice-select.right { - float: right; } - .nice-select.right .list { - left: auto; - right: 0; } - .nice-select.small { - font-size: 12px; - height: 36px; - line-height: 34px; } - .nice-select.small:after { - height: 4px; - width: 4px; } - .nice-select.small .option { - line-height: 34px; - min-height: 34px; } - .nice-select .list { - background-color: #fff; - border-radius: 5px; - border: 1px solid rgba(68, 68, 68, 0.11); - box-sizing: border-box; - margin-top: 4px; - opacity: 0; - overflow: hidden; - padding: 0; - pointer-events: none; - position: absolute; - margin-left: -1px; - top: 100%; - left: 0; - -webkit-transform-origin: 50% 0; - -ms-transform-origin: 50% 0; - transform-origin: 50% 0; - transform: scaleY(0.75) translateY(-21px); - transition: all .15s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; - z-index: 9; } - .nice-select .list:hover .option:not(:hover) { - background-color: transparent !important; } - .nice-select .option { - cursor: pointer; - font-weight: 400; - line-height: 40px; - list-style: none; - min-height: 40px; - outline: none; - padding-left: 18px; - padding-right: 29px; - text-align: left; - -webkit-transition: opacity 0.2s; - transition: opacity 0.2s; } - .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus { - background-color: #f6f6f6; } - .nice-select .option.selected { - font-weight: bold; } - .nice-select .option.disabled { - background-color: transparent; - color: #999; - cursor: default; } - -.no-csspointerevents .nice-select .list { - display: none; } - -.no-csspointerevents .nice-select.open .list { - display: block; } diff --git a/src/chrome/css/popup.css b/src/chrome/css/popup.css deleted file mode 100644 index bdc2774..0000000 --- a/src/chrome/css/popup.css +++ /dev/null @@ -1,436 +0,0 @@ -body, html { - overflow: hidden; - margin: 0px; - width: 314px; - height: 510px; - background-color: #FFF; -} -#navigation { - width: 100%; - height: 50px; -} -#logo { - font-family: Roboto; - font-weight: bold; - color: #282828; - font-size: 15px; - margin-left: 20px; - margin-top: 14px; -} -#logo img { - vertical-align: bottom; - margin-right: 7px; - margin-bottom: -1px; -} -#more { - position: absolute; - top: 16px; - right: 20px; - width: 35px; - height: 35px; - text-align: center; - border-radius: 50%; - transition: background-color .15s cubic-bezier(.05,.03,.35,1); - margin-top: -7px; -} -#more img { - margin-top: 7px; -} -#more:hover { - background-color: #E7EAEC; - cursor: pointer; -} -#tabs { - width: 100%; - height: 72px; - border-bottom: 1px solid #E7E9EB; - background-color: #FFF; -} -#feed-type { - display: table; - width: 90%; - height: 100%; - margin-left: auto; - margin-right: auto; -} -.type { - display: table-cell; - text-align: center; - width: 33%; - transition: opacity .15s cubic-bezier(.05,.03,.35,1); -} -.type:not(.type-active):hover { - opacity: .7; - cursor: pointer; -} -.type p { - color: #7B81A5; - font-size: 13px; - font-family: Roboto; - font-weight: 600; - margin-top: 7px; -} -#video-feed img { - width: 45px; - height: 30.3px; -} -#home-feed:not(.type-active) img { - margin-left: -2px; -} -#home-feed img { - margin-bottom: -3px; -} -#countdown-select { - top: 420px; - left: 35px; - position: absolute; - background: #FFFFFF; - border: 1px solid #C5C8CA; - box-sizing: border-box; - box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); - border-radius: 5px; - height: 92px; - width: 87px; - visibility: hidden; - transform: scale(0); - transition: all .15s cubic-bezier(.05,.03,.35,1); - transform-origin: top center; - opacity: 0; -} -.countdown, #more-select a { - font-family: Roboto; - font-weight: normal; - font-size: 14px; - text-align: center; - border-bottom: 1px solid #E7E9EB; - width: 100%; - height: 30px; - line-height: 30px; - background-color: #FFF; - overflow: hidden; - box-sizing: border-box; - transition: background-color .15s cubic-bezier(.05,.03,.35,1); - text-decoration: none; - color: #000; - display: block; -} -.countdown:hover, #more-select a:hover { - background-color: #F5F6F8; - cursor: pointer; -} -.countdown:first-child, #more-select a:first-child { - border-radius: 5px 5px 0px 0px; -} -.countdown:last-child, #more-select a:last-child { - border-bottom: 0px; - border-radius: 0px 0px 5px 5px; -} -.countactive { - visibility: visible!important; - transform: scale(1)!important; - opacity: 1!important; -} -#more-select a { - font-family: Roboto; - font-weight: normal; - font-size: 14px; - text-align: center; - border-bottom: 1px solid #E7E9EB; - width: 100%; - height: 30px; - line-height: 30px; - background-color: #FFF; - overflow: hidden; - box-sizing: border-box; - transition: background-color .15s cubic-bezier(.05,.03,.35,1); - text-decoration: none; - color: #000; - display: block; -} -#more-select a:hover { - background-color: #F5F6F8; - cursor: pointer; -} -#more-select a:first-child { - border-radius: 5px 5px 0px 0px; -} -#more-select a:last-child { - border-bottom: 0px; - border-radius: 0px 0px 5px 5px; -} -#more-select { - z-index: 2; - top: 40px; - right: 25px; - position: absolute; - background: #FFFFFF; - border: 1px solid #C5C8CA; - box-sizing: border-box; - box-shadow: 0px 10px 40px rgba(53, 87, 98, 0.1); - border-radius: 5px; - height: 182px; - width: 140px; - visibility: hidden; - transform: scale(0); - transition: all .15s cubic-bezier(.05,.03,.35,1); - transform-origin: top center; - opacity: 0; -} - - -.cube { - position:relative; - width:300px; - height:60px; - margin:1rem auto; - -webkit-transform-style:preserve-3d; - -moz-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - -o-transform-style: preserve-3d; - transform-style: preserve-3d; - -webkit-perspective:200px; - -moz-perspective: 200px; - -ms-perspective: 200px; - -o-perspective: 200px; - perspective: 200px; -} -/* positions */ -.a, .b, .c, .d { - position:absolute; - width:50%; - height:100%; - left:0px; - z-index:222; -} -.a:before, .b:before, .c:before, .d:before, .a:after, .b:after { - content:''; - position:absolute; - top:0px; - left:0px; - width:300px; - height:60px; -} -.a:before, .b:before, .c:before, .d:before { - z-index:111; -} -.a:after, .b:after { - z-index:333; -} -.b { - top:0px; - -webkit-transform:rotateX(75deg) translateY(-60px); - -moz-transform: rotateX(75deg) translateY(-60px); - -o-transform: rotateX(75deg) translateY(-60px); - -ms-transform: rotateX(75deg) translateY(-60px); - transform: rotateX(75deg) translateY(-60px); - -webkit-transform-origin:0% 0%; - -moz-transform-origin: 0% 0%; - -o-transform-origin: 0% 0%; - -ms-transform-origin: 0% 0%; - transform-origin: 0% 0%; -} -.c { - top:0px; - -webkit-transform:rotateX(75deg); - -moz-transform: rotateX(75deg); - -o-transform: rotateX(75deg); - -ms-transform: rotateX(75deg); - transform: rotateX(75deg); - -webkit-transform-origin:100% 100%; - -moz-transform-origin: 100% 100%; - -o-transform-origin: 100% 100%; - -ms-transform-origin: 100% 100%; - transform-origin: 100% 100%; -} -.d { - -webkit-transform:translateZ(-60px) translateY(-15px); - -moz-transform: translateZ(-60px) translateY(-15px); - -o-transform: translateZ(-60px) translateY(-15px); - -ms-transform: translateZ(-60px) translateY(-15px); - transform: translateZ(-60px) translateY(-15px); -} -/* colors */ -.a, .b { - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(204,24,30,0.8)), to(rgba(204,24,30,0.8))); - background-image: -webkit-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); - background-image: -moz-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); - background-image: -o-linear-gradient(top, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); - background-image: linear-gradient(to bottom, rgba(204,24,30,0.8), rgba(204,24,30,0.8)); - background-repeat:no-repeat; - background-size:100% 100%; - background-position:0% 0%; -} -.c, .d { - background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(204,24,30,0.5)), to(rgba(204,24,30,0.5))); - background-image:-webkit-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); - background-image: -moz-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); - background-image: -o-linear-gradient(top, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); - background-image: linear-gradient(to bottom, rgba(204,24,30,0.5), rgba(204,24,30,0.5)); - background-repeat:no-repeat; - background-size:100% 100%; - background-position:0% 0%; -} -.c:before { - -webkit-box-shadow:0px 30px 20px -20px rgba(0,0,0,0.4), - 0px 40px 15px -15px rgba(0,0,0,0.25); - -moz-box-shadow: 0px 30px 20px -20px rgba(0,0,0,0.4), - 0px 40px 15px -15px rgba(0,0,0,0.25); - box-shadow: 0px 30px 20px -20px rgba(0,0,0,0.4), - 0px 40px 15px -15px rgba(0,0,0,0.25); -} -.a:before, .b:before, .c:before, .d:before { - background-color:rgba(0,0,0,0.05); -} -.a:after { - background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.07)), to(rgba(0,0,0,0))); - background-image:-webkit-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); - background-image: -moz-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); - background-image: -o-linear-gradient(top, rgba(0,0,0,0.07), rgba(0,0,0,0)); - background-image: linear-gradient(to bottom, rgba(0,0,0,0.07), rgba(0,0,0,0)); -} -.b:after { - background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0.1)), to(rgba(255,255,255,0.25))); - background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); - background-image: -moz-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); - background-image: -o-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); - background-image: linear-gradient(to bottom, rgba(255,255,255,0.1), rgba(255,255,255,0.25)); -} -/* jQuery stuff */ -#slider-range-min { - position:absolute; - width: 94%; - left:3%; - top:27px; - margin: 0px; - z-index:999; -} -.ui-slider { - height:5px; - border:none; - background:rgba(0,0,0,0.1); - -webkit-box-shadow:0px 2px 2px rgba(255,255,255,0.25), - inset 0px 1px 3px rgba(0,0,0,0.3); - -moz-box-shadow: 0px 2px 2px rgba(255,255,255,0.25), - inset 0px 1px 3px rgba(0,0,0,0.3); - box-shadow: 0px 2px 2px rgba(255,255,255,0.25), - inset 0px 1px 3px rgba(0,0,0,0.3); -} -.ui-slider:before, .ui-slider:after { - content:'IIIIIII'; - position:absolute; - left:2px; - width:100%; - font-family: 'Roboto', sans-serif; - font-size:1.2rem; - font-weight:300; - color:rgba(0,0,0,0.3); - letter-spacing:41px; - text-shadow:1px 1px 0px rgba(255,255,255,0.2); -} -.ui-slider:before { - top:-1.4rem; -} -.ui-slider:after { - bottom:-1.4rem; -} -.ui-slider-range {background:transparent;} -.ui-slider .ui-slider-handle { - top:-8px; - width:26px; - height:20px; - margin-left:-15px; - padding-left:4px; - border:none; - background:rgba(255,255,255,0.7); - border-radius:2px; - text-align:center; - font-family: 'Roboto', sans-serif; - font-size:1.2rem; - line-height:20px; - color:rgba(0,0,0,0.5); - text-decoration:none; - letter-spacing:3px; - cursor:pointer; - text-shadow:1px 1px 2px rgba(255,255,255,1); - -webkit-box-shadow:1px 1px 8px rgba(0,0,0,0.3); - -moz-box-shadow: 1px 1px 8px rgba(0,0,0,0.3); - box-shadow: 1px 1px 8px rgba(0,0,0,0.3); -} -.ui-slider .ui-slider-handle:focus { - outline:none; -} - -#title { - font-family: 'Roboto', sans-serif; - font-size:1.1rem; - font-weight:300; - line-height:1.8rem; - color: #282828; - margin: auto; - padding: 11px 0 19px 10px; -} -#cta { - position:relative; - display:inline-block; - text-align:center; - font-family: 'Roboto', sans-serif; - font-weight:400; - font-size:1rem; - color:#282828; - margin: auto; - padding: 10px 10px; -} -#cta:focus {outline:none;} -/* base */ -#content { - -webkit-box-sizing:border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width:100%; - text-align:center; -} -#icons { - display: flex; - justify-content: space-between; - margin-top: 20px; -} -#icon { - margin: auto; -} -#icon img { - vertical-align: bottom; -} -#note { - display: none; - font-family: Roboto; - color: #282828; - font-size: 14px; - font-weight:500; - margin: auto; -} -#end { - position: absolute; - bottom: 0; -} -#endnote { - font-family: Roboto; - color: #282828; - font-size: 14px; - font-weight:300; - padding: 0 10px; -} -a:link { - color: #CC181E; - background-color: transparent; - text-decoration: none; -} -a:visited { - color: #DA585C; - background-color: transparent; - text-decoration: none; -} -a:hover { - color: #D6464A; - background-color: transparent; - text-decoration: underline; -} \ No newline at end of file diff --git a/src/chrome/html/popup.html b/src/chrome/html/popup.html deleted file mode 100644 index fc70053..0000000 --- a/src/chrome/html/popup.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - -
-
-

Video Ads

-

Homebeta

-

Suggestedbeta

-
-
-

YouTube stopped throwing tantrums? -

-
-
-
-
-
-
-
-

Slide-o-meter to 0. if it fails,
rocket to 100 if it rocks!

-

- Note: Disable other adblockers. Reach out over Issues if it still doesn't work. -

-
-
- -
-
- -
-
-
-
-
-

- I'm working hard on writing the new features as well as keeping the extension up-to-date. -

-
- - - - - - \ No newline at end of file diff --git a/src/chrome/js/background.js b/src/chrome/js/background.js deleted file mode 100644 index d5cf207..0000000 --- a/src/chrome/js/background.js +++ /dev/null @@ -1,67 +0,0 @@ -// RELOAD ALL YOUTUBE TABS WHEN THE EXTENSION IS INSTALLED OR UPDATED -chrome.runtime.onInstalled.addListener((details) => { - switch (details.reason) { - case "install": - console.info("EXTENSION INSTALLED"); - break; - case "update": - console.info("EXTENSION UPDATED"); - break; - case "chrome_update": - case "shared_module_update": - default: - console.info("BROWSER UPDATED"); - break; - } - - chrome.tabs.query({}, (tabs) => { - tabs - .filter((tab) => tab.url.startsWith("https://www.youtube.com/")) - .forEach(({ id }) => { - chrome.tabs.reload(id); - }); - }); -}); - -const taimuRipu = async () => { - await new Promise((resolve, _reject) => { - const videoContainer = document.getElementById("movie_player"); - - const setTimeoutHandler = () => { - const isAd = videoContainer?.classList.contains("ad-interrupting") || videoContainer?.classList.contains("ad-showing"); - const skipLock = document.querySelector(".ytp-ad-preview-text")?.innerText; - const surveyLock = document.querySelector(".ytp-ad-survey")?.length > 0; - - if (isAd && skipLock) { - const videoPlayer = document.getElementsByClassName("video-stream")[0]; - videoPlayer.muted = true; // videoPlayer.volume = 0; - videoPlayer.currentTime = videoPlayer.duration - 0.1; - videoPlayer.paused && videoPlayer.play() - // CLICK ON THE SKIP AD BTN - document.querySelector(".ytp-ad-skip-button")?.click(); - } else if (isAd && surveyLock) { - // CLICK ON THE SKIP SURVEY BTN - document.querySelector(".ytp-ad-skip-button")?.click(); - } - - resolve(); - }; - - // RUN IT ONLY AFTER 100 MILLISECONDS - setTimeout(setTimeoutHandler, 100); - }); - - taimuRipu(); -}; - -chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { - if ( - changeInfo.status === "complete" && - String(tab.url).includes("https://www.youtube.com/watch") - ) { - chrome.scripting.executeScript({ - target: { tabId: tabId }, - function: taimuRipu, - }); - } -}); diff --git a/src/chrome/js/content.js b/src/chrome/js/content.js deleted file mode 100644 index b7d9887..0000000 --- a/src/chrome/js/content.js +++ /dev/null @@ -1,53 +0,0 @@ -const taimuRipu = async () => { - await new Promise((resolve, _reject) => { - const videoContainer = document.getElementById("movie_player"); - - const setTimeoutHandler = () => { - const isAd = videoContainer?.classList.contains("ad-interrupting") || videoContainer?.classList.contains("ad-showing"); - const skipLock = document.querySelector(".ytp-ad-preview-text")?.innerText; - const surveyLock = document.querySelector(".ytp-ad-survey")?.length > 0; - - if (isAd && skipLock) { - const videoPlayer = document.getElementsByClassName("video-stream")[0]; - videoPlayer.muted = true; // videoPlayer.volume = 0; - videoPlayer.currentTime = videoPlayer.duration - 0.1; - videoPlayer.paused && videoPlayer.play() - // CLICK ON THE SKIP AD BTN - document.querySelector(".ytp-ad-skip-button")?.click(); - } else if (isAd && surveyLock) { - // CLICK ON THE SKIP SURVEY BTN - document.querySelector(".ytp-ad-skip-button")?.click(); - } - - const staticAds = [".ytd-companion-slot-renderer", ".ytd-action-companion-ad-renderer", // in-feed video ads - ".ytd-watch-next-secondary-results-renderer.sparkles-light-cta", ".ytd-unlimited-offer-module-renderer", // similar components - ".ytp-ad-overlay-image", ".ytp-ad-text-overlay", // deprecated overlay ads (04-06-2023) - ".ytd-display-ad-renderer", ".ytd-statement-banner-renderer", ".ytd-in-feed-ad-layout-renderer", // homepage ads - ".ytd-banner-promo-renderer", ".ytd-video-masthead-ad-v3-renderer", ".ytd-primetime-promo-renderer" // subscribe for premium & youtube tv ads - ]; - - staticAds.forEach((ad) => { - document.hideElementsBySelector(ad); - }); - - resolve(); - }; - - // RUN IT ONLY AFTER 100 MILLISECONDS - setTimeout(setTimeoutHandler, 100); - }); - - taimuRipu(); -}; - - -const init = async () => { - Document.prototype.hideElementsBySelector = (selector) => - [...document.querySelectorAll(selector)].forEach( - (el) => (el.style.display = "none") - ); - - taimuRipu(); -}; - -init(); \ No newline at end of file diff --git a/src/chrome/js/libraries/jquery-3.5.1.min.js b/src/chrome/js/libraries/jquery-3.5.1.min.js deleted file mode 100644 index b061403..0000000 --- a/src/chrome/js/libraries/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return n=!a&&o.length?e.widget.extend.apply(null,[n].concat(o)):n,a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))}),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("
"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.widthi?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>d&&(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.length&&(!t.length||e.index()",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i) -}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("