From 3049051d13432835ec160891910efba09dacd6cd Mon Sep 17 00:00:00 2001 From: mmustra Date: Wed, 20 Sep 2023 16:49:16 +0200 Subject: [PATCH] Add project --- .editorconfig | 16 + .github/workflows/gh-pages.yml | 34 + .gitignore | 42 + .vscode/extensions.json | 4 + .vscode/launch.json | 20 + .vscode/tasks.json | 42 + README.md | 98 +- angular.json | 83 + package-lock.json | 12631 ++++++++++++++++ package.json | 50 + resources/angular.png | Bin 0 -> 2021 bytes resources/demo.gif | Bin 0 -> 150935 bytes resources/primeng.png | Bin 0 -> 2693 bytes resources/rxjs.png | Bin 0 -> 3590 bytes resources/tailwind.png | Bin 0 -> 1253 bytes src/app/app.component.css | 0 src/app/app.component.html | 10 + src/app/app.component.ts | 57 + .../case-async-pipe-example-1.component.css | 0 .../case-async-pipe-example-1.component.html | 15 + .../case-async-pipe-example-1.component.ts | 65 + .../case-async-pipe-example-2.component.css | 0 .../case-async-pipe-example-2.component.html | 21 + .../case-async-pipe-example-2.component.ts | 58 + .../case-async-pipe/case-async-pipe-routes.ts | 27 + .../case-async-pipe.component.css | 0 .../case-async-pipe.component.html | 14 + .../case-async-pipe.component.ts | 23 + .../case-events-example-1.component.css | 0 .../case-events-example-1.component.html | 14 + .../case-events-example-1.component.ts | 56 + .../case-events-example-2.component.css | 0 .../case-events-example-2.component.html | 22 + .../case-events-example-2.component.ts | 65 + .../cases/case-events/case-events-routes.ts | 26 + .../case-events/case-events.component.css | 0 .../case-events/case-events.component.html | 19 + .../case-events/case-events.component.ts | 23 + .../case-input-example-1.component.css | 0 .../case-input-example-1.component.html | 22 + .../case-input-example-1.component.ts | 62 + .../case-input-example-2.component.css | 0 .../case-input-example-2.component.html | 27 + .../case-input-example-2.component.ts | 83 + src/app/cases/case-input/case-input-routes.ts | 27 + .../cases/case-input/case-input.component.css | 0 .../case-input/case-input.component.html | 13 + .../cases/case-input/case-input.component.ts | 23 + src/app/cases/cases-routes.ts | 10 + src/app/home/home-routes.ts | 11 + src/app/home/home.component.css | 0 src/app/home/home.component.html | 20 + src/app/home/home.component.ts | 15 + .../legend-item/legend-item.component.css | 11 + .../legend-item/legend-item.component.html | 7 + .../legend-item/legend-item.component.ts | 37 + src/app/home/legend/legend.component.css | 0 src/app/home/legend/legend.component.html | 18 + src/app/home/legend/legend.component.ts | 41 + .../reference-link.component.css | 13 + .../reference-link.component.html | 8 + .../reference-link.component.ts | 31 + .../home/references/references.component.css | 0 .../home/references/references.component.html | 16 + .../home/references/references.component.ts | 51 + .../animation-speed.component.css | 0 .../animation-speed.component.html | 21 + .../animation-speed.component.ts | 54 + .../card-container.component.css | 0 .../card-container.component.html | 14 + .../card-container.component.ts | 72 + .../reload/reload.component.css | 0 .../reload/reload.component.html | 11 + .../card-container/reload/reload.component.ts | 73 + .../shared/components/card/card.component.css | 0 .../components/card/card.component.html | 44 + .../shared/components/card/card.component.ts | 252 + .../components/config/config.component.ts | 96 + .../example-container.component.css | 0 .../example-container.component.html | 16 + .../example-container.component.ts | 91 + .../components/ui/layout/layout.component.css | 9 + .../ui/layout/layout.component.html | 7 + .../components/ui/layout/layout.component.ts | 61 + .../components/ui/menu/menu.component.css | 0 .../components/ui/menu/menu.component.html | 1 + .../components/ui/menu/menu.component.ts | 32 + src/app/shared/directives/cd-log.directive.ts | 135 + .../shared/directives/click-log.directive.ts | 30 + .../shared/factories/style-factory.service.ts | 42 + .../shared/factories/variants/base-styler.ts | 180 + .../factories/variants/changes-styler.ts | 8 + .../shared/factories/variants/check-styler.ts | 8 + .../factories/variants/destroy-styler.ts | 18 + .../factories/variants/render-styler.ts | 9 + src/app/shared/services/animation.service.ts | 146 + src/app/shared/services/dom.service.ts | 35 + src/app/shared/services/log.service.ts | 102 + src/app/shared/services/payload.service.ts | 36 + src/app/shared/utils/element-traverse.ts | 27 + src/app/shared/utils/mutation-observer.ts | 18 + src/app/shared/utils/random-text.ts | 3 + src/assets/.gitkeep | 0 src/favicon.ico | Bin 0 -> 948 bytes src/index.html | 13 + src/main.ts | 17 + src/routes.ts | 26 + src/styles.css | 160 + tailwind.config.js | 8 + tsconfig.app.json | 10 + tsconfig.json | 27 + tsconfig.spec.json | 14 + 112 files changed, 16006 insertions(+), 1 deletion(-) create mode 100644 .editorconfig create mode 100644 .github/workflows/gh-pages.yml create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 angular.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 resources/angular.png create mode 100644 resources/demo.gif create mode 100644 resources/primeng.png create mode 100644 resources/rxjs.png create mode 100644 resources/tailwind.png create mode 100644 src/app/app.component.css create mode 100644 src/app/app.component.html create mode 100644 src/app/app.component.ts create mode 100644 src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.css create mode 100644 src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.html create mode 100644 src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.ts create mode 100644 src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.css create mode 100644 src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.html create mode 100644 src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.ts create mode 100644 src/app/cases/case-async-pipe/case-async-pipe-routes.ts create mode 100644 src/app/cases/case-async-pipe/case-async-pipe.component.css create mode 100644 src/app/cases/case-async-pipe/case-async-pipe.component.html create mode 100644 src/app/cases/case-async-pipe/case-async-pipe.component.ts create mode 100644 src/app/cases/case-events/case-events-example-1/case-events-example-1.component.css create mode 100644 src/app/cases/case-events/case-events-example-1/case-events-example-1.component.html create mode 100644 src/app/cases/case-events/case-events-example-1/case-events-example-1.component.ts create mode 100644 src/app/cases/case-events/case-events-example-2/case-events-example-2.component.css create mode 100644 src/app/cases/case-events/case-events-example-2/case-events-example-2.component.html create mode 100644 src/app/cases/case-events/case-events-example-2/case-events-example-2.component.ts create mode 100644 src/app/cases/case-events/case-events-routes.ts create mode 100644 src/app/cases/case-events/case-events.component.css create mode 100644 src/app/cases/case-events/case-events.component.html create mode 100644 src/app/cases/case-events/case-events.component.ts create mode 100644 src/app/cases/case-input/case-events-example-1/case-input-example-1.component.css create mode 100644 src/app/cases/case-input/case-events-example-1/case-input-example-1.component.html create mode 100644 src/app/cases/case-input/case-events-example-1/case-input-example-1.component.ts create mode 100644 src/app/cases/case-input/case-events-example-2/case-input-example-2.component.css create mode 100644 src/app/cases/case-input/case-events-example-2/case-input-example-2.component.html create mode 100644 src/app/cases/case-input/case-events-example-2/case-input-example-2.component.ts create mode 100644 src/app/cases/case-input/case-input-routes.ts create mode 100644 src/app/cases/case-input/case-input.component.css create mode 100644 src/app/cases/case-input/case-input.component.html create mode 100644 src/app/cases/case-input/case-input.component.ts create mode 100644 src/app/cases/cases-routes.ts create mode 100644 src/app/home/home-routes.ts create mode 100644 src/app/home/home.component.css create mode 100644 src/app/home/home.component.html create mode 100644 src/app/home/home.component.ts create mode 100644 src/app/home/legend/legend-item/legend-item.component.css create mode 100644 src/app/home/legend/legend-item/legend-item.component.html create mode 100644 src/app/home/legend/legend-item/legend-item.component.ts create mode 100644 src/app/home/legend/legend.component.css create mode 100644 src/app/home/legend/legend.component.html create mode 100644 src/app/home/legend/legend.component.ts create mode 100644 src/app/home/references/reference-link/reference-link.component.css create mode 100644 src/app/home/references/reference-link/reference-link.component.html create mode 100644 src/app/home/references/reference-link/reference-link.component.ts create mode 100644 src/app/home/references/references.component.css create mode 100644 src/app/home/references/references.component.html create mode 100644 src/app/home/references/references.component.ts create mode 100644 src/app/shared/components/card-container/animation-speed/animation-speed.component.css create mode 100644 src/app/shared/components/card-container/animation-speed/animation-speed.component.html create mode 100644 src/app/shared/components/card-container/animation-speed/animation-speed.component.ts create mode 100644 src/app/shared/components/card-container/card-container.component.css create mode 100644 src/app/shared/components/card-container/card-container.component.html create mode 100644 src/app/shared/components/card-container/card-container.component.ts create mode 100644 src/app/shared/components/card-container/reload/reload.component.css create mode 100644 src/app/shared/components/card-container/reload/reload.component.html create mode 100644 src/app/shared/components/card-container/reload/reload.component.ts create mode 100644 src/app/shared/components/card/card.component.css create mode 100644 src/app/shared/components/card/card.component.html create mode 100644 src/app/shared/components/card/card.component.ts create mode 100644 src/app/shared/components/config/config.component.ts create mode 100644 src/app/shared/components/example-container/example-container.component.css create mode 100644 src/app/shared/components/example-container/example-container.component.html create mode 100644 src/app/shared/components/example-container/example-container.component.ts create mode 100644 src/app/shared/components/ui/layout/layout.component.css create mode 100644 src/app/shared/components/ui/layout/layout.component.html create mode 100644 src/app/shared/components/ui/layout/layout.component.ts create mode 100644 src/app/shared/components/ui/menu/menu.component.css create mode 100644 src/app/shared/components/ui/menu/menu.component.html create mode 100644 src/app/shared/components/ui/menu/menu.component.ts create mode 100644 src/app/shared/directives/cd-log.directive.ts create mode 100644 src/app/shared/directives/click-log.directive.ts create mode 100644 src/app/shared/factories/style-factory.service.ts create mode 100644 src/app/shared/factories/variants/base-styler.ts create mode 100644 src/app/shared/factories/variants/changes-styler.ts create mode 100644 src/app/shared/factories/variants/check-styler.ts create mode 100644 src/app/shared/factories/variants/destroy-styler.ts create mode 100644 src/app/shared/factories/variants/render-styler.ts create mode 100644 src/app/shared/services/animation.service.ts create mode 100644 src/app/shared/services/dom.service.ts create mode 100644 src/app/shared/services/log.service.ts create mode 100644 src/app/shared/services/payload.service.ts create mode 100644 src/app/shared/utils/element-traverse.ts create mode 100644 src/app/shared/utils/mutation-observer.ts create mode 100644 src/app/shared/utils/random-text.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/favicon.ico create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/routes.ts create mode 100644 src/styles.css create mode 100644 tailwind.config.js create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.spec.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 0000000..9a70ae1 --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,34 @@ +name: GitHub Pages + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Install dependencies + run: npm install + + - name: Build + run: npm run build:prod + + - name: Duplicate index for routing workaround fix + run: cp dist/angular-on-push-strategy/index.html dist/angular-on-push-strategy/404.html + + - name: Deploy + if: success() + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: dist/angular-on-push-strategy diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0711527 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..77b3745 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 + "recommendations": ["angular.ng-template"] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..925af83 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "ng serve", + "type": "chrome", + "request": "launch", + "preLaunchTask": "npm: start", + "url": "http://localhost:4200/" + }, + { + "name": "ng test", + "type": "chrome", + "request": "launch", + "preLaunchTask": "npm: test", + "url": "http://localhost:9876/debug.html" + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..a298b5b --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558 + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "start", + "isBackground": true, + "problemMatcher": { + "owner": "typescript", + "pattern": "$tsc", + "background": { + "activeOnStart": true, + "beginsPattern": { + "regexp": "(.*?)" + }, + "endsPattern": { + "regexp": "bundle generation complete" + } + } + } + }, + { + "type": "npm", + "script": "test", + "isBackground": true, + "problemMatcher": { + "owner": "typescript", + "pattern": "$tsc", + "background": { + "activeOnStart": true, + "beginsPattern": { + "regexp": "(.*?)" + }, + "endsPattern": { + "regexp": "bundle generation complete" + } + } + } + } + ] +} diff --git a/README.md b/README.md index d0831a7..bc4c63c 100644 --- a/README.md +++ b/README.md @@ -1 +1,97 @@ -# angular-on-push-strategy \ No newline at end of file +# Angular OnPush Strategy + +Visual examples representing Angular change detection with OnPush strategy. +:link: [live app](https://mmustra.github.io/angular-on-push-strategy) + +

+ +

+ +

+     +     +     + +

+ +## Table of Contents + +- [About](#about) +- [Usage](#usage) +- [Features](#features) +- [Technologies](#technologies) +- [Development](#development) + +## About + +It is a playground for improving understanding of change detection and the OnPush strategy. In the future this project may be extended with additional examples or strategies. + +## Usage + +After you run application: + +1. Open Console from DevTools +2. Click on app tabs, tryout examples + +Example will show animation and logs. You can reload the example and change the speed of animation. Every button click in example will reset the animation/logs. + +## Features + +- Standalone components +- Dynamic components +- Portal components +- Content projection +- Directive composition +- Dependency providers +- Resolution modifiers + +## Technologies + +- Angular 16 +- Primeng +- RxJS +- Tailwind +- ngneat/overview +- Lodash + +## Development + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.1. + +Run `npm start` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +#### IDE + +[Visual Studio Code](https://code.visualstudio.com/) is recommended. [Prettier](https://prettier.io/) is used as formatter for the project. + +#### Code style + +Be sure to follow current folder structure and code style in the project. Use Typescript to create better code environment with your contributions. Before adding new packages to project be sure to first check `package.json` for possible duplicates. + +For generating new angular components use `ng generate`. +Example: `ng generate component component-name` + +You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). + +#### Scripts + +##### Serve + +Run `ng serve` to serve the project. Use the `--prod` flag for a production build. + +##### Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +##### Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +##### Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## License + +The MIT License ([MIT](./LICENSE)) +Copyright (c) 2023, Marin Muštra diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..f33a8e4 --- /dev/null +++ b/angular.json @@ -0,0 +1,83 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "angular-on-push-strategy": { + "projectType": "application", + "schematics": {}, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/angular-on-push-strategy", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": ["zone.js"], + "tsConfig": "tsconfig.app.json", + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.css"], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "angular-on-push-strategy:build:production" + }, + "development": { + "browserTarget": "angular-on-push-strategy:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "angular-on-push-strategy:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": ["zone.js", "zone.js/testing"], + "tsConfig": "tsconfig.spec.json", + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.css"], + "scripts": [] + } + } + } + } + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0c5a45a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12631 @@ +{ + "name": "angular-on-push-strategy", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "angular-on-push-strategy", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "@angular/animations": "^16.2.0", + "@angular/common": "^16.2.0", + "@angular/compiler": "^16.2.0", + "@angular/core": "^16.2.0", + "@angular/forms": "^16.2.0", + "@angular/platform-browser": "^16.2.0", + "@angular/platform-browser-dynamic": "^16.2.0", + "@angular/router": "^16.2.0", + "@ngneat/overview": "^5.1.1", + "lodash-es": "^4.17.21", + "primeicons": "^6.0.1", + "primeng": "^16.3.1", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.13.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.2.1", + "@angular/cli": "~16.2.1", + "@angular/compiler-cli": "^16.2.0", + "@types/jasmine": "~4.3.0", + "@types/lodash-es": "^4.17.9", + "autoprefixer": "^10.4.15", + "jasmine-core": "~4.6.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "postcss": "^8.4.29", + "tailwindcss": "^3.3.3", + "typescript": "~5.1.3" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/@angular-devkit/architect": { + "version": "0.1602.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.1.tgz", + "integrity": "sha512-EhK+4lQOwYE2Zhd5+2Un2+q7wTnXEn2pVIZ11f1x78fYAbf6QyYrBZTegGOj+j3NRMdfJM0v238r+ypMdnDimA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.1.tgz", + "integrity": "sha512-2CkBOk76O8ROys5NUcRBMLdFVPuBfr3oy9omP5nO0aQVA9mWc3TRy/MeqDbr0xcY8LyJBB4B1jEQrkjWaeSDcA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.2.1", + "@angular-devkit/architect": "0.1602.1", + "@angular-devkit/build-webpack": "0.1602.1", + "@angular-devkit/core": "16.2.1", + "@babel/core": "7.22.9", + "@babel/generator": "7.22.9", + "@babel/helper-annotate-as-pure": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", + "@babel/plugin-proposal-async-generator-functions": "7.20.7", + "@babel/plugin-transform-async-to-generator": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.9", + "@babel/preset-env": "7.22.9", + "@babel/runtime": "7.22.6", + "@babel/template": "7.22.5", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "16.2.1", + "@vitejs/plugin-basic-ssl": "1.0.1", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.14", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.21.5", + "chokidar": "3.5.3", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.20", + "css-loader": "6.8.1", + "esbuild-wasm": "0.18.17", + "fast-glob": "3.3.1", + "guess-parser": "0.4.22", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.30.1", + "mini-css-extract-plugin": "2.7.6", + "mrmime": "1.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "2.3.1", + "piscina": "4.0.0", + "postcss": "8.4.27", + "postcss-loader": "7.3.3", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.64.1", + "sass-loader": "13.3.2", + "semver": "7.5.4", + "source-map-loader": "4.0.1", + "source-map-support": "0.5.21", + "terser": "5.19.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.6.1", + "vite": "4.4.7", + "webpack": "5.88.2", + "webpack-dev-middleware": "6.1.1", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.9.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.18.17" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "@angular/localize": "^16.0.0", + "@angular/platform-server": "^16.0.0", + "@angular/service-worker": "^16.0.0", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^16.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.9.3 <5.2" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1602.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.1.tgz", + "integrity": "sha512-gY7G+1xsOkPvO4/Ose1RnbflrTQkbQh6xQPeCa95I4GFFpk8De3d2cGNM9KuD8LCDc1GAGip8nRuVrCwQGZ5sw==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1602.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.1.tgz", + "integrity": "sha512-/QnIIvu9kW4UoJ2IWF8pxwHk+/O2ARi5bYV9jCgMxTs/3VuOHrWaDtxAvxd1gqj+vYvwLtdbBYNT/Hs/nCJeLQ==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.1.tgz", + "integrity": "sha512-rXXO5zSI/iN6JtU3oU+vKfOB1N8n1iCH9aLudtJfO5zT9r29FIvV4YMmHO0iu78i4IhQAeJdr42cvrGPp8Y41A==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.1", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.1", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/animations": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.4.tgz", + "integrity": "sha512-LM6dXCZvLS383lS2n01eD5l0gXTXFHtUiAKahT8RS8/KRNgiIo43SjPsHxMR3CAQPdtNhDJTMHXofyCwi9YWjA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.4" + } + }, + "node_modules/@angular/cli": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.1.tgz", + "integrity": "sha512-nuCc0VOGjuUFQo1Pu9CyFQ4VTy7OuwTiwxOG9qbut4FSGz2CO9NeqoamPUuy6rpKVu5JxVe+L6Y4OFaNKv2n3Q==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1602.1", + "@angular-devkit/core": "16.2.1", + "@angular-devkit/schematics": "16.2.1", + "@schematics/angular": "16.2.1", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "npm-package-arg": "10.1.0", + "npm-pick-manifest": "8.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "15.2.0", + "resolve": "1.22.2", + "semver": "7.5.4", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.4.tgz", + "integrity": "sha512-MsZfO/XedwL/3WKMgvefLOKz6w/eRQuRUYjhJtjCImqQB7evDLohjgfNY0tYPeyr1a+N6ekMyFbIAJdKlirOsg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.4.tgz", + "integrity": "sha512-MzvMFqfyrUfhCC+wtvzgbUrlksSpOSMeVwxDL1cwBrwGvprOjb4BeyjFx9XAsNhdA7vdUmaw9REJ8dOSeHpHyg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.4" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.4.tgz", + "integrity": "sha512-pm4GpmZVEbibnXPb8hcFSdORmtHGX9GqPle0X/ydXAExLfSg7BIgfeEb/nDuStu6U+96gBA2fjX3jnhmhgFh/Q==", + "dev": true, + "dependencies": { + "@babel/core": "7.22.5", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "16.2.4", + "typescript": ">=4.9.3 <5.2" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", + "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/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/@angular/core": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.4.tgz", + "integrity": "sha512-8A1WGGvsKbwSEKoa1y6yBHgOBgv/4hCMo01HJv6BR9ApBjsjpBjXG3ltfRq293j9NF8tSu6gQMs7jrc2uVXZCg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.13.0" + } + }, + "node_modules/@angular/forms": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.4.tgz", + "integrity": "sha512-rf8KcgV1C4UVnpiyzTKihHdvDTv2tYH6k2406+HXL3ebP6bpIWsUsfxn08k+7gGELcLm7laFUdQBAwk3Ti5g3Q==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.4", + "@angular/core": "16.2.4", + "@angular/platform-browser": "16.2.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.4.tgz", + "integrity": "sha512-1Mw7bD1TE1XtrMLPhqHjvd/TIHY9dEEnDzTHWajhaj4PCQ+eh4jF9X4mzU5K2RNJjbyTNf0ikbg18RGZSyHtpw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/animations": "16.2.4", + "@angular/common": "16.2.4", + "@angular/core": "16.2.4" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.4.tgz", + "integrity": "sha512-/xSRRX+lKj+7cIQIkdKWfbfAYNNOQoC1Qq3dehLeld9si0gxrL6N03y8UaSd7CTo96JlNxdpzI+LoE44bRQs8A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.4", + "@angular/compiler": "16.2.4", + "@angular/core": "16.2.4", + "@angular/platform-browser": "16.2.4" + } + }, + "node_modules/@angular/router": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.4.tgz", + "integrity": "sha512-xx/pVq/NFGxiJzqWdQxYJI/2l3vsk7tCgGca8HyvJSy2IQyAqQ1RkVyDjb4aWiJyCDFxObSDdA+uYAdJXuVrqw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.4", + "@angular/core": "16.2.4", + "@angular/platform-browser": "16.2.4", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "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/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "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.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5", + "@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/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-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.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "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.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "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.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "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.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.15.tgz", + "integrity": "sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.15" + }, + "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.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@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.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", + "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.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", + "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/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/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "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-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "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-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "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-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-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-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.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@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.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "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.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "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.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "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-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.15", + "@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.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "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.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "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.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "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-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.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@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.22.7", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@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.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@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.5", + "@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.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "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", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@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/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.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.15.tgz", + "integrity": "sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.15.tgz", + "integrity": "sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.15", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "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/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@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.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@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/@ngneat/overview": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@ngneat/overview/-/overview-5.1.1.tgz", + "integrity": "sha512-Dz7yylhS08Mo+A8SXo7KyJBJMxD18Oq/G5v/ndvd5C8Gi3uOrAiXUjxvqRCPMxrg03FlkvEsD5/4TvMKtrUfAQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": ">=16" + } + }, + "node_modules/@ngtools/webpack": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.1.tgz", + "integrity": "sha512-fT7uwrw3Yfi7mqVHD+kTw0zDq6jZ1CaRp6pQ5b3n+qFL+a3c34Lr/kFVVWZNktfooxO9lYWRsJdTRtid25he9w==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "typescript": ">=4.9.3 <5.2", + "webpack": "^5.54.0" + } + }, + "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/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@schematics/angular": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.1.tgz", + "integrity": "sha512-e3ckgvSv+OA+4xUBpOqVOvNM8FqY/yXaWqs/Ob0uQ/zPL1iVa/MCAoB25KqYQPnq21hEwE4zqIIQFKasKBIqMA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.1", + "@angular-devkit/schematics": "16.2.1", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/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/@tufjs/models/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/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.14", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.14.tgz", + "integrity": "sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "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.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.5.tgz", + "integrity": "sha512-9YHUdvuNDDRJYXZwHqSsO72Ok0vmqoJbNn73ttyITQp/VA60SarnZ+MPLD37rJAhVoKp+9BWOvJP5tHIRfZylQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.198", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.198.tgz", + "integrity": "sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==", + "dev": true + }, + "node_modules/@types/lodash-es": { + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz", + "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.5.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "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/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", + "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "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/@wessberg/ts-evaluator": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", + "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", + "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "jsdom": "^16.4.0", + "object-path": "^0.11.5", + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/wessberg/ts-evaluator?sponsor=1" + }, + "peerDependencies": { + "typescript": ">=3.2.x || >= 4.x" + } + }, + "node_modules/@wessberg/ts-evaluator/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/@wessberg/ts-evaluator/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/@wessberg/ts-evaluator/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/@wessberg/ts-evaluator/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/@wessberg/ts-evaluator/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/@wessberg/ts-evaluator/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/@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/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "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-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "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-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/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/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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-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": "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/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "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/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "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/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/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/autoprefixer": { + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz", + "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001520", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "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.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.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/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "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/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/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "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/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "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.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "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/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/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/cacache/node_modules/glob": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/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/cacache/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001529", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001529.tgz", + "integrity": "sha512-n2pUQYGAkrLG4QYj2desAh+NqsJpHbNmVZz87imptDdxLAtjxary7Df/psdfyDGmskJK/9Dt9cPnx5RZ3CU4Og==", + "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": "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/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "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/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "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/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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/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/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "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/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/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/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "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/connect/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/connect/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/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "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": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "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, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/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/core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.10" + }, + "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/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.4.tgz", + "integrity": "sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/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/cosmiconfig/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/critters": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.20.tgz", + "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/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/critters/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/critters/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/critters/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/critters/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/critters/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/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/cross-spawn/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/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "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/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/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-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/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "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/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "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/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "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/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/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/electron-to-chromium": { + "version": "1.4.512", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.512.tgz", + "integrity": "sha512-1W8wRbYlQE4ph7eoj3TJ+uqwO6+xvAE/L+KGU7WTQQvX3tnSIGZAb90MTsMoJqzntamiwJhBAj4WZmygXhsOUg==", + "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/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/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, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.2.tgz", + "integrity": "sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "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/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/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "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, + "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/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", + "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "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/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-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/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/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "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/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "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.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/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/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "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.11.0", + "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/express/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/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/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/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/express/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/express/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/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "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/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/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/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.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "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/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "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/fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "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-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/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "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.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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/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/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": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/guess-parser": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", + "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", + "dev": true, + "dependencies": { + "@wessberg/ts-evaluator": "0.0.27" + }, + "peerDependencies": { + "typescript": ">=3.7.5" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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/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-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "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-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "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/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "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-errors/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/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-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "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/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "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/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.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/ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/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/ignore-walk/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/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, + "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/import-fresh/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/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "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/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-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-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-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "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-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": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-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-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 + }, + "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/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "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/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/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/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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/istanbul-lib-report/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/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", + "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", + "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/jasmine-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", + "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", + "dev": true + }, + "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/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/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/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "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": "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/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-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/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/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/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/karma": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", + "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/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/karma/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/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": 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/less/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, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/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, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/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, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/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": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "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/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "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/magic-string": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "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": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "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/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "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.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/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/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/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/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/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/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/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/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/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/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/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/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": 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, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/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, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "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, + "optional": 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": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^11.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "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, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/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/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/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.2.0.tgz", + "integrity": "sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.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/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "dev": true, + "engines": { + "node": ">= 10.12.0" + } + }, + "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/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/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/ora/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/ora/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/ora/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/ora/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/ora/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/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "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/p-retry/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/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "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-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, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dev": true, + "dependencies": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/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, + "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/piscina": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.0.0.tgz", + "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", + "dev": true, + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/primeicons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", + "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" + }, + "node_modules/primeng": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-16.3.1.tgz", + "integrity": "sha512-7HdAhng5Kj1nJ4KaXZyQousw/0VCQMzq4AyVt4HD+2fl52Bl13WZPV5a+P7SpMKOXVTEDed3U6EeAxDRpbu7iw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^16.2.0", + "@angular/core": "^16.2.0", + "@angular/forms": "^16.2.0", + "rxjs": "^6.0.0 || ^7.8.1", + "zone.js": "~0.13.0" + } + }, + "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/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "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-addr/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/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 + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "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/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", + "dev": true, + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/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/read-package-json/node_modules/glob": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/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/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/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "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.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "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/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.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": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/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/resolve-url-loader/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/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.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "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/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.0.tgz", + "integrity": "sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.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/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "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.64.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", + "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", + "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.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/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.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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/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/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/send/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/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-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-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "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/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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/sigstore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dev": true, + "dependencies": { + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "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/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "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/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "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/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-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", + "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "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/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "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-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/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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/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/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/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/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": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/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/terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "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-webpack-plugin/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/terser-webpack-plugin/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/terser-webpack-plugin/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/terser-webpack-plugin/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/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "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.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.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/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "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/tuf-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", + "dev": true, + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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/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/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "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/ua-parser-js": { + "version": "0.7.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", + "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "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/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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/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.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/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/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "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/vite": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.7.tgz", + "integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.26", + "rollup": "^3.25.2" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "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.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", + "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", + "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-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "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.5", + "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/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.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.0.tgz", + "integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==", + "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-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "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/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/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/webpack/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/webpack/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/webpack/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/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/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/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": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "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/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zone.js": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.1.tgz", + "integrity": "sha512-+bIeDAFEBYuXRuU3qGQvzdPap+N1zjM4KkBAiiQuVVCrHrhjDuY6VkUhNa5+U27+9w0q3fbKiMCbpJ0XzMmSWA==", + "dependencies": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..86a9182 --- /dev/null +++ b/package.json @@ -0,0 +1,50 @@ +{ + "name": "angular-on-push-strategy", + "version": "0.0.1", + "description": "Visual examples representing change detection with OnPush strategy", + "author": "Marin Muštra", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "build:prod": "ng build --configuration production --base-href https://mmustra.github.io/angular-on-push-strategy/", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^16.2.0", + "@angular/common": "^16.2.0", + "@angular/compiler": "^16.2.0", + "@angular/core": "^16.2.0", + "@angular/forms": "^16.2.0", + "@angular/platform-browser": "^16.2.0", + "@angular/platform-browser-dynamic": "^16.2.0", + "@angular/router": "^16.2.0", + "@ngneat/overview": "^5.1.1", + "lodash-es": "^4.17.21", + "primeicons": "^6.0.1", + "primeng": "^16.3.1", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.13.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.2.1", + "@angular/cli": "~16.2.1", + "@angular/compiler-cli": "^16.2.0", + "@types/jasmine": "~4.3.0", + "@types/lodash-es": "^4.17.9", + "autoprefixer": "^10.4.15", + "jasmine-core": "~4.6.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "postcss": "^8.4.29", + "tailwindcss": "^3.3.3", + "typescript": "~5.1.3" + } +} diff --git a/resources/angular.png b/resources/angular.png new file mode 100644 index 0000000000000000000000000000000000000000..07041aae5d8ae0d669309ef05fe1539317e612bc GIT binary patch literal 2021 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 literal 0 HcmV?d00001 diff --git a/resources/primeng.png b/resources/primeng.png new file mode 100644 index 0000000000000000000000000000000000000000..1238ba9d9c33fc8df425cea32cacf1681e74fd46 GIT binary patch literal 2693 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 literal 0 HcmV?d00001 diff --git a/resources/rxjs.png b/resources/rxjs.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5d6bb5a8d84459879a79df278d75e1f7cdd016 GIT binary patch literal 3590 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 M07*qoM6N<$f@?s{*Z=?k literal 0 HcmV?d00001 diff --git a/resources/tailwind.png b/resources/tailwind.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a67440cec3fd003244f081615d8fa5801e7dbd GIT binary patch literal 1253 zcmVV_H zg((qC8=;|zCjN;Hv`7|0mAJ5*HUS}RHKJ{8Bec*g0_{TD%xe}|D7bK;RY4bmmROXM zLXtQ4o-SSz)aJ!E^QLY(zukN9&iBpt=FYk2UdYJE$jHdZK*BIgO{||_W8Ug^Rhm@U zB*HpfG6GbY5#gE&Q`V7*QNlZEd8ZPjji9D3(!*BRso<4l43SmFt2`MxkwPG+T!G%a z-?%=~UyaaFY6t)YPlTQGkzUwq{GH|AM_EA*M*bFY7*kjv-;yZEo_uqIg>8#} z-Go)T7hGvvGweb?~c_TM;WLz+8R4Z7eP&>(Nhmx>HeN@_G#nyFn!X^wZ{&!Ki}LiSK-_`TjZZw ziT-?Z!-B||7AjOC1W<^0q{Iv0T6T<7FTLDhNMS)N zm9rJOi$-;qC=XJSoUZfa*wTk*76jmQ#c!9N_oUT*VK)XvW1RX<1cC)_Wk z#1{?HN3g*}+HavvN~kgp%vojpZ%W`uuz52vBv1+ z0qcJd5|rG|r^RDIb{oIP!il5{mq3+K2EH?Ts*fPG^`aD(gX}YYhX+Se65X1Q^vAsf zwQ1;;=vmlntELlT2@&e8(Xm4@!weF5eFU$@^>YB`BK>Hwb(ll>!GV6Y>~NJ`1`Z2M z#T8x@ub(wK)<#fM>NS5vdaSZg6=NZnp z)AB?SXd&g^#NqlFWPm|&3&byPah742x|X|bW93+f%t}nX>-HE zJqM~$>X)jdD7Sw1;c_&} zYU76qAHL&Cw}m5`V8djU8HN5+Uhb1}?gLV6<3A**nX}qql + + + + + + + + + diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..cb59532 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,57 @@ +import { filter } from 'rxjs'; + +import { + ChangeDetectionStrategy, + Component, + DestroyRef, + QueryList, + ViewChildren, +} from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { NavigationEnd, Router, RouterOutlet } from '@angular/router'; +import { TeleportModule, TeleportOutletDirective } from '@ngneat/overview'; + +import { LayoutComponent } from './shared/components/ui/layout/layout.component'; +import { MenuComponent } from './shared/components/ui/menu/menu.component'; +import { AnimationService } from './shared/services/animation.service'; +import { LogService } from './shared/services/log.service'; + +@Component({ + selector: 'mm-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'], + standalone: true, + imports: [RouterOutlet, TeleportModule, LayoutComponent, MenuComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class AppComponent { + @ViewChildren(TeleportOutletDirective) + teleportOutlet: QueryList; + + constructor( + private router: Router, + private animationService: AnimationService, + private logService: LogService, + private destroyRef: DestroyRef + ) { + this.watchRoutes(); + } + + private watchRoutes(): void { + this.router.events + .pipe( + filter((event) => event instanceof NavigationEnd), + takeUntilDestroyed(this.destroyRef) + ) + .subscribe({ + next: (event) => { + this.logService.break(); + this.logService.log( + 'NEW ROUTE:', + (event as NavigationEnd).urlAfterRedirects + ); + this.animationService.reset(); + }, + }); + } +} diff --git a/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.css b/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.html b/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.html new file mode 100644 index 0000000..824cd32 --- /dev/null +++ b/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.html @@ -0,0 +1,15 @@ +

Async event with AsyncPipe

+ +

+ All inputs have their messages initialized with + setTimeout() which will on execution emit message via observable + bound on template with AsyncPipe. +

+ +
    +
  1. Sets own message via observable after 2 seconds
  2. +
  3. Sets own message via observable after 4 seconds
  4. +
  5. Sets own message via observable after 6 seconds
  6. +
+ + diff --git a/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.ts b/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.ts new file mode 100644 index 0000000..37f1b42 --- /dev/null +++ b/src/app/cases/case-async-pipe/case-async-pipe-example-1/case-async-pipe-example-1.component.ts @@ -0,0 +1,65 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { CardContainerComponent } from '../../../shared/components/card-container/card-container.component'; +import { CardComponent } from '../../../shared/components/card/card.component'; +import { Config } from '../../../shared/components/config/config.component'; + +@Component({ + selector: 'mm-case-async-pipe-example-1', + templateUrl: './case-async-pipe-example-1.component.html', + styleUrls: ['./case-async-pipe-example-1.component.css'], + standalone: true, + imports: [CommonModule, CardContainerComponent, CardComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseAsyncPipeExample1Component { + config: Config; + + constructor() { + this.config = new Config({ + name: 'Root', + badge: 'A', + initialData: { data: { message: 'Initial message' }, timeoutMS: 2000 }, + receiver: { isActive: true, isAsyncPipe: true }, + children: [ + new Config({ + name: 'Node-1', + badge: 'B', + layout: 'col', + receiver: { isActive: true, isAsyncPipe: true }, + initialData: { + data: { message: 'Initial message' }, + timeoutMS: 4000, + }, + children: [ + new Config({ + name: 'Node-1-1', + }), + new Config({ + name: 'Node-1-2', + }), + ], + }), + new Config({ + name: 'Node-2', + layout: 'col', + children: [ + new Config({ + name: 'Node-2-1', + badge: 'C', + initialData: { + data: { message: 'Initial message' }, + timeoutMS: 6000, + }, + receiver: { isActive: true, isAsyncPipe: true }, + }), + new Config({ + name: 'Node-2-2', + }), + ], + }), + ], + }); + } +} diff --git a/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.css b/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.html b/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.html new file mode 100644 index 0000000..fbf9d29 --- /dev/null +++ b/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.html @@ -0,0 +1,21 @@ +

Service with AsyncPipe

+ +

+ Only Node-2 has it's initial data set with setTimeout(). Click + will send message via service, and target listener will push that message via + observable bound on template via AsyncPipe. +

+ +

Reload example couple of times and try different scenarios.

+ +
    +
  1. + Emits message via service to Node-2-1, AsyncPipe triggers change detector +
  2. + +
  3. + Emits message via service to Node-2-2, AsyncPipe triggers change detector
    +
  4. +
+ + diff --git a/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.ts b/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.ts new file mode 100644 index 0000000..0d99c00 --- /dev/null +++ b/src/app/cases/case-async-pipe/case-async-pipe-example-2/case-async-pipe-example-2.component.ts @@ -0,0 +1,58 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { CardContainerComponent } from '../../../shared/components/card-container/card-container.component'; +import { CardComponent } from '../../../shared/components/card/card.component'; +import { Config } from '../../../shared/components/config/config.component'; + +@Component({ + selector: 'mm-case-async-pipe-example-2', + templateUrl: './case-async-pipe-example-2.component.html', + styleUrls: ['./case-async-pipe-example-2.component.css'], + standalone: true, + imports: [CommonModule, CardContainerComponent, CardComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseAsyncPipeExample2Component { + config: Config; + + constructor() { + this.config = new Config({ + name: 'Root', + children: [ + new Config({ + name: 'Node-1', + layout: 'col', + badge: 'A', + sender: { isActive: true, options: { cardName: 'Node-2-1' } }, + children: [ + new Config({ + name: 'Node-1-1', + badge: 'B', + sender: { isActive: true, options: { cardName: 'Node-2-2' } }, + }), + new Config({ + name: 'Node-1-2', + }), + ], + }), + new Config({ + name: 'Node-2', + layout: 'col', + initialData: { data: { message: 'Initial Data' }, timeoutMS: 0 }, + receiver: { isActive: true }, + children: [ + new Config({ + name: 'Node-2-1', + receiver: { isActive: true, isAsyncPipe: true }, + }), + new Config({ + name: 'Node-2-2', + receiver: { isActive: true, isAsyncPipe: true }, + }), + ], + }), + ], + }); + } +} diff --git a/src/app/cases/case-async-pipe/case-async-pipe-routes.ts b/src/app/cases/case-async-pipe/case-async-pipe-routes.ts new file mode 100644 index 0000000..a196e85 --- /dev/null +++ b/src/app/cases/case-async-pipe/case-async-pipe-routes.ts @@ -0,0 +1,27 @@ +import { AppRoute } from '../../../routes'; +import { CaseAsyncPipeExample1Component } from './case-async-pipe-example-1/case-async-pipe-example-1.component'; +import { CaseAsyncPipeExample2Component } from './case-async-pipe-example-2/case-async-pipe-example-2.component'; +import { CaseAsyncPipeComponent } from './case-async-pipe.component'; + +export const caseAsyncPipeRoutes: AppRoute[] = [ + { + path: 'case-async-pipe', + title: 'OnP: Case AsyncPipe', + data: { menuName: 'Case AsyncPipe' }, + component: CaseAsyncPipeComponent, + children: [ + { + path: 'example-1', + component: CaseAsyncPipeExample1Component, + }, + { + path: 'example-2', + component: CaseAsyncPipeExample2Component, + }, + { + path: '**', + redirectTo: 'example-1', + }, + ], + }, +]; diff --git a/src/app/cases/case-async-pipe/case-async-pipe.component.css b/src/app/cases/case-async-pipe/case-async-pipe.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-async-pipe/case-async-pipe.component.html b/src/app/cases/case-async-pipe/case-async-pipe.component.html new file mode 100644 index 0000000..d033cbb --- /dev/null +++ b/src/app/cases/case-async-pipe/case-async-pipe.component.html @@ -0,0 +1,14 @@ +
+

AsyncPipe with OnPush

+ +

+ Change detection will be triggered whenever AsyncPipe consumes new value - + internally it will call markForCheck(). Flow will go form root + to target component and will trigger change detector for each component on + main path. +

+ + +
diff --git a/src/app/cases/case-async-pipe/case-async-pipe.component.ts b/src/app/cases/case-async-pipe/case-async-pipe.component.ts new file mode 100644 index 0000000..b7e4bfe --- /dev/null +++ b/src/app/cases/case-async-pipe/case-async-pipe.component.ts @@ -0,0 +1,23 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { AppRoute } from '../../../routes'; +import { ExampleContainerComponent } from '../../shared/components/example-container/example-container.component'; +import { caseAsyncPipeRoutes } from './case-async-pipe-routes'; + +@Component({ + selector: 'mm-case-async-pipe', + templateUrl: './case-async-pipe.component.html', + styleUrls: ['./case-async-pipe.component.css'], + standalone: true, + imports: [CommonModule, RouterModule, ExampleContainerComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseAsyncPipeComponent { + routes: AppRoute[]; + + constructor() { + this.routes = caseAsyncPipeRoutes[0].children; + } +} diff --git a/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.css b/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.html b/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.html new file mode 100644 index 0000000..74040c4 --- /dev/null +++ b/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.html @@ -0,0 +1,14 @@ +

Parent to child flow

+ +

+ Click and observe DoCheck flow. Note that change detector is only on main + path. +

+ +
    +
  1. 3 DoChecks, 1 change detector check
  2. +
  3. 5 DoChecks, 3 change detector checks
  4. +
  5. 5 DoChecks, 2 change detector checks
  6. +
+ + diff --git a/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.ts b/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.ts new file mode 100644 index 0000000..5b208c0 --- /dev/null +++ b/src/app/cases/case-events/case-events-example-1/case-events-example-1.component.ts @@ -0,0 +1,56 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { CardContainerComponent } from '../../../shared/components/card-container/card-container.component'; +import { CardComponent } from '../../../shared/components/card/card.component'; +import { Config } from '../../../shared/components/config/config.component'; + +@Component({ + selector: 'mm-case-events-example-1', + templateUrl: './case-events-example-1.component.html', + styleUrls: ['./case-events-example-1.component.css'], + standalone: true, + imports: [CommonModule, CardContainerComponent, CardComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseEventsExample1Component { + config: Config; + + constructor() { + this.config = new Config({ + name: 'Root', + badge: 'A', + sender: { isActive: true }, + children: [ + new Config({ + name: 'Node-1', + layout: 'col', + children: [ + new Config({ + name: 'Node-1-1', + badge: 'B', + sender: { isActive: true }, + }), + new Config({ + name: 'Node-1-2', + }), + ], + }), + new Config({ + name: 'Node-2', + layout: 'col', + badge: 'C', + sender: { isActive: true }, + children: [ + new Config({ + name: 'Node-2-1', + }), + new Config({ + name: 'Node-2-2', + }), + ], + }), + ], + }); + } +} diff --git a/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.css b/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.html b/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.html new file mode 100644 index 0000000..214b47a --- /dev/null +++ b/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.html @@ -0,0 +1,22 @@ +

Main vs Side path

+ +

+ Every input is initialized with message using + setTimeout(), which doesn't render the message due to OnPush + strategy. Click and observe change detector being triggered on main vs side + path. +

+ +

Reload example couple of times and try different scenarios.

+ +
    +
  1. Triggers main path: Root → Node-1 → Node-1-1
  2. +
  3. + Triggers main path: Root → Node-2 → Node-2-2 +
      +
    • Node-2-1 change detector will never trigger
    • +
    +
  4. +
+ + diff --git a/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.ts b/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.ts new file mode 100644 index 0000000..003f4d3 --- /dev/null +++ b/src/app/cases/case-events/case-events-example-2/case-events-example-2.component.ts @@ -0,0 +1,65 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { CardContainerComponent } from '../../../shared/components/card-container/card-container.component'; +import { CardComponent } from '../../../shared/components/card/card.component'; +import { Config } from '../../../shared/components/config/config.component'; + +@Component({ + selector: 'mm-case-events-example-2', + templateUrl: './case-events-example-2.component.html', + styleUrls: ['./case-events-example-2.component.css'], + standalone: true, + imports: [CommonModule, CardContainerComponent, CardComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseEventsExample2Component { + config: Config; + + constructor() { + this.config = new Config({ + name: 'Root', + initialData: { data: { message: 'Initial message' }, timeoutMS: 0 }, + receiver: { isActive: true }, + children: [ + new Config({ + name: 'Node-1', + layout: 'col', + initialData: { data: { message: 'Initial message' }, timeoutMS: 0 }, + receiver: { isActive: true }, + children: [ + new Config({ + name: 'Node-1-1', + badge: 'A', + sender: { isActive: true }, + }), + ], + }), + new Config({ + name: 'Node-2', + layout: 'col', + children: [ + new Config({ + name: 'Node-2-1', + initialData: { + data: { message: 'On side path!' }, + timeoutMS: 0, + }, + receiver: { isActive: true }, + }), + new Config({ + name: 'Node-2-2', + badge: 'B', + initialData: { + data: { message: 'Initial message' }, + timeoutMS: 0, + }, + sender: { isActive: true }, + receiver: { isActive: true }, + }), + ], + }), + ], + }); + } +} diff --git a/src/app/cases/case-events/case-events-routes.ts b/src/app/cases/case-events/case-events-routes.ts new file mode 100644 index 0000000..2c99bc9 --- /dev/null +++ b/src/app/cases/case-events/case-events-routes.ts @@ -0,0 +1,26 @@ +import { AppRoute } from '../../../routes'; +import { CaseEventsExample1Component } from './case-events-example-1/case-events-example-1.component'; +import { CaseEventsExample2Component } from './case-events-example-2/case-events-example-2.component'; +import { CaseEventsComponent } from './case-events.component'; + +export const caseEventsRoutes: AppRoute[] = [ + { + path: 'case-events', + title: 'OnP: Case Events', + component: CaseEventsComponent, + children: [ + { + path: 'example-1', + component: CaseEventsExample1Component, + }, + { + path: 'example-2', + component: CaseEventsExample2Component, + }, + { + path: '**', + redirectTo: 'example-1', + }, + ], + }, +]; diff --git a/src/app/cases/case-events/case-events.component.css b/src/app/cases/case-events/case-events.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-events/case-events.component.html b/src/app/cases/case-events/case-events.component.html new file mode 100644 index 0000000..4d5d4d7 --- /dev/null +++ b/src/app/cases/case-events/case-events.component.html @@ -0,0 +1,19 @@ +
+

Events with OnPush

+ +

+ Change detection will be triggered by event like click. Flow will go form + root to clicked component and will trigger change detector for each + component on main path. When change detector is triggered it will compare + diff and render if needed. +

+ +

+ Note that DoCheck hook will be called for each component on main path and + current level siblings/children - side paths. +

+ + +
diff --git a/src/app/cases/case-events/case-events.component.ts b/src/app/cases/case-events/case-events.component.ts new file mode 100644 index 0000000..a8eccc0 --- /dev/null +++ b/src/app/cases/case-events/case-events.component.ts @@ -0,0 +1,23 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { AppRoute } from '../../../routes'; +import { ExampleContainerComponent } from '../../shared/components/example-container/example-container.component'; +import { caseEventsRoutes } from './case-events-routes'; + +@Component({ + selector: 'mm-case-events', + templateUrl: './case-events.component.html', + styleUrls: ['./case-events.component.css'], + standalone: true, + imports: [CommonModule, RouterModule, ExampleContainerComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseEventsComponent { + routes: AppRoute[]; + + constructor() { + this.routes = caseEventsRoutes[0].children; + } +} diff --git a/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.css b/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.html b/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.html new file mode 100644 index 0000000..61cfad8 --- /dev/null +++ b/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.html @@ -0,0 +1,22 @@ +

Prop drilling with reference vs mutation

+ +

+ All messages from senders are emitted to Root, then passed down to target Node + - prop drilling. +

+ +

+ Observe how you can't directly update Node-2 message. It is going to be + updated only if other message is passing to Node-2-1 or Node-2-2. This is + happening as one of @input reference changes in Node-2 due to prop drilling. +

+ +

Reload example couple of times and try different scenarios.

+ +
    +
  1. Emits message and mutates data object of Node-2
  2. +
  3. Emits message and changes data reference of Node-2-1
  4. +
  5. Emits message and changes data reference of Node-2-2
  6. +
+ + diff --git a/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.ts b/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.ts new file mode 100644 index 0000000..772fb4a --- /dev/null +++ b/src/app/cases/case-input/case-events-example-1/case-input-example-1.component.ts @@ -0,0 +1,62 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { CardContainerComponent } from '../../../shared/components/card-container/card-container.component'; +import { CardComponent } from '../../../shared/components/card/card.component'; +import { Config } from '../../../shared/components/config/config.component'; + +@Component({ + selector: 'mm-case-input-example-1', + templateUrl: './case-input-example-1.component.html', + styleUrls: ['./case-input-example-1.component.css'], + standalone: true, + imports: [CommonModule, CardContainerComponent, CardComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseInputExample1Component { + config: Config; + + constructor() { + this.config = new Config({ + name: 'Root', + children: [ + new Config({ + name: 'Node-1', + layout: 'col', + badge: 'A', + sender: { + isActive: true, + options: { path: [-1, 1], changeType: 'mutation' }, + }, + children: [ + new Config({ + name: 'Node-1-1', + badge: 'B', + sender: { isActive: true, options: { path: [-1, -1, 1, 0] } }, + }), + new Config({ + name: 'Node-1-2', + badge: 'C', + sender: { isActive: true, options: { path: [-1, -1, 1, 1] } }, + }), + ], + }), + new Config({ + name: 'Node-2', + layout: 'col', + receiver: { isActive: true }, + children: [ + new Config({ + name: 'Node-2-1', + receiver: { isActive: true }, + }), + new Config({ + name: 'Node-2-2', + receiver: { isActive: true }, + }), + ], + }), + ], + }); + } +} diff --git a/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.css b/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.html b/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.html new file mode 100644 index 0000000..59ba5a2 --- /dev/null +++ b/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.html @@ -0,0 +1,27 @@ +

Service communication and @Input

+ +

+ All messages from senders are emitted to parent Node via service, which then + passes it via @Input to child node. Some receivers have their messages + initialized with setTimeout(). +

+ +

+ Service communication via observables don't trigger change detector. Only the + part where Node is passing message by changing @Input reference does. +

+ +

Reload example couple of times and try different scenarios.

+ +
    +
  1. + Emits message via service to Node-2-2, which passes it via @Input to + Node-2-2-1 +
  2. +
  3. + Emits message via service to Node-2-1, which passes it via @Input to + Node-2-1-1 +
  4. +
+ + diff --git a/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.ts b/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.ts new file mode 100644 index 0000000..de81ab5 --- /dev/null +++ b/src/app/cases/case-input/case-events-example-2/case-input-example-2.component.ts @@ -0,0 +1,83 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { CardContainerComponent } from '../../../shared/components/card-container/card-container.component'; +import { CardComponent } from '../../../shared/components/card/card.component'; +import { Config } from '../../../shared/components/config/config.component'; + +@Component({ + selector: 'mm-case-input-example-2', + templateUrl: './case-input-example-2.component.html', + styleUrls: ['./case-input-example-2.component.css'], + standalone: true, + imports: [CommonModule, CardContainerComponent, CardComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseInputExample2Component { + config: Config; + + constructor() { + this.config = new Config({ + name: 'Root', + badge: 'A', + sender: { + isActive: true, + options: { cardName: 'Node-2-2', path: [0] }, + }, + children: [ + new Config({ + name: 'Node-1', + badge: 'B', + layout: 'col', + sender: { + isActive: true, + options: { cardName: 'Node-2-1', path: [0] }, + }, + }), + new Config({ + name: 'Node-2', + layout: 'col', + initialData: { data: { message: 'Initial message' }, timeoutMS: 0 }, + receiver: { isActive: true }, + children: [ + new Config({ + name: 'Node-2-1', + layout: 'col', + initialData: { + data: { message: 'Initial message' }, + timeoutMS: 0, + }, + receiver: { isActive: true }, + children: [ + new Config({ + name: 'Node-2-1-1', + layout: 'col', + initialData: { + data: { message: 'Initial message' }, + timeoutMS: 0, + }, + receiver: { isActive: true }, + }), + ], + }), + new Config({ + name: 'Node-2-2', + layout: 'col', + initialData: { + data: { message: 'Initial message' }, + timeoutMS: 0, + }, + receiver: { isActive: true }, + children: [ + new Config({ + name: 'Node-2-2-1', + receiver: { isActive: true }, + }), + ], + }), + ], + }), + ], + }); + } +} diff --git a/src/app/cases/case-input/case-input-routes.ts b/src/app/cases/case-input/case-input-routes.ts new file mode 100644 index 0000000..e5a7a47 --- /dev/null +++ b/src/app/cases/case-input/case-input-routes.ts @@ -0,0 +1,27 @@ +import { AppRoute } from '../../../routes'; +import { CaseInputExample1Component } from './case-events-example-1/case-input-example-1.component'; +import { CaseInputExample2Component } from './case-events-example-2/case-input-example-2.component'; +import { CaseInputComponent } from './case-input.component'; + +export const caseInputRoutes: AppRoute[] = [ + { + path: 'case-input', + title: 'OnP: Case @Input()', + data: { menuName: 'Case @Input()' }, + component: CaseInputComponent, + children: [ + { + path: 'example-1', + component: CaseInputExample1Component, + }, + { + path: 'example-2', + component: CaseInputExample2Component, + }, + { + path: '**', + redirectTo: 'example-1', + }, + ], + }, +]; diff --git a/src/app/cases/case-input/case-input.component.css b/src/app/cases/case-input/case-input.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cases/case-input/case-input.component.html b/src/app/cases/case-input/case-input.component.html new file mode 100644 index 0000000..004c8f1 --- /dev/null +++ b/src/app/cases/case-input/case-input.component.html @@ -0,0 +1,13 @@ +
+

@Input() with OnPush

+ +

+ Change detection will be triggered by @Input() reference + change. Flow will go form root to target component and will trigger change + detector for each component on main path. +

+ + + + +
diff --git a/src/app/cases/case-input/case-input.component.ts b/src/app/cases/case-input/case-input.component.ts new file mode 100644 index 0000000..6562fd5 --- /dev/null +++ b/src/app/cases/case-input/case-input.component.ts @@ -0,0 +1,23 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { AppRoute } from '../../../routes'; +import { ExampleContainerComponent } from '../../shared/components/example-container/example-container.component'; +import { caseInputRoutes } from './case-input-routes'; + +@Component({ + selector: 'mm-case-input', + templateUrl: './case-input.component.html', + styleUrls: ['./case-input.component.css'], + standalone: true, + imports: [CommonModule, RouterModule, ExampleContainerComponent], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CaseInputComponent { + routes: AppRoute[]; + + constructor() { + this.routes = caseInputRoutes[0].children; + } +} diff --git a/src/app/cases/cases-routes.ts b/src/app/cases/cases-routes.ts new file mode 100644 index 0000000..f4bcb8e --- /dev/null +++ b/src/app/cases/cases-routes.ts @@ -0,0 +1,10 @@ +import { AppRoute } from '../../routes'; +import { caseAsyncPipeRoutes } from './case-async-pipe/case-async-pipe-routes'; +import { caseEventsRoutes } from './case-events/case-events-routes'; +import { caseInputRoutes } from './case-input/case-input-routes'; + +export const casesRoutes: AppRoute[] = [ + ...caseEventsRoutes, + ...caseInputRoutes, + ...caseAsyncPipeRoutes, +]; diff --git a/src/app/home/home-routes.ts b/src/app/home/home-routes.ts new file mode 100644 index 0000000..1892158 --- /dev/null +++ b/src/app/home/home-routes.ts @@ -0,0 +1,11 @@ +import { AppRoute } from '../../routes'; +import { HomeComponent } from './home.component'; + +export const homeRoutes: AppRoute[] = [ + { + title: 'OnP: Home', + data: { menuName: '', menuIcon: 'pi-home', menuExactMatch: true }, + path: '', + component: HomeComponent, + }, +]; diff --git a/src/app/home/home.component.css b/src/app/home/home.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html new file mode 100644 index 0000000..c3bcaba --- /dev/null +++ b/src/app/home/home.component.html @@ -0,0 +1,20 @@ +
+

Change detection and OnPush strategy

+ +

Usage

+ +
    +
  • Open Console from DevTools
  • +
  • Click on app tabs, tryout examples
  • +
+ +

+ Example will show animation and logs. You can reload the example and change + the speed of animation. Every button click in example will reset the + animation/logs. +

+ + + + +
diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts new file mode 100644 index 0000000..5559469 --- /dev/null +++ b/src/app/home/home.component.ts @@ -0,0 +1,15 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { LegendComponent } from './legend/legend.component'; +import { ReferencesComponent } from './references/references.component'; + +@Component({ + selector: 'app-home', + standalone: true, + imports: [CommonModule, LegendComponent, ReferencesComponent], + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class HomeComponent {} diff --git a/src/app/home/legend/legend-item/legend-item.component.css b/src/app/home/legend/legend-item/legend-item.component.css new file mode 100644 index 0000000..698bb93 --- /dev/null +++ b/src/app/home/legend/legend-item/legend-item.component.css @@ -0,0 +1,11 @@ +.card-container { + min-width: 40px; + height: 25px; +} + +.card-container .card { + width: 100%; + height: 100%; + margin: unset; + padding: unset; +} diff --git a/src/app/home/legend/legend-item/legend-item.component.html b/src/app/home/legend/legend-item/legend-item.component.html new file mode 100644 index 0000000..9f78dba --- /dev/null +++ b/src/app/home/legend/legend-item/legend-item.component.html @@ -0,0 +1,7 @@ + +
+
+
+ + {{ text }} +
diff --git a/src/app/home/legend/legend-item/legend-item.component.ts b/src/app/home/legend/legend-item/legend-item.component.ts new file mode 100644 index 0000000..1c06fd0 --- /dev/null +++ b/src/app/home/legend/legend-item/legend-item.component.ts @@ -0,0 +1,37 @@ +import { CommonModule } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + ElementRef, + Input, + OnInit, +} from '@angular/core'; + +import { + StyleFactoryService, + StyleType, +} from '../../../shared/factories/style-factory.service'; + +@Component({ + selector: 'mm-legend-item', + standalone: true, + imports: [CommonModule], + templateUrl: './legend-item.component.html', + styleUrls: ['./legend-item.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class LegendItemComponent implements OnInit { + @Input({ required: true }) style: StyleType; + @Input() text: string; + + constructor(private elementRef: ElementRef) {} + + ngOnInit(): void { + const element = this.elementRef.nativeElement; + const container = element.querySelector('.card-container'); + + const { setStyle } = StyleFactoryService.createStyler(this.style); + + setStyle(container); + } +} diff --git a/src/app/home/legend/legend.component.css b/src/app/home/legend/legend.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/home/legend/legend.component.html b/src/app/home/legend/legend.component.html new file mode 100644 index 0000000..cec7a23 --- /dev/null +++ b/src/app/home/legend/legend.component.html @@ -0,0 +1,18 @@ +

Legend

+ +

Card colors

+ +

+ +

+ +

Logs

+ +

+ Will be shown in Console panel, showing each step for easier tracking and + expose details of cycles. +

diff --git a/src/app/home/legend/legend.component.ts b/src/app/home/legend/legend.component.ts new file mode 100644 index 0000000..5844afc --- /dev/null +++ b/src/app/home/legend/legend.component.ts @@ -0,0 +1,41 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { StyleType } from '../../shared/factories/style-factory.service'; +import { LegendItemComponent } from './legend-item/legend-item.component'; + +@Component({ + selector: 'mm-legend', + standalone: true, + imports: [CommonModule, LegendItemComponent], + templateUrl: './legend.component.html', + styleUrls: ['./legend.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class LegendComponent { + StyleType = StyleType; + + agendaItems: AgendaItems[]; + + constructor() { + this.agendaItems = [ + { + style: StyleType.Check, + text: 'Indicates "DoCheck" cycle for component', + }, + { + style: StyleType.Changes, + text: 'Indicates "OnChanges" cycle for component', + }, + { + style: StyleType.Render, + text: 'Indicates "Render" for component', + }, + ]; + } +} + +interface AgendaItems { + style: StyleType; + text: string; +} diff --git a/src/app/home/references/reference-link/reference-link.component.css b/src/app/home/references/reference-link/reference-link.component.css new file mode 100644 index 0000000..de11576 --- /dev/null +++ b/src/app/home/references/reference-link/reference-link.component.css @@ -0,0 +1,13 @@ +/* NOTICE FireFox height fix when in
  • */ +:host { + display: block; +} + +a { + color: revert; + text-decoration: revert; +} + +.author { + font-weight: 600; +} diff --git a/src/app/home/references/reference-link/reference-link.component.html b/src/app/home/references/reference-link/reference-link.component.html new file mode 100644 index 0000000..a4bb668 --- /dev/null +++ b/src/app/home/references/reference-link/reference-link.component.html @@ -0,0 +1,8 @@ + + {{ author }}: + {{ title }}({{ linkName }}) + diff --git a/src/app/home/references/reference-link/reference-link.component.ts b/src/app/home/references/reference-link/reference-link.component.ts new file mode 100644 index 0000000..dad2f31 --- /dev/null +++ b/src/app/home/references/reference-link/reference-link.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; + +@Component({ + selector: 'mm-reference-link', + standalone: true, + imports: [CommonModule], + templateUrl: './reference-link.component.html', + styleUrls: ['./reference-link.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ReferenceLinkComponent { + @Input() author: string; + @Input({ required: true }) title: string; + @Input({ required: true }) linkUrl: string; + @Input() linkName: string; + + constructor() { + this.author = ''; + this.title = ''; + this.linkUrl = ''; + this.linkName = 'link'; + } +} + +export interface ReferenceLink { + author?: string; + title: string; + linkUrl: string; + linkName?: string; +} diff --git a/src/app/home/references/references.component.css b/src/app/home/references/references.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/home/references/references.component.html b/src/app/home/references/references.component.html new file mode 100644 index 0000000..49559d5 --- /dev/null +++ b/src/app/home/references/references.component.html @@ -0,0 +1,16 @@ +

    References

    + +

    + Some of these articles can provide more insights on all the Angular pieces + that are involved in change detection with OnPush strategy. +

    + +
      +
    • + +
    • +
    diff --git a/src/app/home/references/references.component.ts b/src/app/home/references/references.component.ts new file mode 100644 index 0000000..4294424 --- /dev/null +++ b/src/app/home/references/references.component.ts @@ -0,0 +1,51 @@ +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { + ReferenceLink, + ReferenceLinkComponent, +} from './reference-link/reference-link.component'; + +@Component({ + selector: 'mm-references', + standalone: true, + imports: [CommonModule, ReferenceLinkComponent], + templateUrl: './references.component.html', + styleUrls: ['./references.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ReferencesComponent { + references: ReferenceLink[]; + + constructor() { + this.references = [ + { + author: 'Angular', + title: 'Unidirectional data flow', + linkUrl: 'https://angular.io/guide/glossary#unidirectional-data-flow', + }, + { + author: 'Angular', + title: 'View hierarchy', + linkUrl: 'https://angular.io/guide/glossary#view-hierarchy', + }, + { + author: 'Deepak Pandey', + title: 'Understanding Angular Views', + linkUrl: + 'https://javascript.plainenglish.io/views-in-angular-390c3906b988', + }, + { + author: 'Angular', + title: 'Change detection', + linkUrl: 'https://angular.io/guide/glossary#change-detection', + }, + { + author: 'Netanel Basal', + title: 'Guide to Angular onPush Change Detection', + linkUrl: + 'https://netbasal.com/a-comprehensive-guide-to-angular-onpush-change-detection-strategy-5bac493074a4', + }, + ]; + } +} diff --git a/src/app/shared/components/card-container/animation-speed/animation-speed.component.css b/src/app/shared/components/card-container/animation-speed/animation-speed.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/card-container/animation-speed/animation-speed.component.html b/src/app/shared/components/card-container/animation-speed/animation-speed.component.html new file mode 100644 index 0000000..7651c89 --- /dev/null +++ b/src/app/shared/components/card-container/animation-speed/animation-speed.component.html @@ -0,0 +1,21 @@ +
    +
    Animation
    + +
    + + + +
    +
    diff --git a/src/app/shared/components/card-container/animation-speed/animation-speed.component.ts b/src/app/shared/components/card-container/animation-speed/animation-speed.component.ts new file mode 100644 index 0000000..1ee021c --- /dev/null +++ b/src/app/shared/components/card-container/animation-speed/animation-speed.component.ts @@ -0,0 +1,54 @@ +import { + SelectButtonChangeEvent, + SelectButtonModule, +} from 'primeng/selectbutton'; +import { + ToggleButtonChangeEvent, + ToggleButtonModule, +} from 'primeng/togglebutton'; + +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { FormsModule } from '@angular/forms'; + +import { + AnimationService, + AnimationSpeed, +} from '../../../services/animation.service'; + +@Component({ + selector: 'mm-animation-speed', + templateUrl: './animation-speed.component.html', + styleUrls: ['./animation-speed.component.css'], + standalone: true, + imports: [CommonModule, FormsModule, SelectButtonModule, ToggleButtonModule], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class AnimationSpeedComponent { + isAnimationVisible: boolean; + selectedAnimationOption: boolean | AnimationSpeed; + animationOptions: AnimationOption[]; + + constructor(private animationService: AnimationService) { + this.selectedAnimationOption = this.animationService.speed; + this.isAnimationVisible = this.animationService.isVisible; + this.animationOptions = [ + { name: '0.5x', value: AnimationSpeed.Slow }, + { name: '1x', value: AnimationSpeed.Normal }, + { name: '2x', value: AnimationSpeed.Fast }, + ]; + } + + changeSpeed({ value }: SelectButtonChangeEvent): void { + this.animationService.changeSpeed(value); + } + + changeVisibility({ checked }: ToggleButtonChangeEvent): void { + this.animationService.changeVisibility(checked); + } +} + +interface AnimationOption { + name: string; + value: boolean | AnimationSpeed; +} diff --git a/src/app/shared/components/card-container/card-container.component.css b/src/app/shared/components/card-container/card-container.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/card-container/card-container.component.html b/src/app/shared/components/card-container/card-container.component.html new file mode 100644 index 0000000..757e034 --- /dev/null +++ b/src/app/shared/components/card-container/card-container.component.html @@ -0,0 +1,14 @@ + +
    + + +
    +
    + +
    + +
    diff --git a/src/app/shared/components/card-container/card-container.component.ts b/src/app/shared/components/card-container/card-container.component.ts new file mode 100644 index 0000000..8b3f8d4 --- /dev/null +++ b/src/app/shared/components/card-container/card-container.component.ts @@ -0,0 +1,72 @@ +import { ToolbarModule } from 'primeng/toolbar'; +import { Observable, ReplaySubject } from 'rxjs'; + +import { CommonModule } from '@angular/common'; +import { + AfterViewInit, + ChangeDetectionStrategy, + Component, + ComponentRef, + Input, + Self, + ViewChild, + ViewContainerRef, +} from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { TeleportModule } from '@ngneat/overview'; + +import { PayloadService } from '../../services/payload.service'; +import { CardComponent } from '../card/card.component'; +import { Config } from '../config/config.component'; +import { AnimationSpeedComponent } from './animation-speed/animation-speed.component'; +import { ReloadComponent } from './reload/reload.component'; + +@Component({ + selector: 'mm-card-container', + templateUrl: './card-container.component.html', + styleUrls: ['./card-container.component.css'], + providers: [PayloadService], + standalone: true, + imports: [ + CommonModule, + FormsModule, + ToolbarModule, + TeleportModule, + AnimationSpeedComponent, + ReloadComponent, + ], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CardContainerComponent implements AfterViewInit { + @Input() config: Config; + @ViewChild('container', { read: ViewContainerRef }) + container: ViewContainerRef; + + componentRef: ComponentRef; + container$: Observable; + + private containerSource$: ReplaySubject; + + constructor(@Self() private payloadService: PayloadService) { + this.componentRef = null; + this.containerSource$ = new ReplaySubject(1); + this.container$ = this.containerSource$.asObservable(); + } + + ngAfterViewInit(): void { + this.createComponent(); + } + + createComponent = (): void => { + this.componentRef = this.container.createComponent(CardComponent); + this.componentRef.instance.config = this.config; + this.componentRef.changeDetectorRef.detectChanges(); + const element = this.componentRef.location.nativeElement.firstChild; + this.containerSource$.next(element); + }; + + destroyComponent = (): void => { + this.componentRef.destroy(); + this.payloadService.reset(); + }; +} diff --git a/src/app/shared/components/card-container/reload/reload.component.css b/src/app/shared/components/card-container/reload/reload.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/card-container/reload/reload.component.html b/src/app/shared/components/card-container/reload/reload.component.html new file mode 100644 index 0000000..5620347 --- /dev/null +++ b/src/app/shared/components/card-container/reload/reload.component.html @@ -0,0 +1,11 @@ +
    +
    Reload
    + +
    + +
    +
    diff --git a/src/app/shared/components/card-container/reload/reload.component.ts b/src/app/shared/components/card-container/reload/reload.component.ts new file mode 100644 index 0000000..020e387 --- /dev/null +++ b/src/app/shared/components/card-container/reload/reload.component.ts @@ -0,0 +1,73 @@ +import { ButtonModule } from 'primeng/button'; +import { Observable } from 'rxjs'; + +import { CommonModule } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + DestroyRef, + Input, + OnInit, +} from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { FormsModule } from '@angular/forms'; + +import { + AnimationService, + AnimationType, +} from '../../../services/animation.service'; +import { LogService } from '../../../services/log.service'; + +@Component({ + selector: 'mm-reload', + templateUrl: './reload.component.html', + styleUrls: ['./reload.component.css'], + standalone: true, + imports: [CommonModule, FormsModule, ButtonModule], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ReloadComponent implements OnInit { + @Input({ required: true }) container$: Observable; + @Input({ required: true }) createFunc: () => void; + @Input({ required: true }) destroyFunc: () => void; + + container: HTMLElement; + + constructor( + private logService: LogService, + private animationService: AnimationService, + private destroyRef: DestroyRef + ) { + this.container = null; + } + + ngOnInit(): void { + this.watchContainer(); + } + + reload(): void { + this.logService.break(); + this.logService.log('RELOAD'); + + this.animationService.reset(); + + this.animationService + .animate$({ + element: this.container, + type: AnimationType.Destroy, + customSpeed: 100, + }) + .subscribe({ + next: () => { + this.destroyFunc(); + this.createFunc(); + }, + }); + } + + private watchContainer(): void { + this.container$ + .pipe(takeUntilDestroyed(this.destroyRef)) + .subscribe({ next: (container) => (this.container = container) }); + } +} diff --git a/src/app/shared/components/card/card.component.css b/src/app/shared/components/card/card.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/card/card.component.html b/src/app/shared/components/card/card.component.html new file mode 100644 index 0000000..8d71572 --- /dev/null +++ b/src/app/shared/components/card/card.component.html @@ -0,0 +1,44 @@ +
    +

    {{ config.name }}

    + +
    +
    + +
    + + + + + + + + +
    + +
    + +
    +
    diff --git a/src/app/shared/components/card/card.component.ts b/src/app/shared/components/card/card.component.ts new file mode 100644 index 0000000..2bfb51d --- /dev/null +++ b/src/app/shared/components/card/card.component.ts @@ -0,0 +1,252 @@ +import { cloneDeep, forEach, isNumber } from 'lodash-es'; +import { BadgeModule } from 'primeng/badge'; +import { Subject } from 'rxjs'; + +import { CommonModule } from '@angular/common'; +import { + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ComponentRef, + DestroyRef, + EventEmitter, + Input, + OnChanges, + OnDestroy, + OnInit, + Output, + SimpleChanges, + ViewChild, + ViewContainerRef, +} from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { FormsModule } from '@angular/forms'; + +import { CdLogDirective } from '../../directives/cd-log.directive'; +import { ClickLogDirective } from '../../directives/click-log.directive'; +import { PayloadService } from '../../services/payload.service'; +import { getRandomText } from '../../utils/random-text'; +import { + CardData, + Config, + ConfigComponent, + Payload, + provideConfig, +} from '../config/config.component'; + +@Component({ + selector: 'mm-card', + templateUrl: './card.component.html', + styleUrls: ['./card.component.css'], + standalone: true, + imports: [ + CommonModule, + FormsModule, + BadgeModule, + CdLogDirective, + ClickLogDirective, + ], + providers: [provideConfig(CardComponent)], + hostDirectives: [{ directive: CdLogDirective }], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class CardComponent + extends ConfigComponent + implements OnInit, OnChanges, AfterViewInit, OnDestroy +{ + @Input() payload: Payload; + @Input() data: CardData; + @Output() onData: EventEmitter; + @ViewChild('container', { read: ViewContainerRef }) + container: ViewContainerRef; + + data$: Subject; + childrenRefs: ComponentRef[]; + + constructor( + private cdr: ChangeDetectorRef, + private destroyRef: DestroyRef, + private payloadService: PayloadService + ) { + super(); + + this.childrenRefs = []; + this.onData = new EventEmitter(); + this.data$ = new Subject(); + } + + ngOnChanges(changes: SimpleChanges): void { + const newPayload = changes?.payload?.currentValue as Payload; + + if (newPayload) { + this.handlePayload(newPayload); + } + } + + ngOnInit(): void { + this.initializeData(); + this.watchServicePayload(); + } + + ngAfterViewInit(): void { + this.tryCreateChildren(); + } + + ngOnDestroy(): void { + forEach(this.childrenRefs, (childRef) => childRef.destroy()); + } + + sendData(): void { + const { options, withCdr } = this.config.sender; + const message = getRandomText(); + + if (!options) { + return; + } + + const { path, cardName, changeType } = options; + + const payload = new Payload({ + path, + changeType, + withCdr, + data: { message }, + }); + + if (cardName) { + this.payloadService.emit(cardName, payload); + } else { + this.handlePayload(payload); + } + } + + private handlePayload(payload: Payload): void { + const { path = [] } = payload; + const childIndex = path[0]; + + if (!isNumber(childIndex)) { + this.handleLocalPayload(payload); + } else if (childIndex < 0) { + this.handleParentPayload(payload); + } else { + this.handleChildPayload(payload); + } + } + + private handleLocalPayload(payload: Payload): void { + const { name } = this.config; + const { isActive = false, isAsyncPipe = false } = this.config.receiver; + const { changeType = 'reference', withCdr = false } = payload; + + if (!isActive) { + throw new Error(`${name}: Receiver not active!`); + } + + if (isAsyncPipe) { + this.data$.next(payload.data); + } else if (changeType === 'reference') { + this.data = payload.data; + } else if (changeType === 'mutation') { + this.data.message = payload.data.message; + } else { + throw new Error(`${name}: Local payload not handled!`); + } + + if (withCdr) { + this.cdr.markForCheck(); + } + } + + private handleParentPayload(payload: Payload): void { + const { path = [] } = payload; + const newPayload = new Payload(payload); + newPayload.path = path.slice(1); + + this.onData.emit(newPayload); + } + + private handleChildPayload(payload: Payload): void { + const { name } = this.config; + const { path = [], changeType = 'reference', withCdr = false } = payload; + const childIndex = path[0]; + const childRef = this.childrenRefs[childIndex]; + const isReceiverAsync = childRef.instance.config.receiver.isAsyncPipe; + const newPath = path.slice(1); + + if (newPath.length) { + const newPayload = new Payload(payload); + newPayload.path = newPath; + childRef.setInput('payload', newPayload); + } else if (isReceiverAsync) { + childRef.instance.data$.next(payload.data); + } else if (changeType === 'reference') { + childRef.setInput('data', payload.data); + } else if (changeType === 'mutation') { + childRef.instance.data.message = payload.data.message; + if (withCdr) { + childRef.changeDetectorRef.markForCheck(); + } + } else { + throw new Error(`${name}: Child payload not handled!`); + } + } + + private watchServicePayload(): void { + const { name } = this.config; + + this.payloadService + .listen$(name) + .pipe(takeUntilDestroyed(this.destroyRef)) + .subscribe({ next: this.handlePayload.bind(this) }); + } + + private tryCreateChildren(): void { + const { children } = this.config; + + if (!children?.length) { + return; + } + + this.container.clear(); + + forEach(children, (childConfig) => { + const childRef = this.createComponent(childConfig); + this.childrenRefs.push(childRef); + }); + + this.cdr.detectChanges(); + } + + private createComponent(config: Config): ComponentRef { + const componentRef = this.container.createComponent(CardComponent); + componentRef.instance.config = config; + componentRef.instance.onData + .pipe(takeUntilDestroyed(this.destroyRef)) + .subscribe({ next: this.handlePayload.bind(this) }); + + return componentRef; + } + + private initializeData(): void { + const { isAsyncPipe } = this.config.receiver; + const { data, timeoutMS, withCdr } = this.config.initialData; + + if (isNumber(timeoutMS)) { + setTimeout(() => { + if (isAsyncPipe) { + this.data$.next(data); + } else { + this.data = cloneDeep(data); + } + if (withCdr) { + this.cdr.markForCheck(); + } + }, timeoutMS); + } else if (isAsyncPipe) { + this.data$.next(data); + } else { + this.data = cloneDeep(data); + } + } +} diff --git a/src/app/shared/components/config/config.component.ts b/src/app/shared/components/config/config.component.ts new file mode 100644 index 0000000..6e959df --- /dev/null +++ b/src/app/shared/components/config/config.component.ts @@ -0,0 +1,96 @@ +import { merge } from 'lodash-es'; + +import { + Component, + forwardRef, + Input, + OnChanges, + SimpleChanges, + Type, +} from '@angular/core'; + +@Component({ selector: 'mm-base', template: `` }) +export abstract class ConfigComponent implements OnChanges { + @Input() config: Config; + + abstract ngOnChanges(changes?: SimpleChanges): void; +} + +export function provideConfig(component: Type) { + return { + provide: ConfigComponent, + useExisting: forwardRef(() => component), + }; +} + +class DataHandler { + isActive: boolean = false; +} + +class ReceiverHandler extends DataHandler { + isAsyncPipe?: boolean = false; +} + +class SendOptions { + path?: number[]; + cardName?: string = ''; + changeType?: ChangeType = 'reference'; +} + +class SenderHandler extends DataHandler { + options?: SendOptions; + withCdr?: boolean; + + constructor() { + super(); + + this.options = null; + this.withCdr = false; + } +} + +export class CardData { + message: string = ''; +} + +class InitialData { + data: CardData = new CardData(); + timeoutMS?: number = null; + withCdr?: boolean = false; +} + +export class Config { + name: string; + badge: string; + layout: 'row' | 'col'; + initialData: InitialData; + sender: SenderHandler; + receiver: ReceiverHandler; + children: Config[]; + + constructor(config: ConfigPayload) { + this.name = config.name; + this.badge = config.badge ?? ''; + this.layout = config.layout ?? 'row'; + this.initialData = merge(new InitialData(), config.initialData); + this.sender = merge(new SenderHandler(), config.sender); + this.receiver = merge(new ReceiverHandler(), config.receiver); + this.children = config.children ?? []; + } +} + +export class Payload { + path: number[]; + changeType?: ChangeType; + data?: CardData; + withCdr?: boolean; + + constructor(payload: Payload) { + this.path = payload.path; + this.changeType = payload.changeType ?? 'reference'; + this.data = payload.data ?? new CardData(); + this.withCdr = payload.withCdr ?? false; + } +} +type ConfigPayload = Pick & Partial>; +type ChangeType = 'reference' | 'mutation'; diff --git a/src/app/shared/components/example-container/example-container.component.css b/src/app/shared/components/example-container/example-container.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/example-container/example-container.component.html b/src/app/shared/components/example-container/example-container.component.html new file mode 100644 index 0000000..49d2fef --- /dev/null +++ b/src/app/shared/components/example-container/example-container.component.html @@ -0,0 +1,16 @@ + + +
    + +
    +
    + + +
    diff --git a/src/app/shared/components/example-container/example-container.component.ts b/src/app/shared/components/example-container/example-container.component.ts new file mode 100644 index 0000000..c3a5645 --- /dev/null +++ b/src/app/shared/components/example-container/example-container.component.ts @@ -0,0 +1,91 @@ +import { + filter, + findIndex, + flow, + map, + partialRight, + split, + startCase, +} from 'lodash-es'; +import { ButtonModule } from 'primeng/button'; +import { FieldsetModule } from 'primeng/fieldset'; + +import { CommonModule } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + EventEmitter, + Input, + OnInit, + Output, +} from '@angular/core'; +import { ActivatedRoute, Router, RouterOutlet } from '@angular/router'; + +import { AppRoute } from '../../../../routes'; + +@Component({ + selector: 'mm-example-container', + templateUrl: './example-container.component.html', + styleUrls: ['./example-container.component.css'], + standalone: true, + imports: [CommonModule, RouterOutlet, FieldsetModule, ButtonModule], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ExampleContainerComponent implements OnInit { + @Input({ required: true }) routes: AppRoute[]; + @Output() onRouteChange: EventEmitter; + + routeButtons: ExampleRouteButton[]; + activeIndex: number; + + constructor(private router: Router, private activatedRoute: ActivatedRoute) { + this.onRouteChange = new EventEmitter(); + } + + ngOnInit(): void { + this.routeButtons = this.mapToExampleRouteButtons(this.routes); + this.activeIndex = this.getActiveIndex(this.routeButtons); + } + + changeRoute(index: number): void { + this.activeIndex = index; + const activeRouteButton = this.routeButtons[index]; + + this.router + .navigate([`${activeRouteButton.path}`], { + relativeTo: this.activatedRoute, + }) + .then((isRouteActivated) => { + if (isRouteActivated) { + this.onRouteChange.next(index); + } + }); + } + + withActiveClass(index: number): string { + return index === this.activeIndex ? 'p-button-primary' : ''; + } + + private mapToExampleRouteButtons(routes: AppRoute[]): ExampleRouteButton[] { + return flow( + partialRight(filter, 'component'), + partialRight(map, (route: AppRoute) => ({ + name: startCase(route.data?.menuName ?? route.path), + path: route.path, + })) + )(routes); + } + + private getActiveIndex(routeButtons: ExampleRouteButton[]): number { + const activatedPath = split(this.router.url, '/').pop(); + + return findIndex(routeButtons, { + path: activatedPath, + }); + } +} + +export interface ExampleRouteButton { + name: string; + path: string; +} diff --git a/src/app/shared/components/ui/layout/layout.component.css b/src/app/shared/components/ui/layout/layout.component.css new file mode 100644 index 0000000..9683be5 --- /dev/null +++ b/src/app/shared/components/ui/layout/layout.component.css @@ -0,0 +1,9 @@ +.header { + position: relative; + box-shadow: 0px 10px 10px -5px rgba(0, 0, 0, 0.1); +} + +.content { + overflow-y: auto; + padding: 20px; +} diff --git a/src/app/shared/components/ui/layout/layout.component.html b/src/app/shared/components/ui/layout/layout.component.html new file mode 100644 index 0000000..d7d4712 --- /dev/null +++ b/src/app/shared/components/ui/layout/layout.component.html @@ -0,0 +1,7 @@ +
    + +
    + +
    + +
    diff --git a/src/app/shared/components/ui/layout/layout.component.ts b/src/app/shared/components/ui/layout/layout.component.ts new file mode 100644 index 0000000..a03327c --- /dev/null +++ b/src/app/shared/components/ui/layout/layout.component.ts @@ -0,0 +1,61 @@ +import { CommonModule } from '@angular/common'; +import { + AfterViewInit, + ChangeDetectionStrategy, + Component, + DestroyRef, + ElementRef, +} from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; + +import { fromMutation } from '../../../utils/mutation-observer'; + +@Component({ + selector: 'mm-layout', + standalone: true, + imports: [CommonModule], + templateUrl: './layout.component.html', + styleUrls: ['./layout.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class LayoutComponent implements AfterViewInit { + constructor( + private elementRef: ElementRef, + private destroyRef: DestroyRef + ) {} + + ngAfterViewInit(): void { + this.watchHeaderElements(); + } + + private watchHeaderElements(): void { + const headerElement = + this.elementRef.nativeElement.querySelector('.header'); + + this.setContentHeight(); + + fromMutation(headerElement, { childList: true }) + .pipe(takeUntilDestroyed(this.destroyRef)) + .subscribe({ + next: (mutations) => { + // NOTICE Needs time for re-rendered elements + if (mutations.length > 1) { + setTimeout(() => this.setContentHeight()); + } else { + this.setContentHeight(); + } + }, + }); + } + + private setContentHeight(): void { + const headerElement = + this.elementRef.nativeElement.querySelector('.header'); + const contentElement = + this.elementRef.nativeElement.querySelector('.content'); + + const headerHeight = headerElement.getBoundingClientRect().height; + + contentElement.style.height = `calc(100vh - ${headerHeight}px)`; + } +} diff --git a/src/app/shared/components/ui/menu/menu.component.css b/src/app/shared/components/ui/menu/menu.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/ui/menu/menu.component.html b/src/app/shared/components/ui/menu/menu.component.html new file mode 100644 index 0000000..f683bdf --- /dev/null +++ b/src/app/shared/components/ui/menu/menu.component.html @@ -0,0 +1 @@ + diff --git a/src/app/shared/components/ui/menu/menu.component.ts b/src/app/shared/components/ui/menu/menu.component.ts new file mode 100644 index 0000000..92bf86c --- /dev/null +++ b/src/app/shared/components/ui/menu/menu.component.ts @@ -0,0 +1,32 @@ +import { filter, flow, map, partialRight, startCase } from 'lodash-es'; +import { MenuItem } from 'primeng/api'; +import { TabMenuModule } from 'primeng/tabmenu'; + +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { AppRoute, mapToRouteLink, routes } from '../../../../../routes'; + +@Component({ + selector: 'mm-menu', + templateUrl: './menu.component.html', + styleUrls: ['./menu.component.css'], + standalone: true, + imports: [CommonModule, TabMenuModule], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class MenuComponent { + items: MenuItem[]; + + constructor() { + this.items = flow( + partialRight(filter, 'component'), + partialRight(map, (route: AppRoute) => ({ + label: route.data?.menuName ?? startCase(route.path), + icon: `pi pi-fw ${route.data?.menuIcon ?? 'pi-file'}`, + routerLink: mapToRouteLink(route.path), + routerLinkActiveOptions: { exact: !!route.data?.menuExactMatch }, + })) + )(routes); + } +} diff --git a/src/app/shared/directives/cd-log.directive.ts b/src/app/shared/directives/cd-log.directive.ts new file mode 100644 index 0000000..c90bf5c --- /dev/null +++ b/src/app/shared/directives/cd-log.directive.ts @@ -0,0 +1,135 @@ +import { + DestroyRef, + Directive, + DoCheck, + ElementRef, + Self, +} from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; + +import { ConfigComponent } from '../components/config/config.component'; +import { AnimationService, AnimationType } from '../services/animation.service'; +import { DomService } from '../services/dom.service'; +import { LogService, LogType } from '../services/log.service'; +import { isChildOfParent } from '../utils/element-traverse'; + +@Directive({ + selector: '[cdLog]', + standalone: true, +}) +export class CdLogDirective implements DoCheck { + private hasChanges: boolean; + private counter: Counter; + + constructor( + @Self() private host: ConfigComponent, + private el: ElementRef, + private animationService: AnimationService, + private logService: LogService, + private domService: DomService, + private destroyRef: DestroyRef + ) { + this.initialize(); + } + + ngDoCheck(): void { + const { name } = this.host.config; + + ++this.counter.check; + + if (!this.hasChanges) { + const element = this.el.nativeElement.firstChild as HTMLElement; + this.animationService + .animate$({ + element, + type: AnimationType.Check, + }) + .subscribe(); + + this.logService.log(LogType.Check, name, 'count:', this.counter.check); + } + + this.hasChanges = false; + } + + private initialize(): void { + this.hasChanges = false; + this.counter = { + check: 0, + changes: 0, + render: 0, + }; + + this.decorateOnChanges(); + this.watchRenders(); + + this.el.nativeElement.setAttribute('_cdLog', ''); + } + + private decorateOnChanges(): void { + const originalChanges = this.host.ngOnChanges.bind(this.host); + this.host.ngOnChanges = (...args) => { + originalChanges(...args); + + this.hasChanges = true; + + const { name } = this.host.config; + + this.logService.log( + LogType.Changes, + name, + 'count:', + ++this.counter.changes, + ...args + ); + + const element = this.el.nativeElement.firstChild as HTMLElement; + this.animationService + .animate$({ + element, + type: AnimationType.Changes, + }) + .subscribe(); + }; + } + + private watchRenders(): void { + this.domService + .fromLayoutChanges$() + .pipe(takeUntilDestroyed(this.destroyRef)) + .subscribe({ + next: (mutations) => { + const componentMutation = mutations.find((mutation) => { + const element = mutation?.target?.parentElement; + + return isChildOfParent(element, this.el.nativeElement, '_cdLog'); + }); + + if (componentMutation) { + const { name } = this.host.config; + + this.logService.log( + LogType.Render, + name, + 'count:', + ++this.counter.render + ); + + const element = this.el.nativeElement.firstChild as HTMLElement; + this.animationService + .animate$({ + element, + type: AnimationType.Render, + }) + .subscribe(); + } + }, + }); + } +} + +interface Counter { + check: number; + changes: number; + render: number; +} diff --git a/src/app/shared/directives/click-log.directive.ts b/src/app/shared/directives/click-log.directive.ts new file mode 100644 index 0000000..1fddfdd --- /dev/null +++ b/src/app/shared/directives/click-log.directive.ts @@ -0,0 +1,30 @@ +import { Directive, HostListener, SkipSelf } from '@angular/core'; + +import { ConfigComponent } from '../components/config/config.component'; +import { AnimationService } from '../services/animation.service'; +import { LogService, LogType } from '../services/log.service'; + +@Directive({ + selector: '[clickLog]', + standalone: true, +}) +export class ClickLogDirective { + private counter: number; + + constructor( + @SkipSelf() private host: ConfigComponent, + private animationService: AnimationService, + private logService: LogService + ) { + this.counter = 0; + } + + @HostListener('click') logAndReset() { + const { name } = this.host.config; + + this.logService.newLine(); + this.logService.log(LogType.Click, name, 'count:', ++this.counter); + + this.animationService.reset(); + } +} diff --git a/src/app/shared/factories/style-factory.service.ts b/src/app/shared/factories/style-factory.service.ts new file mode 100644 index 0000000..3b9689c --- /dev/null +++ b/src/app/shared/factories/style-factory.service.ts @@ -0,0 +1,42 @@ +import { Styler } from './variants/base-styler'; +import { changesStyler } from './variants/changes-styler'; +import { checkStyler } from './variants/check-styler'; +import { destroyStyler } from './variants/destroy-styler'; +import { renderStyler } from './variants/render-styler'; + +export class StyleFactoryService { + static createStyler(type: StyleType): Styler { + let styler = null; + + switch (type) { + case StyleType.Check: { + styler = checkStyler(); + break; + } + case StyleType.Changes: { + styler = changesStyler(); + break; + } + case StyleType.Render: { + styler = renderStyler(); + break; + } + case StyleType.Destroy: { + styler = destroyStyler(); + break; + } + default: { + throw new Error(`Unknown style type: ${type}`); + } + } + + return styler; + } +} + +export enum StyleType { + Check, + Changes, + Render, + Destroy, +} diff --git a/src/app/shared/factories/variants/base-styler.ts b/src/app/shared/factories/variants/base-styler.ts new file mode 100644 index 0000000..f973822 --- /dev/null +++ b/src/app/shared/factories/variants/base-styler.ts @@ -0,0 +1,180 @@ +import { + flow, + forEach, + includes, + isNumber, + merge, + noop, + partialRight, + reduce, + split, + trim, +} from 'lodash-es'; + +export function baseStyler( + baseSetStyle: BaseSetHandler, + baseRevertStyle?: BaseRevertHandler +): Styler { + const state: StyleState = new StyleState(); + + return { + setStyle: (element, transitionMS): void => { + tryClearTimer(state); + + if (!element?.style) { + return; + } + + saveStyles(StyleType.Old, element, state); + + if (isNumber(transitionMS)) { + element.style.transition = `${transitionMS}ms all`; + } + + baseSetStyle(element); + + saveStyles(StyleType.New, element, state); + }, + revertStyle: (element, transitionMS) => { + tryClearTimer(state); + + if (!element?.style || !state.newStyle) { + return; + } + + if (isNumber(transitionMS)) { + element.style.transition = `${transitionMS}ms all`; + } + + const revertHandler: RevertHandler = getRevertHandler( + element, + state, + transitionMS + ); + + if (baseRevertStyle) { + baseRevertStyle(element, revertHandler); + } else { + revertHandler(); + } + }, + }; +} + +function saveStyles( + type: StyleType, + element: HTMLElement, + state: StyleState +): void { + const style = mapStyleToObject(element.getAttribute('style')); + + if (type === StyleType.Old) { + state.oldStyle = style; + } else { + state.newStyle = style; + } +} + +function revertStyles( + element: HTMLElement, + styleState: StyleState, + exceptions?: string[] +): void { + forEach(styleState.newStyle, (val, key) => { + const isKeyException = includes(exceptions, key); + if (isKeyException) { + return; + } + + const newVal = element.style[key]; + if (newVal && newVal === val) { + const oldVal = styleState.oldStyle[key]; + element.style[key] = oldVal ?? ''; + } + }); +} + +function getRevertHandler( + element: HTMLElement, + state: StyleState, + transitionMS: number +): RevertHandler { + return isNumber(transitionMS) + ? (onDone = noop): void => { + revertStyles(element, state, ['transition']); + + const cancelation = setTimeout(() => { + element.style.transition = state.oldStyle.transition ?? ''; + + merge(state, new StyleState()); + onDone(); + }, transitionMS); + + state.cancelation = cancelation; + } + : (onDone = noop): void => { + element.style.transition = ''; + revertStyles(element, state); + + merge(state, new StyleState()); + onDone(); + }; +} + +function tryClearTimer(styleState: StyleState): void { + const { cancelation } = styleState; + + if (cancelation) { + clearTimeout(cancelation); + } +} + +function mapStyleToObject(style: string): Partial { + return flow( + partialRight(split, ';'), + partialRight( + reduce, + (acc, text) => { + if (!trim(text)) { + return acc; + } + + const [key, val] = split(text, ':'); + acc[trim(key)] = trim(val); + + return acc; + }, + {} + ) + )(style); +} + +export interface Styler { + setStyle: StylerHandler; + revertStyle: StylerHandler; +} + +class StyleState { + oldStyle: Partial; + newStyle: Partial; + cancelation: NodeJS.Timeout; + + constructor(state?: Partial) { + this.oldStyle = state?.oldStyle ?? null; + this.newStyle = state?.newStyle ?? null; + this.cancelation = state?.cancelation ?? null; + } +} + +type BaseSetHandler = (element: HTMLElement) => void; +type BaseRevertHandler = ( + element: HTMLElement, + revetStyle: RevertHandler +) => void; +type StylerHandler = (element: HTMLElement, transitionMS?: number) => void; +type RevertHandler = (onDone?: () => void) => void; + +enum StyleType { + Old, + New, +} diff --git a/src/app/shared/factories/variants/changes-styler.ts b/src/app/shared/factories/variants/changes-styler.ts new file mode 100644 index 0000000..34f201c --- /dev/null +++ b/src/app/shared/factories/variants/changes-styler.ts @@ -0,0 +1,8 @@ +import { baseStyler, Styler } from './base-styler'; + +export function changesStyler(): Styler { + return baseStyler((element) => { + element.style.border = '1px solid rgb(255, 0, 0)'; + element.style.boxShadow = 'inset 0px 0px 5px 0px rgb(255, 0, 0, 0.5)'; + }); +} diff --git a/src/app/shared/factories/variants/check-styler.ts b/src/app/shared/factories/variants/check-styler.ts new file mode 100644 index 0000000..3a79ffe --- /dev/null +++ b/src/app/shared/factories/variants/check-styler.ts @@ -0,0 +1,8 @@ +import { baseStyler, Styler } from './base-styler'; + +export function checkStyler(): Styler { + return baseStyler((element) => { + element.style.border = '1px solid rgb(0, 97, 255)'; + element.style.boxShadow = 'inset 0px 0px 5px 0px rgb(0, 97, 255, 0.5)'; + }); +} diff --git a/src/app/shared/factories/variants/destroy-styler.ts b/src/app/shared/factories/variants/destroy-styler.ts new file mode 100644 index 0000000..2d1135b --- /dev/null +++ b/src/app/shared/factories/variants/destroy-styler.ts @@ -0,0 +1,18 @@ +import { baseStyler, Styler } from './base-styler'; + +export function destroyStyler(): Styler { + return baseStyler( + (element) => { + element.style.filter = 'blur(1rem)'; + element.style.pointerEvents = 'none'; + }, + (element, revertStyle) => { + const currentOpacity = element.style.opacity; + element.style.opacity = '0'; + + revertStyle(() => { + element.style.opacity = currentOpacity; + }); + } + ); +} diff --git a/src/app/shared/factories/variants/render-styler.ts b/src/app/shared/factories/variants/render-styler.ts new file mode 100644 index 0000000..6b95e36 --- /dev/null +++ b/src/app/shared/factories/variants/render-styler.ts @@ -0,0 +1,9 @@ +import { baseStyler, Styler } from './base-styler'; + +export function renderStyler(): Styler { + return baseStyler((element) => { + element.style.border = '1px solid rgb(255, 255, 0)'; + element.style.backgroundColor = 'rgba(255, 255, 0, 0.2)'; + element.style.boxShadow = 'inset 0px 0px 5px 0px rgb(255, 255, 0, 0.5)'; + }); +} diff --git a/src/app/shared/services/animation.service.ts b/src/app/shared/services/animation.service.ts new file mode 100644 index 0000000..4ed3e88 --- /dev/null +++ b/src/app/shared/services/animation.service.ts @@ -0,0 +1,146 @@ +import { map } from 'lodash-es'; +import { + concatMap, + delay, + finalize, + forkJoin, + Observable, + of, + startWith, + Subject, + Subscriber, + switchMap, + take, + tap, +} from 'rxjs'; + +import { DestroyRef, Injectable } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; + +import { + StyleFactoryService, + StyleType, +} from '../factories/style-factory.service'; + +@Injectable({ providedIn: 'root' }) +export class AnimationService { + private playerSource$: Subject; + private optionsSource$: Subject; + private queueSource$: Subject; + private _speed: AnimationSpeed; + private _isVisible: boolean; + + constructor(private destroyRef: DestroyRef) { + this._speed = AnimationSpeed.Normal; + this._isVisible = true; + this.playerSource$ = new Subject(); + this.optionsSource$ = new Subject(); + this.queueSource$ = new Subject(); + + this.watchAnimation(); + } + + get speed(): AnimationSpeed { + return this._speed; + } + + get isVisible(): boolean { + return this._isVisible; + } + + animate$(animation: AnimationData): Observable { + return new Observable((subscriber) => + this.queueSource$.next({ animation, subscriber }) + ); + } + + animateMultiple$(animations: AnimationData[]): Observable { + const animationObservables = map(animations, (animation) => + this.animate$(animation) + ); + + return forkJoin(animationObservables); + } + + reset(): void { + this.playerSource$.next(); + } + + changeSpeed(speed: AnimationSpeed): void { + this._speed = speed; + this.optionsSource$.next(); + } + + changeVisibility(isVisible: boolean): void { + this._isVisible = isVisible; + this.optionsSource$.next(); + } + + private watchAnimation(): void { + const player$ = this.playerSource$.asObservable().pipe(startWith(null)); + const options$ = this.optionsSource$.asObservable().pipe(startWith(null)); + const queue$ = this.queueSource$.asObservable().pipe( + concatMap(({ animation, subscriber }) => + options$.pipe( + switchMap(() => this.animateElement$(animation)), + take(1), + tap(subscriber) + ) + ) + ); + + player$ + .pipe( + switchMap(() => queue$), + takeUntilDestroyed(this.destroyRef) + ) + .subscribe(); + } + + private animateElement$({ + element, + type, + customSpeed, + }: AnimationData): Observable { + const styleType = type as unknown as StyleType; + const delayTime = customSpeed ? customSpeed : this._speed; + const { setStyle, revertStyle } = + StyleFactoryService.createStyler(styleType); + + return of(element).pipe( + tap(() => { + if (this.isVisible) { + setStyle(element, delayTime); + } + }), + delay(delayTime), + tap(() => revertStyle(element, delayTime)), + delay(delayTime), + finalize(() => revertStyle(element)) + ); + } +} + +export enum AnimationSpeed { + Slow = 400, + Normal = 200, + Fast = 100, +} + +export enum AnimationType { + Check, + Changes, + Render, + Destroy, +} + +interface AnimationData { + element: HTMLElement; + type: AnimationType; + customSpeed?: number; +} + +interface AnimationQueue { + animation: AnimationData; + subscriber: Subscriber; +} diff --git a/src/app/shared/services/dom.service.ts b/src/app/shared/services/dom.service.ts new file mode 100644 index 0000000..54edb08 --- /dev/null +++ b/src/app/shared/services/dom.service.ts @@ -0,0 +1,35 @@ +import { finalize, Observable, share } from 'rxjs'; + +import { Injectable } from '@angular/core'; + +import { fromMutation } from '../utils/mutation-observer'; + +@Injectable({ providedIn: 'root' }) +export class DomService { + private layoutChanges$: Observable; + + constructor() { + this.layoutChanges$ = null; + } + + fromLayoutChanges$(): Observable { + if (this.layoutChanges$) { + return this.layoutChanges$; + } + + const bodyMutations$ = fromMutation(document.body, { + childList: true, + subtree: true, + characterData: true, + attributes: true, + attributeFilter: ['data-message'], + }); + + this.layoutChanges$ = bodyMutations$.pipe( + finalize(() => (this.layoutChanges$ = null)), + share() + ); + + return this.layoutChanges$; + } +} diff --git a/src/app/shared/services/log.service.ts b/src/app/shared/services/log.service.ts new file mode 100644 index 0000000..1a14b95 --- /dev/null +++ b/src/app/shared/services/log.service.ts @@ -0,0 +1,102 @@ +import { + cloneDeep, + flow, + isObject, + isUndefined, + map, + partialRight, + remove, +} from 'lodash-es'; + +import { Injectable } from '@angular/core'; + +@Injectable({ providedIn: 'root' }) +export class LogService { + log(...message: any[]): void; + log(type: LogType, title: string, ...message: any[]): void { + if (!LogService.isLogType(type)) { + const others = isUndefined(title) ? [] : [title, ...message]; + console.log(type, ...others); + + return; + } + + const data = LogService.extractData(message); + const logStyle = LogService.getLogStye(type); + const messageText = `%c${type}%c${title}%c${message.join(' ')}`; + + console.log(messageText, logStyle, titleStyle, bodyStyle); + + if (data.length) { + console.log('└─', ...data); + } + } + + break(): void { + const line = '-'.repeat(30); + this.log(line); + } + + newLine(): void { + this.log('\n'); + } + + private static extractData(message: any[]): any[] { + return flow( + partialRight(remove, (item) => isObject(item)), + partialRight(map, (item) => cloneDeep(item)) + )(message); + } + + private static getLogStye(logType: LogType): string { + let logStyle = ''; + + switch (logType) { + case LogType.Click: { + logStyle = clickStyle; + break; + } + case LogType.Check: { + logStyle = checkStyle; + break; + } + case LogType.Changes: { + logStyle = changesStyle; + break; + } + case LogType.Render: { + logStyle = renderStyle; + break; + } + default: { + throw new Error(`Unknown style type: ${logType}`); + } + } + + return logStyle; + } + + private static isLogType(value: string): value is LogType { + return Object.values(LogType).includes(value); + } +} + +export enum LogType { + Click = 'CLICK', + Check = 'CHECK', + Changes = 'CHANGES', + Render = 'RENDER', +} + +const marginStyle = 'margin-left: 1ch;'; +const cardStyle = 'padding: 4px; border-radius: 2px;'; +const logColor = `color: #ddd;`; +const titleColor = `color: #000;`; +const bodyColor = `color: #999;`; + +const clickStyle = `${cardStyle}${logColor}background: #008000;`; +const checkStyle = `${cardStyle}${logColor}background: #000080;`; +const changesStyle = `${cardStyle}${logColor}background: #800000;`; +const renderStyle = `${cardStyle}${logColor}background: #808000;`; +const titleStyle = `${cardStyle}${marginStyle}${titleColor}background: #bbb;`; +const bodyStyle = `${marginStyle}${bodyColor}`; diff --git a/src/app/shared/services/payload.service.ts b/src/app/shared/services/payload.service.ts new file mode 100644 index 0000000..5c9d58f --- /dev/null +++ b/src/app/shared/services/payload.service.ts @@ -0,0 +1,36 @@ +import { filter, map, Observable, ReplaySubject } from 'rxjs'; + +import { Injectable } from '@angular/core'; + +import { Payload } from '../components/config/config.component'; + +@Injectable({ + providedIn: 'root', +}) +export class PayloadService { + private payloadSource$: ReplaySubject; + + constructor() { + this.payloadSource$ = new ReplaySubject(1); + } + + listen$(cardName: string): Observable { + return this.payloadSource$.asObservable().pipe( + filter((dto) => !!dto && dto.cardName === cardName), + map(({ payload }) => payload) + ); + } + + emit(cardName: string, payload: Payload): void { + this.payloadSource$.next({ cardName, payload }); + } + + reset(): void { + this.payloadSource$.next(null); + } +} + +interface PayloadDTO { + cardName: string; + payload: Payload; +} diff --git a/src/app/shared/utils/element-traverse.ts b/src/app/shared/utils/element-traverse.ts new file mode 100644 index 0000000..10710a2 --- /dev/null +++ b/src/app/shared/utils/element-traverse.ts @@ -0,0 +1,27 @@ +export function isChildOfParent( + child: HTMLElement, + parent: HTMLElement, + attributeBreak?: string +): boolean { + let isSuccess = false; + let attributeCount = 0; + + while (child) { + if (attributeBreak && child.attributes.getNamedItem(attributeBreak)) { + ++attributeCount; + + if (attributeCount > 1) { + break; + } + } + + if (child === parent) { + isSuccess = true; + break; + } + + child = child.parentElement; + } + + return isSuccess; +} diff --git a/src/app/shared/utils/mutation-observer.ts b/src/app/shared/utils/mutation-observer.ts new file mode 100644 index 0000000..80546f5 --- /dev/null +++ b/src/app/shared/utils/mutation-observer.ts @@ -0,0 +1,18 @@ +import { Observable } from 'rxjs'; + +export function fromMutation( + target: Node, + options: MutationObserverInit +): Observable { + return new Observable((observer) => { + const mutationObserver = new MutationObserver((mutations) => { + observer.next(mutations); + }); + + mutationObserver.observe(target, options); + + return () => { + mutationObserver.disconnect(); + }; + }); +} diff --git a/src/app/shared/utils/random-text.ts b/src/app/shared/utils/random-text.ts new file mode 100644 index 0000000..2fee858 --- /dev/null +++ b/src/app/shared/utils/random-text.ts @@ -0,0 +1,3 @@ +export function getRandomText(): string { + return Math.random().toString(36).slice(2); +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 + + + + angular-on-push-strategy + + + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..ef5d24f --- /dev/null +++ b/src/main.ts @@ -0,0 +1,17 @@ +import { enableProdMode, importProvidersFrom } from '@angular/core'; +import { bootstrapApplication, BrowserModule } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { provideRouter } from '@angular/router'; + +import { AppComponent } from './app/app.component'; +import { routes } from './routes'; + +// NOTICE Added to hide error NG0100 for @ngneat/overview +enableProdMode(); + +bootstrapApplication(AppComponent, { + providers: [ + importProvidersFrom(BrowserModule, BrowserAnimationsModule), + provideRouter(routes), + ], +}).catch((err) => console.error(err)); diff --git a/src/routes.ts b/src/routes.ts new file mode 100644 index 0000000..347522d --- /dev/null +++ b/src/routes.ts @@ -0,0 +1,26 @@ +import { Data, Route } from '@angular/router'; + +import { casesRoutes } from './app/cases/cases-routes'; +import { homeRoutes } from './app/home/home-routes'; + +export const routes: AppRoute[] = [ + ...homeRoutes, + ...casesRoutes, + { + path: '**', + redirectTo: homeRoutes[0].path, + }, +]; + +export const mapToRouteLink = (path: string): string => `/${path}`; + +export interface AppRoute extends Route { + data?: AppRouteData; + children?: AppRoute[]; +} + +export interface AppRouteData extends Data { + menuName: string; + menuIcon?: string; + menuExactMatch?: boolean; +} diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..7e6ce67 --- /dev/null +++ b/src/styles.css @@ -0,0 +1,160 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@import "primeicons/primeicons.css"; +@import "primeng/resources/themes/lara-light-blue/theme.css"; +@import "primeng/resources/primeng.css"; + +/* PrimeNG overrides */ + +*:focus { + box-shadow: none !important; +} + +p-button button, +.p-button { + font-size: 12px !important; + padding: 0.25rem 0.5rem !important; + background: #3b82f6; + transition: none !important; +} + +p-button .p-button-icon-only { + height: 1.5rem !important; + width: 1.5rem !important; +} +p-button .p-button-icon-only span { + font-size: 0.75rem; + line-height: 0.75rem; +} + +p-togglebutton .p-togglebutton { + width: 2.5rem !important; +} + +p-toolbar .p-toolbar { + border: none !important; + padding: 12px 20px 20px 20px; +} + +p-fieldset fieldset { + padding-left: 1rem !important; + padding-right: 1rem !important; +} +p-fieldset fieldset .p-fieldset-content { + padding: 1rem 0 1rem 0 !important; +} + +p-fieldset fieldset legend { + border: none !important; + background: none !important; + padding: 0px 8px !important; +} + +/* Custom */ + +body { + font-family: var(--font-family); +} + +h1 { + font-size: 1.5rem; + padding-bottom: 0.5rem; +} + +h2 { + font-size: 1.25rem; + padding-bottom: 0.25rem; +} + +h3 { + font-size: 1rem; + padding-bottom: 0.15rem; + font-weight: 500; +} + +p { + padding-bottom: 1rem; +} + +ol.badge-list { + list-style: upper-alpha; + padding-left: 1.5rem; +} + +ol.badge-list ::marker { + font-weight: 700; + color: #3b82f6; +} + +ol.badge-list ul { + list-style: circle; + padding-left: 1.5rem; +} + +ul.reference-list { + list-style: circle; + padding-left: 1.5rem; +} + +code { + background-color: #f2f2f2; + padding: 0.1rem 0.2rem; + border-radius: 3px; + font-size: 0.8rem; +} + +.container { + max-width: 650px; +} + +.card { + background-color: rgba(0, 0, 0, 0.1); + border: 1px solid rgba(0, 0, 0, 0); + padding: 15px; + margin-top: 15px; + border: 1px solid rgba(0, 0, 0, 0.2); +} + +.card button { + color: azure; + background-color: forestgreen; + font-family: "Lucida Console"; + font-size: 10px; + letter-spacing: 1px; + text-align: center; + text-transform: uppercase; + border: none; + border-radius: 3px; + padding: 5px 10px 4px 10px; + cursor: pointer; + transition: 0.1s all; +} + +.card button:active { + background-color: rgb(45, 175, 45); + box-shadow: 0px 0px 5px 0px rgba(142, 216, 23, 0.75); + transform: scale(0.95); +} + +.card button[disabled] { + background-color: rgba(0, 0, 0, 0.15); + transition: none; + transform: none; + box-shadow: none; + cursor: not-allowed; +} + +.card input { + width: 100%; + margin-top: 3px; + padding: 0 8px; + outline: none; + border-radius: 3px; +} + +.card input[disabled] { + background-color: rgba(0, 0, 0, 0.15); + cursor: not-allowed; +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..73f743a --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./src/**/*.{html,ts}"], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..c6fc29f --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": ["node"] + }, + "files": ["src/main.ts"], + "include": ["src/**/*.d.ts"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..b9fde29 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": ["ES2022", "dom"] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 0000000..be7e9da --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +}