diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000000000000000000000000000000000..dd84ea7824f11be1eeda22377549cbc1aec7f980
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000000000000000000000000000000000..bbcbbe7d61558adde3cbfd0c7a63a67c27ed6d30
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000000000000000000000000000000000..290ad02837ac3dc052d04c0ce1a9bd26e4fd904a
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,8 @@
+version: 2
+updates:
+- package-ecosystem: npm
+  directory: "/"
+  schedule:
+    interval: daily
+    time: "10:00"
+  open-pull-requests-limit: 10
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
new file mode 100644
index 0000000000000000000000000000000000000000..826155f6307296dab6cb0127bd18cde7d96463df
--- /dev/null
+++ b/.github/workflows/node.js.yml
@@ -0,0 +1,30 @@
+# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
+
+name: Node.js CI
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+
+    strategy:
+      matrix:
+        node-version: [16.x]
+        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Use Node.js ${{ matrix.node-version }}
+      uses: actions/setup-node@v2
+      with:
+        node-version: ${{ matrix.node-version }}
+        cache: 'npm'
+    - run: npm ci
+    - run: npm run test:coveralls
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000000000000000000000000000000000000..2686b7eac80fbd57b7a1b8bc195edf5bbe124cd6
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,23 @@
+.github
+.storybook
+examples
+node_modules
+storybook-static
+src
+stories
+test
+.eslintrc
+.gitignore
+.coveralls.yml
+DEV-part2.MD
+
+postinstallSSJ.js
+process.md
+README.md
+CHANGELOG.md
+rollup.config.js
+./.travis.yml
+tempackage.json
+Dropzone-ui.txt
+CODE_OF_CONDICT.md
+CONTRIBUTING.md
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..adcd720e83bec12911581006a407746bc64bb471
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 files-ui
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 043281bb48094f1bb2b376d93afba160187b9dd7..c44636bf4179596cf1873d44255a284daaa3099a 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,10 @@
 <p align="center">
 <img src="https://user-images.githubusercontent.com/43678736/226257748-6ba2f8cf-59c5-40d1-a545-a388ddab0f68.png" width="150" height="150" alt="fui-logo"/>
 </p>
-<h1 align="center">Files ui</h1>
+<h1 align="center">Files ui - core</h1>
 
-<div align="center">
+Base code for **Files UI** 
 
-[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/dropzone-ui/react/blob/HEAD/LICENSE)
-[![npm latest package](https://img.shields.io/npm/v/@dropzone-ui/react.svg?logo=npm&logoColor=fff&label=NPM+package&color=limegreen)](https://www.npmjs.com/package/@dropzone-ui/react)
-[![Rate on Openbase](https://badges.openbase.com/js/rating/@dropzone-ui/react.svg)](https://openbase.com/js/@dropzone-ui/react?utm_source=embedded&utm_medium=badge&utm_campaign=rate-badge)
-[![kandi X-Ray](https://kandi.openweaver.com/badges/xray.svg)](https://kandi.openweaver.com/typescript/dropzone-ui/dropzone-ui-react)
-[![Node.js CI](https://github.com/dropzone-ui/react-dropzone/actions/workflows/node.js.yml/badge.svg)](https://github.com/dropzone-ui/dropzone-ui-react)
-[![Build Status](https://app.travis-ci.com/dropzone-ui/dropzone-ui-react.svg?branch=master)](https://app.travis-ci.com/dropzone-ui/dropzone-ui-react)
-
-[![Known Vulnerabilities](https://snyk.io/test/github/dropzone-ui/react/badge.svg)](https://snyk.io/test/github/dropzone-ui/react)
-[![Package Quality](https://packagequality.com/shield/dropzone-ui.svg)](https://packagequality.com/#?package=dropzone-ui)
-[![install size](https://packagephobia.com/badge?p=@dropzone-ui/react)](https://packagephobia.com/result?p=@dropzone-ui/react)
-[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/dropzone-ui/react.svg)](http://isitmaintained.com/project/dropzone-ui/react)
-[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
-[![GitHub Repo stars](https://img.shields.io/github/stars/dropzone-ui/react?label=Star%20me%20please%20:D&style=social)](https://github.com/dropzone-ui/react)
-
-</div>
-**Files UI** is a complete library for handling files in the UI. You can validate and upload them.
-
-<a href="https://github.com/dropzone-ui/react#readme">
-<img align="center" width="100%" src="https://user-images.githubusercontent.com/43678736/139614260-602b512c-cf78-48fe-ae57-1057e7ec8135.gif" alt="files-ui-preview">
-</a>
-
-## Requirement
-
-`@files-ui/react` is based on [React Hooks](https://reactjs.org/docs/hooks-intro.html). It requires `react v16.8+`.
 
 ## Installation
 
@@ -36,28 +12,15 @@
 
 ```sh
 // with npm
-npm i @files-ui/react
+npm i @files-ui/core
 ```
 
 ```sh
 // with yarn
-yarn add @files-ui/react
+yarn add @files-ui/core
 ```
 
 ## License
 
 This project is licensed under the terms of the
 [MIT license](/LICENSE).
-
-<p align="center">
-<a href="https://github.com/files-ui/files-ui-react#">
-<img src="http://randojs.com/images/barsSmallTransparentBackground.gif" alt="Animated footer bars" width="100%"/>
-</a>
-</p>
-
-<br/>
-<p align="center">
-<a href="https://github.com/files-ui/files-ui-react#readme">
-<img src="http://randojs.com/images/backToTopButtonTransparentBackground.png" alt="Back to top" height="28"/>
-</a>
-</p>
diff --git a/bugs.md b/bugs.md
deleted file mode 100644
index 1702ce601403e8214da874510587f79f78138114..0000000000000000000000000000000000000000
--- a/bugs.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# BUGS
-
-## File Item (mosaic)
-
-- [SOLVED]on change progress the loader is reredered again and again, I think that the 3 states or layers must be there from the begining
-  "preparing", "uploading", "result" - on cancel, the 2nd layer will dissapear, it will not be any big deal
-- [SOLVED] After uploading, progress must be reiitialized to 0
-- [SOLVED] FileItemMainLayer WORKS STRANGE AT THE TIME NEW fILEiTEM IS ADDED
-
-
-## Dropzone
-- [SOLVED] When no validation, upload removes all files.
-
-- [SOLVED]: action buttons rendered again and again since they were created again every time "value" prop changed
-- [SOLVED]: Uploading works in 2 times (first time stops after setting progress = UPLOADING.progrss), but fails to recover from the manager. [UPDATED]: Problem is at `useDropzoneFileListUpdater.ts` file. The problem is that hook for updating when user wants to interrupt preparing, is called at the begining of the upload process, with value of undefined in all files. It is probably the last update on localFiles outside Dropzone component.
-
-- [DONE] When file is set from preparing to undefined it can be deleted, however, will appear again if onDelete is called. It would be great to add a reconciliation procedure to support different array sizes in updater hook. Or "canceled" upload status could be added and file Item should not show the "X" button when uploading and canceled. After Upload process, all files with "canceled" upload status should be set to "undefined" again. This can be a workaround. (`Using the extraData for keeping track if a Filemosaic was deleted`)
-
-- [SOLVED] Dropzone is afected by adding more files as children
-- offset should not be used, instead a padding, given header or footer
-- [SOLVED] When layer is visible, border in the root container must dissapear
-
-## Tooltip
-
-- prints console.log() every time I hover FileItem, even when no message is sent
-
-## Drop Layer
-
-- prints the classname everytime I drop files o select files
diff --git a/features.md b/features.md
deleted file mode 100644
index 323db2a719516e05a0f03a81d0de32eb6dc17890..0000000000000000000000000000000000000000
--- a/features.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Files-ui Features
-
-## Upload to a server
-
-- Upload File object
-- Upload Form Data
-- Upload ExtFile
-- Upload with custom headers
-- Upload with additional data
-- Upload adding callbacks for progress and abort and load
-
-## Valid
-
-- Validate with accept prop
-- Validate with maxFileSize prop
-- Validate with maxFiles prop
-- custom validation
-
-## Read
-
-- Read as URL
-- Read as text
-- Read as base64
-- Read adding callbacks for abort and progress and load
-- reduce the size of an image (not size , but resolution, other word)
-
-## UI Components
-
-- Dropzone
-- InputButon
-- Avatar
-- ImagePreview
-- VideoPreview
-- PDFPreview
-- JsonPreview [DONE]fix rc-highlight
-- FullScreenPreview => FullScreen
-- DropLayer
diff --git a/future-features.md b/future-features.md
deleted file mode 100644
index 84361025cd4bc841a7dd12c0da7c7616f118a21a..0000000000000000000000000000000000000000
--- a/future-features.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Future Possible Features
-
-## DROP
-
-WHen data transfer only text or iimage in string, event
-files dissapear in "replace". create a text file in memoory
-
-## UTILS
-
-- custom icons
-- menu icon for FileItem ( FileOptions (menu collapsed from click in option icon) )
-- [DONE]: Outside actions or buttons for Dropzone
-- [DONE]:header and footer custom props
-- [NOT_YET]: FileItem: checkbox support
-- [DONE] FileItem: ( smart prop ) detect when width of image is greater than height or viceversa in order to decide the orientation
-
-## Upload
-
-- upload multiple files
-- chuncked uploads
-- upload concurrent
-
-## Integrations upload
-
-- aws S3
-- azure
-- google cloud platform (drive)
-- dropbox
-- firebase
-- Java spring
-
-## dont know if context would be a good idea
-
-- maybe yes for props like custom buttons for file mosaci
-- custom file thumbnails
diff --git a/guides.txt b/guides.txt
deleted file mode 100644
index 07e189b4ffaa69418eb0f8fc2cdcaccf8d2c1500..0000000000000000000000000000000000000000
--- a/guides.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-We're kicking it off with the most powerful
- Data Grid on the market..
-
-
-
-
-Production-ready
-in minutes
-
-
-Fully built
-templates for your app.
-
-
-Superiorly designed software
-
-Superiorly designed software
-
-
-![files-ui-logo - arrow-samsung-4](https://user-images.githubusercontent.com/43678736/206890624-c81dde04-1cf0-45b6-a8f0-9553b0b11692.png)
-![Logo-readme](https://user-images.githubusercontent.com/43678736/206890639-604712fd-1b92-44a5-b0b5-2979bc0d2558.png)
diff --git a/ideas.md b/ideas.md
deleted file mode 100644
index df16a14c4c864045a820295c4d7c14139e55120e..0000000000000000000000000000000000000000
--- a/ideas.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Files UI Ideas
-
-## video
-
--small videos for each feature tutorial, after compilig .... "unstopable from Sia"
-
-- dragon ball OST
-
-## Phrases
-
-- Stop pain with developing a complex widget, don't need to create a file upload component from scratch [landingpage_section_3]
-- If you need to do it from scratch, there is an example [show some basic code] Bellow main page component[landing_sec_3_pat_2]
-
-
-
-## MIgrating from dropzone-ui
-[landing_Sec_3_or_4]
-
-## Migrating from react-dropzone
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 0000000000000000000000000000000000000000..30e130ee872a01c9f564a02f52a1393d98818587
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,14 @@
+const config = {
+  roots: ["<rootDir>/tests"],
+  transform: {
+    "^.+\\.tsx?$": "ts-jest",
+  },
+  preset: "ts-jest",
+  testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
+  moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node", "d.ts"],
+  moduleNameMapper: {
+    "^.+\\.(css|less|scss)$": "identity-obj-proxy",
+  },
+  testEnvironment: "jsdom",
+};
+module.exports = config;
diff --git a/package-lock.json b/package-lock.json
index 948b32348a8fbd8fe709461b786c71546bb17083..27c5869f9febcffe92ef4a77856fd730952d720c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,44 +1,42 @@
 {
-  "name": "files-ui-webpage",
-  "version": "0.1.0",
+  "name": "@files-ui/react",
+  "version": "1.0.0",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
-      "name": "files-ui-webpage",
-      "version": "0.1.0",
+      "name": "@files-ui/react",
+      "version": "1.0.0",
+      "license": "MIT",
       "dependencies": {
-        "@dynamicss/dynamicss": "^2.2.8",
-        "@emotion/react": "^11.10.5",
-        "@emotion/styled": "^11.10.5",
-        "@mui/icons-material": "^5.10.14",
-        "@mui/material": "^5.10.14",
-        "@testing-library/jest-dom": "^5.16.5",
-        "@testing-library/react": "^13.4.0",
-        "@testing-library/user-event": "^13.5.0",
-        "@types/react": "^18.0.25",
-        "axios": "^1.3.1",
-        "node-sass": "^7.0.3",
-        "rc-highlight": "^2.5.6",
         "react": "^18.2.0",
-        "react-dom": "^18.2.0",
-        "react-router": "^6.4.3",
-        "react-router-dom": "^6.4.3",
-        "react-scripts": "5.0.1",
-        "sweetalert": "^2.1.2",
-        "typescript": "^4.9.3",
-        "web-vitals": "^2.1.4"
+        "react-dom": "^18.2.0"
+      },
+      "devDependencies": {
+        "@rollup/plugin-commonjs": "^24.0.1",
+        "@rollup/plugin-node-resolve": "^15.0.1",
+        "@testing-library/jest-dom": "^5.16.5",
+        "jest": "^29.5.0",
+        "jest-environment-jsdom": "^29.5.0",
+        "rollup-plugin-peer-deps-external": "^2.2.4",
+        "rollup-plugin-sass": "^1.12.19",
+        "rollup-plugin-terser": "^7.0.2",
+        "rollup-plugin-typescript2": "^0.34.1",
+        "ts-jest": "^29.0.5",
+        "typescript": "^5.0.2"
       }
     },
     "node_modules/@adobe/css-tools": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz",
-      "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g=="
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz",
+      "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==",
+      "dev": true
     },
     "node_modules/@ampproject/remapping": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
       "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+      "dev": true,
       "dependencies": {
         "@jridgewell/gen-mapping": "^0.1.0",
         "@jridgewell/trace-mapping": "^0.3.9"
@@ -51,6 +49,7 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
       "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+      "dev": true,
       "dependencies": {
         "@babel/highlight": "^7.18.6"
       },
@@ -59,32 +58,34 @@
       }
     },
     "node_modules/@babel/compat-data": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz",
-      "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==",
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
+      "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
+      "dev": true,
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/core": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz",
-      "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==",
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz",
+      "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==",
+      "dev": true,
       "dependencies": {
-        "@ampproject/remapping": "^2.1.0",
+        "@ampproject/remapping": "^2.2.0",
         "@babel/code-frame": "^7.18.6",
-        "@babel/generator": "^7.20.2",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-module-transforms": "^7.20.2",
-        "@babel/helpers": "^7.20.1",
-        "@babel/parser": "^7.20.2",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.1",
-        "@babel/types": "^7.20.2",
+        "@babel/generator": "^7.21.3",
+        "@babel/helper-compilation-targets": "^7.20.7",
+        "@babel/helper-module-transforms": "^7.21.2",
+        "@babel/helpers": "^7.21.0",
+        "@babel/parser": "^7.21.3",
+        "@babel/template": "^7.20.7",
+        "@babel/traverse": "^7.21.3",
+        "@babel/types": "^7.21.3",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.1",
+        "json5": "^2.2.2",
         "semver": "^6.3.0"
       },
       "engines": {
@@ -95,54 +96,21 @@
         "url": "https://opencollective.com/babel"
       }
     },
-    "node_modules/@babel/core/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/eslint-parser": {
-      "version": "7.19.1",
-      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz",
-      "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==",
-      "dependencies": {
-        "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
-        "eslint-visitor-keys": "^2.1.0",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": ">=7.11.0",
-        "eslint": "^7.5.0 || ^8.0.0"
-      }
-    },
-    "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/@babel/eslint-parser/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
+    "node_modules/@babel/core/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/@babel/generator": {
-      "version": "7.20.4",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz",
-      "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==",
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz",
+      "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==",
+      "dev": true,
       "dependencies": {
-        "@babel/types": "^7.20.2",
+        "@babel/types": "^7.21.3",
         "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
         "jsesc": "^2.5.1"
       },
       "engines": {
@@ -153,6 +121,7 @@
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
       "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+      "dev": true,
       "dependencies": {
         "@jridgewell/set-array": "^1.0.1",
         "@jridgewell/sourcemap-codec": "^1.4.10",
@@ -162,37 +131,16 @@
         "node": ">=6.0.0"
       }
     },
-    "node_modules/@babel/helper-annotate-as-pure": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
-      "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
-      "dependencies": {
-        "@babel/types": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
-      "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
-      "dependencies": {
-        "@babel/helper-explode-assignable-expression": "^7.18.6",
-        "@babel/types": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
     "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
-      "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
+      "version": "7.20.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
+      "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/compat-data": "^7.20.0",
+        "@babel/compat-data": "^7.20.5",
         "@babel/helper-validator-option": "^7.18.6",
         "browserslist": "^4.21.3",
+        "lru-cache": "^5.1.1",
         "semver": "^6.3.0"
       },
       "engines": {
@@ -202,99 +150,23 @@
         "@babel/core": "^7.0.0"
       }
     },
-    "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz",
-      "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-member-expression-to-functions": "^7.18.9",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.19.1",
-        "@babel/helper-split-export-declaration": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-create-regexp-features-plugin": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz",
-      "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "regexpu-core": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-define-polyfill-provider": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
-      "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
-      "dependencies": {
-        "@babel/helper-compilation-targets": "^7.17.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "debug": "^4.1.1",
-        "lodash.debounce": "^4.0.8",
-        "resolve": "^1.14.2",
-        "semver": "^6.1.2"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.4.0-0"
-      }
-    },
-    "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
     "node_modules/@babel/helper-environment-visitor": {
       "version": "7.18.9",
       "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
       "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-explode-assignable-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
-      "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
-      "dependencies": {
-        "@babel/types": "^7.18.6"
-      },
+      "dev": true,
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-function-name": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
-      "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+      "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
+      "dev": true,
       "dependencies": {
-        "@babel/template": "^7.18.10",
-        "@babel/types": "^7.19.0"
+        "@babel/template": "^7.20.7",
+        "@babel/types": "^7.21.0"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -304,6 +176,7 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
       "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+      "dev": true,
       "dependencies": {
         "@babel/types": "^7.18.6"
       },
@@ -311,21 +184,11 @@
         "node": ">=6.9.0"
       }
     },
-    "node_modules/@babel/helper-member-expression-to-functions": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
-      "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
-      "dependencies": {
-        "@babel/types": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
     "node_modules/@babel/helper-module-imports": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
       "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+      "dev": true,
       "dependencies": {
         "@babel/types": "^7.18.6"
       },
@@ -334,29 +197,19 @@
       }
     },
     "node_modules/@babel/helper-module-transforms": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
-      "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
+      "version": "7.21.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
+      "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
+      "dev": true,
       "dependencies": {
         "@babel/helper-environment-visitor": "^7.18.9",
         "@babel/helper-module-imports": "^7.18.6",
         "@babel/helper-simple-access": "^7.20.2",
         "@babel/helper-split-export-declaration": "^7.18.6",
         "@babel/helper-validator-identifier": "^7.19.1",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.1",
-        "@babel/types": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-optimise-call-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
-      "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
-      "dependencies": {
-        "@babel/types": "^7.18.6"
+        "@babel/template": "^7.20.7",
+        "@babel/traverse": "^7.21.2",
+        "@babel/types": "^7.21.2"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -366,38 +219,7 @@
       "version": "7.20.2",
       "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
       "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-remap-async-to-generator": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
-      "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-wrap-function": "^7.18.9",
-        "@babel/types": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-replace-supers": {
-      "version": "7.19.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz",
-      "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==",
-      "dependencies": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-member-expression-to-functions": "^7.18.9",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/traverse": "^7.19.1",
-        "@babel/types": "^7.19.0"
-      },
+      "dev": true,
       "engines": {
         "node": ">=6.9.0"
       }
@@ -406,6 +228,7 @@
       "version": "7.20.2",
       "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
       "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
+      "dev": true,
       "dependencies": {
         "@babel/types": "^7.20.2"
       },
@@ -413,21 +236,11 @@
         "node": ">=6.9.0"
       }
     },
-    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
-      "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
-      "dependencies": {
-        "@babel/types": "^7.20.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
     "node_modules/@babel/helper-split-export-declaration": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
       "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+      "dev": true,
       "dependencies": {
         "@babel/types": "^7.18.6"
       },
@@ -439,6 +252,7 @@
       "version": "7.19.4",
       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
       "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+      "dev": true,
       "engines": {
         "node": ">=6.9.0"
       }
@@ -447,40 +261,29 @@
       "version": "7.19.1",
       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
       "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+      "dev": true,
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-validator-option": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
-      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-wrap-function": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz",
-      "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==",
-      "dependencies": {
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.19.0",
-        "@babel/types": "^7.19.0"
-      },
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+      "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
+      "dev": true,
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz",
-      "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==",
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
+      "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
+      "dev": true,
       "dependencies": {
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.1",
-        "@babel/types": "^7.20.0"
+        "@babel/template": "^7.20.7",
+        "@babel/traverse": "^7.21.0",
+        "@babel/types": "^7.21.0"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -490,6 +293,7 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
       "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+      "dev": true,
       "dependencies": {
         "@babel/helper-validator-identifier": "^7.18.6",
         "chalk": "^2.0.0",
@@ -499,405 +303,120 @@
         "node": ">=6.9.0"
       }
     },
-    "node_modules/@babel/parser": {
-      "version": "7.20.3",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz",
-      "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==",
-      "bin": {
-        "parser": "bin/babel-parser.js"
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
       },
       "engines": {
-        "node": ">=6.0.0"
+        "node": ">=4"
       }
     },
-    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.18.6",
-      "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.18.6.tgz",
-      "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
+    "node_modules/@babel/highlight/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
+        "node": ">=4"
       }
     },
-    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz",
-      "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==",
+    "node_modules/@babel/highlight/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9",
-        "@babel/plugin-proposal-optional-chaining": "^7.18.9"
-      },
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "dev": true,
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.13.0"
+        "node": ">=0.8.0"
       }
     },
-    "node_modules/@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz",
-      "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==",
-      "dependencies": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-remap-async-to-generator": "^7.18.9",
-        "@babel/plugin-syntax-async-generators": "^7.8.4"
-      },
+    "node_modules/@babel/highlight/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true,
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=4"
       }
     },
-    "node_modules/@babel/plugin-proposal-class-properties": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
-      "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
+    "node_modules/@babel/highlight/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "has-flag": "^3.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=4"
       }
     },
-    "node_modules/@babel/plugin-proposal-class-static-block": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz",
-      "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==",
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+    "node_modules/@babel/parser": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz",
+      "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==",
+      "dev": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.12.0"
+        "node": ">=6.0.0"
       }
     },
-    "node_modules/@babel/plugin-proposal-decorators": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz",
-      "integrity": "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==",
+    "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-create-class-features-plugin": "^7.20.2",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.19.1",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/plugin-syntax-decorators": "^7.19.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+        "@babel/helper-plugin-utils": "^7.8.0"
       },
       "peerDependencies": {
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-proposal-dynamic-import": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
-      "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
+    "node_modules/@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+        "@babel/helper-plugin-utils": "^7.8.0"
       },
       "peerDependencies": {
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-proposal-export-namespace-from": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
-      "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
+    "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.18.9",
-        "@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-proposal-json-strings": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
-      "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-json-strings": "^7.8.3"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz",
-      "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@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-proposal-nullish-coalescing-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
-      "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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-proposal-numeric-separator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
-      "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz",
-      "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==",
-      "dependencies": {
-        "@babel/compat-data": "^7.20.1",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.20.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
-      "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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-proposal-optional-chaining": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz",
-      "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-private-methods": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
-      "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-private-property-in-object": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz",
-      "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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-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==",
-      "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==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-bigint": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
-      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-decorators": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz",
-      "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      },
-      "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==",
-      "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==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.3"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-flow": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz",
-      "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-import-assertions": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
-      "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+        "@babel/helper-plugin-utils": "^7.12.13"
       },
       "peerDependencies": {
         "@babel/core": "^7.0.0-0"
@@ -907,6 +426,7 @@
       "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"
       },
@@ -918,6 +438,7 @@
       "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"
       },
@@ -929,6 +450,7 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
       "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+      "dev": true,
       "dependencies": {
         "@babel/helper-plugin-utils": "^7.18.6"
       },
@@ -943,6 +465,7 @@
       "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"
       },
@@ -954,6 +477,7 @@
       "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"
       },
@@ -965,6 +489,7 @@
       "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"
       },
@@ -976,6 +501,7 @@
       "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"
       },
@@ -987,6 +513,7 @@
       "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"
       },
@@ -998,6 +525,7 @@
       "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"
       },
@@ -1005,24 +533,11 @@
         "@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==",
-      "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"
       },
@@ -1037,6 +552,7 @@
       "version": "7.20.0",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
       "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
+      "dev": true,
       "dependencies": {
         "@babel/helper-plugin-utils": "^7.19.0"
       },
@@ -1047,1500 +563,1350 @@
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-transform-arrow-functions": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz",
-      "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==",
+    "node_modules/@babel/runtime": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
+      "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "regenerator-runtime": "^0.13.11"
       },
       "engines": {
         "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-transform-async-to-generator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz",
-      "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==",
+    "node_modules/@babel/template": {
+      "version": "7.20.7",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+      "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-remap-async-to-generator": "^7.18.6"
+        "@babel/code-frame": "^7.18.6",
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7"
       },
       "engines": {
         "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
-      "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
+    "node_modules/@babel/traverse": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz",
+      "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@babel/code-frame": "^7.18.6",
+        "@babel/generator": "^7.21.3",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-function-name": "^7.21.0",
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/parser": "^7.21.3",
+        "@babel/types": "^7.21.3",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
       },
       "engines": {
         "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-transform-block-scoping": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz",
-      "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==",
+    "node_modules/@babel/types": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz",
+      "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
+        "@babel/helper-string-parser": "^7.19.4",
+        "@babel/helper-validator-identifier": "^7.19.1",
+        "to-fast-properties": "^2.0.0"
       },
       "engines": {
         "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-transform-classes": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz",
-      "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==",
+    "node_modules/@bcoe/v8-coverage": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+      "dev": true
+    },
+    "node_modules/@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": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.19.1",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "globals": "^11.1.0"
+        "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": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=8"
       }
     },
-    "node_modules/@babel/plugin-transform-computed-properties": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz",
-      "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
+    "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": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=8"
       }
     },
-    "node_modules/@babel/plugin-transform-destructuring": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz",
-      "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==",
+    "node_modules/@jest/console": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
+      "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "slash": "^3.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-dotall-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
-      "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
+    "node_modules/@jest/console/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=10"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@babel/plugin-transform-duplicate-keys": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
-      "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
+    "node_modules/@jest/core": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
+      "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.5.0",
+        "@jest/reporters": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "jest-changed-files": "^29.5.0",
+        "jest-config": "^29.5.0",
+        "jest-haste-map": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-regex-util": "^29.4.3",
+        "jest-resolve": "^29.5.0",
+        "jest-resolve-dependencies": "^29.5.0",
+        "jest-runner": "^29.5.0",
+        "jest-runtime": "^29.5.0",
+        "jest-snapshot": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "jest-watcher": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.5.0",
+        "slash": "^3.0.0",
+        "strip-ansi": "^6.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
-      "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
+    "node_modules/@jest/core/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=10"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@babel/plugin-transform-flow-strip-types": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz",
-      "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==",
+    "node_modules/@jest/environment": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
+      "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/plugin-syntax-flow": "^7.18.6"
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "jest-mock": "^29.5.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-for-of": {
-      "version": "7.18.8",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
-      "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
+    "node_modules/@jest/expect": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
+      "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "expect": "^29.5.0",
+        "jest-snapshot": "^29.5.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-function-name": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
-      "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
+    "node_modules/@jest/expect-utils": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
+      "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-compilation-targets": "^7.18.9",
-        "@babel/helper-function-name": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.18.9"
+        "jest-get-type": "^29.4.3"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
-      "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
+    "node_modules/@jest/fake-timers": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
+      "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
+        "@jest/types": "^29.5.0",
+        "@sinonjs/fake-timers": "^10.0.2",
+        "@types/node": "*",
+        "jest-message-util": "^29.5.0",
+        "jest-mock": "^29.5.0",
+        "jest-util": "^29.5.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-member-expression-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
-      "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
+    "node_modules/@jest/globals": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
+      "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@jest/environment": "^29.5.0",
+        "@jest/expect": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "jest-mock": "^29.5.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-modules-amd": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz",
-      "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==",
+    "node_modules/@jest/reporters": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
+      "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-module-transforms": "^7.19.6",
-        "@babel/helper-plugin-utils": "^7.19.0"
+        "@bcoe/v8-coverage": "^0.2.3",
+        "@jest/console": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@jridgewell/trace-mapping": "^0.3.15",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-instrument": "^5.1.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.0",
+        "istanbul-reports": "^3.1.3",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-worker": "^29.5.0",
+        "slash": "^3.0.0",
+        "string-length": "^4.0.1",
+        "strip-ansi": "^6.0.0",
+        "v8-to-istanbul": "^9.0.1"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@babel/plugin-transform-modules-commonjs": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz",
-      "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==",
+    "node_modules/@jest/reporters/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": {
-        "@babel/helper-module-transforms": "^7.19.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-simple-access": "^7.19.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
       }
     },
-    "node_modules/@babel/plugin-transform-modules-systemjs": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz",
-      "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==",
+    "node_modules/@jest/reporters/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-hoist-variables": "^7.18.6",
-        "@babel/helper-module-transforms": "^7.19.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-validator-identifier": "^7.19.1"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=10"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@babel/plugin-transform-modules-umd": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
-      "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
+    "node_modules/@jest/reporters/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": {
-        "@babel/helper-module-transforms": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "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": ">=6.9.0"
+        "node": "*"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.19.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz",
-      "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==",
+    "node_modules/@jest/reporters/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": {
-        "@babel/helper-create-regexp-features-plugin": "^7.19.0",
-        "@babel/helper-plugin-utils": "^7.19.0"
+        "brace-expansion": "^1.1.7"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
+        "node": "*"
       }
     },
-    "node_modules/@babel/plugin-transform-new-target": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
-      "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
+    "node_modules/@jest/schemas": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
+      "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@sinclair/typebox": "^0.25.16"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-object-super": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
-      "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
+    "node_modules/@jest/source-map": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
+      "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.18.6"
+        "@jridgewell/trace-mapping": "^0.3.15",
+        "callsites": "^3.0.0",
+        "graceful-fs": "^4.2.9"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-parameters": {
-      "version": "7.20.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz",
-      "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==",
+    "node_modules/@jest/test-result": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
+      "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
+        "@jest/console": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "collect-v8-coverage": "^1.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-property-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
-      "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
+    "node_modules/@jest/test-sequencer": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
+      "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@jest/test-result": "^29.5.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.5.0",
+        "slash": "^3.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-react-constant-elements": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz",
-      "integrity": "sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
+    "node_modules/@jest/transform": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
+      "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@jest/types": "^29.5.0",
+        "@jridgewell/trace-mapping": "^0.3.15",
+        "babel-plugin-istanbul": "^6.1.1",
+        "chalk": "^4.0.0",
+        "convert-source-map": "^2.0.0",
+        "fast-json-stable-stringify": "^2.1.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.5.0",
+        "jest-regex-util": "^29.4.3",
+        "jest-util": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "pirates": "^4.0.4",
+        "slash": "^3.0.0",
+        "write-file-atomic": "^4.0.2"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-react-display-name": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz",
-      "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==",
+    "node_modules/@jest/transform/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=10"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@babel/plugin-transform-react-jsx": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz",
-      "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==",
+    "node_modules/@jest/types": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+      "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/plugin-syntax-jsx": "^7.18.6",
-        "@babel/types": "^7.19.0"
+        "@jest/schemas": "^29.4.3",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^17.0.8",
+        "chalk": "^4.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-react-jsx-development": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
-      "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
+    "node_modules/@jest/types/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@babel/plugin-transform-react-jsx": "^7.18.6"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=10"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@babel/plugin-transform-react-pure-annotations": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz",
-      "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==",
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+      "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@jridgewell/set-array": "^1.0.0",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=6.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-regenerator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz",
-      "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "regenerator-transform": "^0.15.0"
-      },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "dev": true,
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=6.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-reserved-words": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
-      "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
+    "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.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=6.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-runtime": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz",
-      "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==",
+    "node_modules/@jridgewell/source-map": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
+      "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
       }
     },
-    "node_modules/@babel/plugin-transform-shorthand-properties": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
-      "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
+    "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=6.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-spread": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz",
-      "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==",
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.17",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "@jridgewell/resolve-uri": "3.1.0",
+        "@jridgewell/sourcemap-codec": "1.4.14"
       }
     },
-    "node_modules/@babel/plugin-transform-sticky-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
-      "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
+    "node_modules/@rollup/plugin-commonjs": {
+      "version": "24.0.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz",
+      "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@rollup/pluginutils": "^5.0.1",
+        "commondir": "^1.0.1",
+        "estree-walker": "^2.0.2",
+        "glob": "^8.0.3",
+        "is-reference": "1.2.1",
+        "magic-string": "^0.27.0"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=14.0.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "rollup": "^2.68.0||^3.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@babel/plugin-transform-template-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
-      "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
+    "node_modules/@rollup/plugin-node-resolve": {
+      "version": "15.0.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz",
+      "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
+        "@rollup/pluginutils": "^5.0.1",
+        "@types/resolve": "1.20.2",
+        "deepmerge": "^4.2.2",
+        "is-builtin-module": "^3.2.0",
+        "is-module": "^1.0.0",
+        "resolve": "^1.22.1"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=14.0.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "rollup": "^2.78.0||^3.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@babel/plugin-transform-typeof-symbol": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
-      "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
+    "node_modules/@rollup/pluginutils": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+      "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
       },
       "engines": {
-        "node": ">=6.9.0"
+        "node": ">=14.0.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "rollup": "^1.20.0||^2.0.0||^3.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@babel/plugin-transform-typescript": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz",
-      "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==",
+    "node_modules/@sinclair/typebox": {
+      "version": "0.25.24",
+      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
+      "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+      "dev": true
+    },
+    "node_modules/@sinonjs/commons": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
+      "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.20.2",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-typescript": "^7.20.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "type-detect": "4.0.8"
       }
     },
-    "node_modules/@babel/plugin-transform-unicode-escapes": {
-      "version": "7.18.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
-      "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
+    "node_modules/@sinonjs/fake-timers": {
+      "version": "10.0.2",
+      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
+      "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "@sinonjs/commons": "^2.0.0"
       }
     },
-    "node_modules/@babel/plugin-transform-unicode-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
-      "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
+    "node_modules/@testing-library/jest-dom": {
+      "version": "5.16.5",
+      "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz",
+      "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
+        "@adobe/css-tools": "^4.0.1",
+        "@babel/runtime": "^7.9.2",
+        "@types/testing-library__jest-dom": "^5.9.1",
+        "aria-query": "^5.0.0",
+        "chalk": "^3.0.0",
+        "css.escape": "^1.5.1",
+        "dom-accessibility-api": "^0.5.6",
+        "lodash": "^4.17.15",
+        "redent": "^3.0.0"
       },
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">=8",
+        "npm": ">=6",
+        "yarn": ">=1"
       }
     },
-    "node_modules/@babel/preset-env": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz",
-      "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==",
-      "dependencies": {
-        "@babel/compat-data": "^7.20.1",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-async-generator-functions": "^7.20.1",
-        "@babel/plugin-proposal-class-properties": "^7.18.6",
-        "@babel/plugin-proposal-class-static-block": "^7.18.6",
-        "@babel/plugin-proposal-dynamic-import": "^7.18.6",
-        "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
-        "@babel/plugin-proposal-json-strings": "^7.18.6",
-        "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
-        "@babel/plugin-proposal-numeric-separator": "^7.18.6",
-        "@babel/plugin-proposal-object-rest-spread": "^7.20.2",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
-        "@babel/plugin-proposal-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-private-methods": "^7.18.6",
-        "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
-        "@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.20.0",
-        "@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-transform-arrow-functions": "^7.18.6",
-        "@babel/plugin-transform-async-to-generator": "^7.18.6",
-        "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
-        "@babel/plugin-transform-block-scoping": "^7.20.2",
-        "@babel/plugin-transform-classes": "^7.20.2",
-        "@babel/plugin-transform-computed-properties": "^7.18.9",
-        "@babel/plugin-transform-destructuring": "^7.20.2",
-        "@babel/plugin-transform-dotall-regex": "^7.18.6",
-        "@babel/plugin-transform-duplicate-keys": "^7.18.9",
-        "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
-        "@babel/plugin-transform-for-of": "^7.18.8",
-        "@babel/plugin-transform-function-name": "^7.18.9",
-        "@babel/plugin-transform-literals": "^7.18.9",
-        "@babel/plugin-transform-member-expression-literals": "^7.18.6",
-        "@babel/plugin-transform-modules-amd": "^7.19.6",
-        "@babel/plugin-transform-modules-commonjs": "^7.19.6",
-        "@babel/plugin-transform-modules-systemjs": "^7.19.6",
-        "@babel/plugin-transform-modules-umd": "^7.18.6",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
-        "@babel/plugin-transform-new-target": "^7.18.6",
-        "@babel/plugin-transform-object-super": "^7.18.6",
-        "@babel/plugin-transform-parameters": "^7.20.1",
-        "@babel/plugin-transform-property-literals": "^7.18.6",
-        "@babel/plugin-transform-regenerator": "^7.18.6",
-        "@babel/plugin-transform-reserved-words": "^7.18.6",
-        "@babel/plugin-transform-shorthand-properties": "^7.18.6",
-        "@babel/plugin-transform-spread": "^7.19.0",
-        "@babel/plugin-transform-sticky-regex": "^7.18.6",
-        "@babel/plugin-transform-template-literals": "^7.18.9",
-        "@babel/plugin-transform-typeof-symbol": "^7.18.9",
-        "@babel/plugin-transform-unicode-escapes": "^7.18.10",
-        "@babel/plugin-transform-unicode-regex": "^7.18.6",
-        "@babel/preset-modules": "^0.1.5",
-        "@babel/types": "^7.20.2",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "core-js-compat": "^3.25.1",
-        "semver": "^6.3.0"
-      },
+    "node_modules/@tootallnate/once": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+      "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+      "dev": true,
       "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "node": ">= 10"
       }
     },
-    "node_modules/@babel/preset-env/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
+    "node_modules/@types/babel__core": {
+      "version": "7.20.0",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
+      "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
       }
     },
-    "node_modules/@babel/preset-modules": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
-      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+    "node_modules/@types/babel__generator": {
+      "version": "7.6.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
+      "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+      "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"
+        "@babel/types": "^7.0.0"
       }
     },
-    "node_modules/@babel/preset-react": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz",
-      "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==",
+    "node_modules/@types/babel__template": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+      "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-transform-react-display-name": "^7.18.6",
-        "@babel/plugin-transform-react-jsx": "^7.18.6",
-        "@babel/plugin-transform-react-jsx-development": "^7.18.6",
-        "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
-    "node_modules/@babel/preset-typescript": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz",
-      "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==",
+    "node_modules/@types/babel__traverse": {
+      "version": "7.18.3",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
+      "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-transform-typescript": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "@babel/types": "^7.3.0"
       }
     },
-    "node_modules/@babel/runtime": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz",
-      "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==",
+    "node_modules/@types/estree": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
+      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
+      "dev": true
+    },
+    "node_modules/@types/graceful-fs": {
+      "version": "4.1.6",
+      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+      "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+      "dev": true,
       "dependencies": {
-        "regenerator-runtime": "^0.13.10"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+        "@types/node": "*"
       }
     },
-    "node_modules/@babel/runtime-corejs3": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz",
-      "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==",
-      "dependencies": {
-        "core-js-pure": "^3.25.1",
-        "regenerator-runtime": "^0.13.10"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+    "node_modules/@types/istanbul-lib-coverage": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+      "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+      "dev": true
+    },
+    "node_modules/@types/istanbul-lib-report": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+      "dev": true,
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "*"
       }
     },
-    "node_modules/@babel/template": {
-      "version": "7.18.10",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
-      "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
+    "node_modules/@types/istanbul-reports": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+      "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+      "dev": true,
       "dependencies": {
-        "@babel/code-frame": "^7.18.6",
-        "@babel/parser": "^7.18.10",
-        "@babel/types": "^7.18.10"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+        "@types/istanbul-lib-report": "*"
       }
     },
-    "node_modules/@babel/traverse": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz",
-      "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==",
+    "node_modules/@types/jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz",
+      "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==",
+      "dev": true,
       "dependencies": {
-        "@babel/code-frame": "^7.18.6",
-        "@babel/generator": "^7.20.1",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-hoist-variables": "^7.18.6",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/parser": "^7.20.1",
-        "@babel/types": "^7.20.0",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+        "expect": "^29.0.0",
+        "pretty-format": "^29.0.0"
       }
     },
-    "node_modules/@babel/types": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz",
-      "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==",
+    "node_modules/@types/jsdom": {
+      "version": "20.0.1",
+      "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz",
+      "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-string-parser": "^7.19.4",
-        "@babel/helper-validator-identifier": "^7.19.1",
-        "to-fast-properties": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
+        "@types/node": "*",
+        "@types/tough-cookie": "*",
+        "parse5": "^7.0.0"
       }
     },
-    "node_modules/@bcoe/v8-coverage": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
-      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
+    "node_modules/@types/node": {
+      "version": "18.15.7",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.7.tgz",
+      "integrity": "sha512-LFmUbFunqmBn26wJZgZPYZPrDR1RwGOu2v79Mgcka1ndO6V0/cwjivPTc4yoK6n9kmw4/ls1r8cLrvh2iMibFA==",
+      "dev": true
+    },
+    "node_modules/@types/prettier": {
+      "version": "2.7.2",
+      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
+      "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
+      "dev": true
     },
-    "node_modules/@csstools/normalize.css": {
-      "version": "12.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz",
-      "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg=="
+    "node_modules/@types/resolve": {
+      "version": "1.20.2",
+      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+      "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
+      "dev": true
     },
-    "node_modules/@csstools/postcss-cascade-layers": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz",
-      "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==",
+    "node_modules/@types/stack-utils": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+      "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+      "dev": true
+    },
+    "node_modules/@types/testing-library__jest-dom": {
+      "version": "5.14.5",
+      "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
+      "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/jest": "*"
+      }
+    },
+    "node_modules/@types/tough-cookie": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz",
+      "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==",
+      "dev": true
+    },
+    "node_modules/@types/yargs": {
+      "version": "17.0.23",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz",
+      "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==",
+      "dev": true,
       "dependencies": {
-        "@csstools/selector-specificity": "^2.0.2",
-        "postcss-selector-parser": "^6.0.10"
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@types/yargs-parser": {
+      "version": "21.0.0",
+      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
+      "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/acorn": {
+      "version": "8.8.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+      "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "node": ">=0.4.0"
       }
     },
-    "node_modules/@csstools/postcss-color-function": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz",
-      "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==",
+    "node_modules/acorn-globals": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
+      "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
+      "dev": true,
       "dependencies": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
-      },
+        "acorn": "^8.1.0",
+        "acorn-walk": "^8.0.2"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+      "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+      "dev": true,
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "node": ">=0.4.0"
       }
     },
-    "node_modules/@csstools/postcss-font-format-keywords": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz",
-      "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==",
+    "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": {
-        "postcss-value-parser": "^4.2.0"
+        "debug": "4"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "node": ">= 6.0.0"
       }
     },
-    "node_modules/@csstools/postcss-hwb-function": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz",
-      "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==",
+    "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": {
-        "postcss-value-parser": "^4.2.0"
+        "type-fest": "^0.21.3"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
+        "node": ">=8"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@csstools/postcss-ic-unit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz",
-      "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==",
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
       "dependencies": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
+        "color-convert": "^2.0.1"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
+        "node": ">=8"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
-    "node_modules/@csstools/postcss-is-pseudo-class": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz",
-      "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==",
+    "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": {
-        "@csstools/selector-specificity": "^2.0.0",
-        "postcss-selector-parser": "^6.0.10"
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "node": ">= 8"
       }
     },
-    "node_modules/@csstools/postcss-nested-calc": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz",
-      "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==",
+    "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": {
-        "postcss-value-parser": "^4.2.0"
-      },
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/aria-query": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+      "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+      "dev": true,
+      "dependencies": {
+        "deep-equal": "^2.0.5"
+      }
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "dev": true
+    },
+    "node_modules/available-typed-arrays": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+      "dev": true,
       "engines": {
-        "node": "^12 || ^14 || >=16"
+        "node": ">= 0.4"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@csstools/postcss-normalize-display-values": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz",
-      "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==",
+    "node_modules/babel-jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
+      "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
+      "dev": true,
       "dependencies": {
-        "postcss-value-parser": "^4.2.0"
+        "@jest/transform": "^29.5.0",
+        "@types/babel__core": "^7.1.14",
+        "babel-plugin-istanbul": "^6.1.1",
+        "babel-preset-jest": "^29.5.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "slash": "^3.0.0"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       },
       "peerDependencies": {
-        "postcss": "^8.2"
+        "@babel/core": "^7.8.0"
       }
     },
-    "node_modules/@csstools/postcss-oklab-function": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz",
-      "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==",
+    "node_modules/babel-jest/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
+        "node": ">=10"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@csstools/postcss-progressive-custom-properties": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz",
-      "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==",
+    "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": {
-        "postcss-value-parser": "^4.2.0"
+        "@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": "^12 || ^14 || >=16"
-      },
-      "peerDependencies": {
-        "postcss": "^8.3"
+        "node": ">=8"
       }
     },
-    "node_modules/@csstools/postcss-stepped-value-functions": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz",
-      "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==",
+    "node_modules/babel-plugin-jest-hoist": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
+      "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
+      "dev": true,
       "dependencies": {
-        "postcss-value-parser": "^4.2.0"
+        "@babel/template": "^7.3.3",
+        "@babel/types": "^7.3.3",
+        "@types/babel__core": "^7.1.14",
+        "@types/babel__traverse": "^7.0.6"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/babel-preset-current-node-syntax": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-bigint": "^7.8.3",
+        "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-top-level-await": "^7.8.3"
       },
       "peerDependencies": {
-        "postcss": "^8.2"
+        "@babel/core": "^7.0.0"
       }
     },
-    "node_modules/@csstools/postcss-text-decoration-shorthand": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz",
-      "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==",
+    "node_modules/babel-preset-jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
+      "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
+      "dev": true,
       "dependencies": {
-        "postcss-value-parser": "^4.2.0"
+        "babel-plugin-jest-hoist": "^29.5.0",
+        "babel-preset-current-node-syntax": "^1.0.0"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       },
       "peerDependencies": {
-        "postcss": "^8.2"
+        "@babel/core": "^7.0.0"
       }
     },
-    "node_modules/@csstools/postcss-trigonometric-functions": {
+    "node_modules/balanced-match": {
       "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz",
-      "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/@csstools/postcss-unset-value": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz",
-      "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==",
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/@csstools/selector-specificity": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
-      "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2",
-        "postcss-selector-parser": "^6.0.10"
-      }
-    },
-    "node_modules/@dynamicss/dynamicss": {
-      "version": "2.2.8",
-      "resolved": "https://registry.npmjs.org/@dynamicss/dynamicss/-/dynamicss-2.2.8.tgz",
-      "integrity": "sha512-e6hrGUydr8f+c9E/9fHFSG5LoSLdq/MdZXXfbzEDWIVuzKF2hcdxZE7nHNqUNF2htw1mZ17Pyoshu3A6kFEeFA==",
-      "hasInstallScript": true
-    },
-    "node_modules/@emotion/babel-plugin": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz",
-      "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.16.7",
-        "@babel/plugin-syntax-jsx": "^7.17.12",
-        "@babel/runtime": "^7.18.3",
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/serialize": "^1.1.1",
-        "babel-plugin-macros": "^3.1.0",
-        "convert-source-map": "^1.5.0",
-        "escape-string-regexp": "^4.0.0",
-        "find-root": "^1.1.0",
-        "source-map": "^0.5.7",
-        "stylis": "4.1.3"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
     },
-    "node_modules/@emotion/babel-plugin/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+    "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": ">=0.10.0"
+        "node": ">=8"
       }
     },
-    "node_modules/@emotion/cache": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz",
-      "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==",
+    "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": {
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/sheet": "^1.2.1",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "stylis": "4.1.3"
+        "balanced-match": "^1.0.0"
       }
     },
-    "node_modules/@emotion/hash": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
-      "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
-    },
-    "node_modules/@emotion/is-prop-valid": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
-      "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+    "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": {
-        "@emotion/memoize": "^0.8.0"
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "node_modules/@emotion/memoize": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
-      "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
-    },
-    "node_modules/@emotion/react": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz",
-      "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==",
-      "dependencies": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.5",
-        "@emotion/cache": "^11.10.5",
-        "@emotion/serialize": "^1.1.1",
-        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "hoist-non-react-statics": "^3.3.1"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "react": ">=16.8.0"
-      },
-      "peerDependenciesMeta": {
-        "@babel/core": {
-          "optional": true
+    "node_modules/browserslist": {
+      "version": "4.21.5",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+      "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
         },
-        "@types/react": {
-          "optional": true
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
         }
-      }
-    },
-    "node_modules/@emotion/serialize": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz",
-      "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==",
-      "dependencies": {
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/unitless": "^0.8.0",
-        "@emotion/utils": "^1.2.0",
-        "csstype": "^3.0.2"
-      }
-    },
-    "node_modules/@emotion/sheet": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz",
-      "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA=="
-    },
-    "node_modules/@emotion/styled": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz",
-      "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==",
+      ],
       "dependencies": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.5",
-        "@emotion/is-prop-valid": "^1.2.0",
-        "@emotion/serialize": "^1.1.1",
-        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
-        "@emotion/utils": "^1.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "@emotion/react": "^11.0.0-rc.0",
-        "react": ">=16.8.0"
+        "caniuse-lite": "^1.0.30001449",
+        "electron-to-chromium": "^1.4.284",
+        "node-releases": "^2.0.8",
+        "update-browserslist-db": "^1.0.10"
       },
-      "peerDependenciesMeta": {
-        "@babel/core": {
-          "optional": true
-        },
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@emotion/unitless": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
-      "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
-    },
-    "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
-      "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
-      "peerDependencies": {
-        "react": ">=16.8.0"
-      }
-    },
-    "node_modules/@emotion/utils": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
-      "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
-    },
-    "node_modules/@emotion/weak-memoize": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
-      "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
-    },
-    "node_modules/@eslint/eslintrc": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
-      "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
-      "dependencies": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.4.0",
-        "globals": "^13.15.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
+      "bin": {
+        "browserslist": "cli.js"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
       }
     },
-    "node_modules/@eslint/eslintrc/node_modules/argparse": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
-    },
-    "node_modules/@eslint/eslintrc/node_modules/globals": {
-      "version": "13.17.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
-      "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
+    "node_modules/bs-logger": {
+      "version": "0.2.6",
+      "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+      "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+      "dev": true,
       "dependencies": {
-        "type-fest": "^0.20.2"
+        "fast-json-stable-stringify": "2.x"
       },
       "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "node": ">= 6"
       }
     },
-    "node_modules/@eslint/eslintrc/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==",
+    "node_modules/bser": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+      "dev": true,
       "dependencies": {
-        "argparse": "^2.0.1"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
+        "node-int64": "^0.4.0"
       }
     },
-    "node_modules/@eslint/eslintrc/node_modules/type-fest": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+    "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/builtin-modules": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+      "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+      "dev": true,
       "engines": {
-        "node": ">=10"
+        "node": ">=6"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@gar/promisify": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
-      "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
-    },
-    "node_modules/@humanwhocodes/config-array": {
-      "version": "0.11.7",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
-      "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
+    "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": {
-        "@humanwhocodes/object-schema": "^1.2.1",
-        "debug": "^4.1.1",
-        "minimatch": "^3.0.5"
-      },
-      "engines": {
-        "node": ">=10.10.0"
-      }
-    },
-    "node_modules/@humanwhocodes/module-importer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-      "engines": {
-        "node": ">=12.22"
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/nzakas"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@humanwhocodes/object-schema": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
-      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
-    },
-    "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==",
-      "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"
-      },
+    "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": ">=8"
+        "node": ">=6"
       }
     },
-    "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
+    "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/@istanbuljs/load-nyc-config/node_modules/find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001469",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz",
+      "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        }
+      ]
     },
-    "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+    "node_modules/chalk": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+      "dev": true,
       "dependencies": {
-        "p-locate": "^4.1.0"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
         "node": ">=8"
       }
     },
-    "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
+    "node_modules/char-regex": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+      "dev": true,
       "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "node": ">=10"
       }
     },
-    "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+    "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": {
-        "p-limit": "^2.2.0"
+        "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"
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
       }
     },
-    "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==",
+    "node_modules/ci-info": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+      "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/sibiraj-s"
+        }
+      ],
       "engines": {
         "node": ">=8"
       }
     },
-    "node_modules/@jest/console": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
-      "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "jest-message-util": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
+    "node_modules/cjs-module-lexer": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
+      "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+      "dev": true
     },
-    "node_modules/@jest/console/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==",
+    "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": {
-        "color-convert": "^2.0.1"
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.1",
+        "wrap-ansi": "^7.0.0"
       },
       "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+        "node": ">=12"
       }
     },
-    "node_modules/@jest/console/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
+    "node_modules/co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+      "dev": true,
       "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
+        "iojs": ">= 1.0.0",
+        "node": ">= 0.12.0"
       }
     },
-    "node_modules/@jest/console/node_modules/color-convert": {
+    "node_modules/collect-v8-coverage": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
+      "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+      "dev": true
+    },
+    "node_modules/color-convert": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
       "dependencies": {
         "color-name": "~1.1.4"
       },
@@ -2548,1807 +1914,1765 @@
         "node": ">=7.0.0"
       }
     },
-    "node_modules/@jest/console/node_modules/color-name": {
+    "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=="
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
     },
-    "node_modules/@jest/console/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==",
+    "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": ">=8"
+        "node": ">= 0.8"
       }
     },
-    "node_modules/@jest/console/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==",
+    "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/commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+      "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/convert-source-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+      "dev": true
+    },
+    "node_modules/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": {
-        "has-flag": "^4.0.0"
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">= 8"
       }
     },
-    "node_modules/@jest/core": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
-      "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
-      "dependencies": {
-        "@jest/console": "^27.5.1",
-        "@jest/reporters": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.0.0",
-        "emittery": "^0.8.1",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.2.9",
-        "jest-changed-files": "^27.5.1",
-        "jest-config": "^27.5.1",
-        "jest-haste-map": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-resolve-dependencies": "^27.5.1",
-        "jest-runner": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "jest-watcher": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "rimraf": "^3.0.0",
-        "slash": "^3.0.0",
-        "strip-ansi": "^6.0.0"
+    "node_modules/css.escape": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+      "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
+      "dev": true
+    },
+    "node_modules/cssom": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+      "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
+      "dev": true
+    },
+    "node_modules/cssstyle": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+      "dev": true,
+      "dependencies": {
+        "cssom": "~0.3.6"
       },
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      },
-      "peerDependencies": {
-        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
-      },
-      "peerDependenciesMeta": {
-        "node-notifier": {
-          "optional": true
-        }
+        "node": ">=8"
       }
     },
-    "node_modules/@jest/core/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==",
+    "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/data-urls": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+      "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
+      "dev": true,
       "dependencies": {
-        "color-convert": "^2.0.1"
+        "abab": "^2.0.6",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^11.0.0"
       },
       "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+        "node": ">=12"
       }
     },
-    "node_modules/@jest/core/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+    "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": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
+        "ms": "2.1.2"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">=6.0"
       },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@jest/core/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==",
+    "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/dedent": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+      "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+      "dev": true
+    },
+    "node_modules/deep-equal": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz",
+      "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==",
+      "dev": true,
       "dependencies": {
-        "color-name": "~1.1.4"
+        "call-bind": "^1.0.2",
+        "es-get-iterator": "^1.1.2",
+        "get-intrinsic": "^1.1.3",
+        "is-arguments": "^1.1.1",
+        "is-array-buffer": "^3.0.1",
+        "is-date-object": "^1.0.5",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.2",
+        "isarray": "^2.0.5",
+        "object-is": "^1.1.5",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.4",
+        "regexp.prototype.flags": "^1.4.3",
+        "side-channel": "^1.0.4",
+        "which-boxed-primitive": "^1.0.2",
+        "which-collection": "^1.0.1",
+        "which-typed-array": "^1.1.9"
       },
-      "engines": {
-        "node": ">=7.0.0"
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@jest/core/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=="
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
     },
-    "node_modules/@jest/core/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==",
+    "node_modules/deepmerge": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+      "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": ">=0.10.0"
       }
     },
-    "node_modules/@jest/core/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==",
+    "node_modules/define-properties": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+      "dev": true,
       "dependencies": {
-        "has-flag": "^4.0.0"
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@jest/environment": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
-      "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
-      "dependencies": {
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "jest-mock": "^27.5.1"
-      },
+    "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">=0.4.0"
       }
     },
-    "node_modules/@jest/expect-utils": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz",
-      "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==",
-      "dependencies": {
-        "jest-get-type": "^29.2.0"
-      },
+    "node_modules/detect-newline": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+      "dev": true,
       "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+        "node": ">=8"
       }
     },
-    "node_modules/@jest/expect-utils/node_modules/jest-get-type": {
-      "version": "29.2.0",
-      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz",
-      "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==",
+    "node_modules/diff-sequences": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
+      "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+      "dev": true,
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@jest/fake-timers": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
-      "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+    "node_modules/dom-accessibility-api": {
+      "version": "0.5.16",
+      "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+      "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+      "dev": true
+    },
+    "node_modules/domexception": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+      "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+      "dev": true,
       "dependencies": {
-        "@jest/types": "^27.5.1",
-        "@sinonjs/fake-timers": "^8.0.1",
-        "@types/node": "*",
-        "jest-message-util": "^27.5.1",
-        "jest-mock": "^27.5.1",
-        "jest-util": "^27.5.1"
+        "webidl-conversions": "^7.0.0"
       },
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">=12"
       }
     },
-    "node_modules/@jest/globals": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
-      "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
-      "dependencies": {
-        "@jest/environment": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "expect": "^27.5.1"
-      },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.339",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.339.tgz",
+      "integrity": "sha512-MSXHBJGcbBydq/DQDlpBeUKnJ6C7aTiNCTRpfDV5Iz0sNr/Ng6RJFloq82AAicp/SrmDq4zF6XsKG0B8Xwn1UQ==",
+      "dev": true
+    },
+    "node_modules/emittery": {
+      "version": "0.13.1",
+      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+      "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+      "dev": true,
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/emittery?sponsor=1"
       }
     },
-    "node_modules/@jest/reporters": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
-      "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
-      "dependencies": {
-        "@bcoe/v8-coverage": "^0.2.3",
-        "@jest/console": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "collect-v8-coverage": "^1.0.0",
-        "exit": "^0.1.2",
-        "glob": "^7.1.2",
-        "graceful-fs": "^4.2.9",
-        "istanbul-lib-coverage": "^3.0.0",
-        "istanbul-lib-instrument": "^5.1.0",
-        "istanbul-lib-report": "^3.0.0",
-        "istanbul-lib-source-maps": "^4.0.0",
-        "istanbul-reports": "^3.1.3",
-        "jest-haste-map": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-worker": "^27.5.1",
-        "slash": "^3.0.0",
-        "source-map": "^0.6.0",
-        "string-length": "^4.0.1",
-        "terminal-link": "^2.0.0",
-        "v8-to-istanbul": "^8.1.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      },
-      "peerDependencies": {
-        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
-      },
-      "peerDependenciesMeta": {
-        "node-notifier": {
-          "optional": 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/@jest/reporters/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
+    "node_modules/entities": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
+      "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
+      "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": ">=0.12"
       },
       "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+        "url": "https://github.com/fb55/entities?sponsor=1"
       }
     },
-    "node_modules/@jest/reporters/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+    "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": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
+        "is-arrayish": "^0.2.1"
       }
     },
-    "node_modules/@jest/reporters/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==",
+    "node_modules/es-get-iterator": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+      "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+      "dev": true,
       "dependencies": {
-        "color-name": "~1.1.4"
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.3",
+        "has-symbols": "^1.0.3",
+        "is-arguments": "^1.1.1",
+        "is-map": "^2.0.2",
+        "is-set": "^2.0.2",
+        "is-string": "^1.0.7",
+        "isarray": "^2.0.5",
+        "stop-iteration-iterator": "^1.0.0"
       },
-      "engines": {
-        "node": ">=7.0.0"
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@jest/reporters/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=="
-    },
-    "node_modules/@jest/reporters/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==",
+    "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": ">=8"
+        "node": ">=6"
       }
     },
-    "node_modules/@jest/reporters/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==",
+    "node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+      "dev": true,
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=8"
       }
     },
-    "node_modules/@jest/reporters/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==",
+    "node_modules/escodegen": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+      "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+      "dev": true,
       "dependencies": {
-        "has-flag": "^4.0.0"
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1"
+      },
+      "bin": {
+        "escodegen": "bin/escodegen.js",
+        "esgenerate": "bin/esgenerate.js"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">=6.0"
+      },
+      "optionalDependencies": {
+        "source-map": "~0.6.1"
       }
     },
-    "node_modules/@jest/schemas": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz",
-      "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==",
-      "dependencies": {
-        "@sinclair/typebox": "^0.24.1"
+    "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": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+        "node": ">=4"
       }
     },
-    "node_modules/@jest/source-map": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
-      "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
-      "dependencies": {
-        "callsites": "^3.0.0",
-        "graceful-fs": "^4.2.9",
-        "source-map": "^0.6.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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">=4.0"
       }
     },
-    "node_modules/@jest/source-map/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==",
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "dev": true
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
     },
-    "node_modules/@jest/test-result": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
-      "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+    "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": {
-        "@jest/console": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "collect-v8-coverage": "^1.0.0"
+        "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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
       }
     },
-    "node_modules/@jest/test-sequencer": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
-      "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
-      "dependencies": {
-        "@jest/test-result": "^27.5.1",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-runtime": "^27.5.1"
-      },
+    "node_modules/exit": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+      "dev": true,
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">= 0.8.0"
       }
     },
-    "node_modules/@jest/transform": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
-      "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+    "node_modules/expect": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
+      "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
+      "dev": true,
       "dependencies": {
-        "@babel/core": "^7.1.0",
-        "@jest/types": "^27.5.1",
-        "babel-plugin-istanbul": "^6.1.1",
-        "chalk": "^4.0.0",
-        "convert-source-map": "^1.4.0",
-        "fast-json-stable-stringify": "^2.0.0",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "pirates": "^4.0.4",
-        "slash": "^3.0.0",
-        "source-map": "^0.6.1",
-        "write-file-atomic": "^3.0.0"
+        "@jest/expect-utils": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "jest-matcher-utils": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0"
       },
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@jest/transform/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==",
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "node_modules/fb-watchman": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+      "dev": true,
       "dependencies": {
-        "color-convert": "^2.0.1"
+        "bser": "2.1.1"
+      }
+    },
+    "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"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
-    "node_modules/@jest/transform/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+    "node_modules/find-cache-dir": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+      "dev": true,
       "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">=8"
       },
       "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
+        "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
       }
     },
-    "node_modules/@jest/transform/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==",
+    "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": {
-        "color-name": "~1.1.4"
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
       },
       "engines": {
-        "node": ">=7.0.0"
+        "node": ">=8"
       }
     },
-    "node_modules/@jest/transform/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=="
+    "node_modules/for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "dev": true,
+      "dependencies": {
+        "is-callable": "^1.1.3"
+      }
     },
-    "node_modules/@jest/transform/node_modules/has-flag": {
+    "node_modules/form-data": {
       "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dev": true,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
       "engines": {
-        "node": ">=8"
+        "node": ">= 6"
       }
     },
-    "node_modules/@jest/transform/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==",
+    "node_modules/fs-extra": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=12"
       }
     },
-    "node_modules/@jest/transform/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
       "engines": {
-        "node": ">=8"
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
       }
     },
-    "node_modules/@jest/types": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
-      "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^16.0.0",
-        "chalk": "^4.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/functions-have-names": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">=6.9.0"
       }
     },
-    "node_modules/@jest/types/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==",
+    "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.0",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
+      "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
+      "dev": true,
       "dependencies": {
-        "color-convert": "^2.0.1"
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "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"
+        "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/chalk/ansi-styles?sponsor=1"
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@jest/types/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+    "node_modules/glob": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "dev": true,
       "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">=12"
       },
       "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@jest/types/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==",
+    "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": {
-        "color-name": "~1.1.4"
+        "is-glob": "^4.0.1"
       },
       "engines": {
-        "node": ">=7.0.0"
+        "node": ">= 6"
       }
     },
-    "node_modules/@jest/types/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=="
-    },
-    "node_modules/@jest/types/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==",
+    "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": ">=8"
+        "node": ">=4"
       }
     },
-    "node_modules/@jest/types/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==",
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dev": true,
       "dependencies": {
-        "has-flag": "^4.0.0"
+        "get-intrinsic": "^1.1.3"
       },
-      "engines": {
-        "node": ">=8"
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
-      "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+    "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/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": {
-        "@jridgewell/set-array": "^1.0.0",
-        "@jridgewell/sourcemap-codec": "^1.4.10"
+        "function-bind": "^1.1.1"
       },
       "engines": {
-        "node": ">=6.0.0"
+        "node": ">= 0.4.0"
       }
     },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
-      "engines": {
-        "node": ">=6.0.0"
+    "node_modules/has-bigints": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@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==",
+    "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": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/source-map": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
-      "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.0",
-        "@jridgewell/trace-mapping": "^0.3.9"
+        "node": ">=8"
       }
     },
-    "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+      "dev": true,
       "dependencies": {
-        "@jridgewell/set-array": "^1.0.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.9"
+        "get-intrinsic": "^1.1.1"
       },
-      "engines": {
-        "node": ">=6.0.0"
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.4.14",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.17",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
-      "dependencies": {
-        "@jridgewell/resolve-uri": "3.1.0",
-        "@jridgewell/sourcemap-codec": "1.4.14"
+    "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/@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=="
-    },
-    "node_modules/@mui/base": {
-      "version": "5.0.0-alpha.106",
-      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.106.tgz",
-      "integrity": "sha512-xJQQtwPCPwr6hGWTBdvDwHYwExn3Bw7nPQkN8Fuz8kHpZqoMVWQvvaFS557AIkkI2AFLV3DxVIMjbCvrIntBWg==",
+    "node_modules/has-tostringtag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/runtime": "^7.20.1",
-        "@emotion/is-prop-valid": "^1.2.0",
-        "@mui/types": "^7.2.1",
-        "@mui/utils": "^5.10.14",
-        "@popperjs/core": "^2.11.6",
-        "clsx": "^1.2.1",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
+        "has-symbols": "^1.0.2"
       },
       "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0",
-        "react-dom": "^17.0.0 || ^18.0.0"
+        "node": ">= 0.4"
       },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/base/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
-    "node_modules/@mui/core-downloads-tracker": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.14.tgz",
-      "integrity": "sha512-qLgIJNOR9Dre8JiZ/neVzOf4jf88J6YtOkQqugtMrleLjbfRVUSS4LWl9CSOjNq76quYdmYWnSDgfQqOooT2cQ==",
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@mui/icons-material": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.14.tgz",
-      "integrity": "sha512-qtH60slQa+7MZRn6kyui8rKuoGDglPqaHX+pzBKNvd8JCOlrnfY5DmGGDdToTXyXl8xJ8nhANZbrbpg7UVKq/Q==",
+    "node_modules/html-encoding-sniffer": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+      "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+      "dev": true,
       "dependencies": {
-        "@babel/runtime": "^7.20.1"
+        "whatwg-encoding": "^2.0.0"
       },
       "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@mui/material": "^5.0.0",
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
+        "node": ">=12"
       }
     },
-    "node_modules/@mui/material": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.14.tgz",
-      "integrity": "sha512-HWzKVAykePMx54WtxVwZyL1W4k3xlHYIqwMw0CaXAvgB3UE9yjABZuuGr8vG5Z6CSNWamzd+s1x8u7pQPFl9og==",
+    "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/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": {
-        "@babel/runtime": "^7.20.1",
-        "@mui/base": "5.0.0-alpha.106",
-        "@mui/core-downloads-tracker": "^5.10.14",
-        "@mui/system": "^5.10.14",
-        "@mui/types": "^7.2.1",
-        "@mui/utils": "^5.10.14",
-        "@types/react-transition-group": "^4.4.5",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.1",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0",
-        "react-transition-group": "^4.4.5"
+        "@tootallnate/once": "2",
+        "agent-base": "6",
+        "debug": "4"
       },
       "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@emotion/react": "^11.5.0",
-        "@emotion/styled": "^11.3.0",
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0",
-        "react-dom": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@emotion/react": {
-          "optional": true
-        },
-        "@emotion/styled": {
-          "optional": true
-        },
-        "@types/react": {
-          "optional": true
-        }
+        "node": ">= 6"
       }
     },
-    "node_modules/@mui/material/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
-    "node_modules/@mui/private-theming": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.14.tgz",
-      "integrity": "sha512-3aIBe8WK65CwAPDY8nB11hYnzE1CZMymi76UnaFrA/DdGDwl5Y8F6uB+StKrkVmsqF1po7Mp2odqVkHj320gXw==",
+    "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": {
-        "@babel/runtime": "^7.20.1",
-        "@mui/utils": "^5.10.14",
-        "prop-types": "^15.8.1"
+        "agent-base": "6",
+        "debug": "4"
       },
       "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
+        "node": ">= 6"
       }
     },
-    "node_modules/@mui/styled-engine": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.14.tgz",
-      "integrity": "sha512-bgKdM57ExogWpIfhL/ngSlzF4FhbH00vYF+Y5VALTob4uslFqje0xzoWmbfcCn4cZt2NXxZJIwhsq4vzo5itlw==",
-      "dependencies": {
-        "@babel/runtime": "^7.20.1",
-        "@emotion/cache": "^11.10.5",
-        "csstype": "^3.1.1",
-        "prop-types": "^15.8.1"
-      },
+    "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": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@emotion/react": "^11.4.1",
-        "@emotion/styled": "^11.3.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@emotion/react": {
-          "optional": true
-        },
-        "@emotion/styled": {
-          "optional": true
-        }
+        "node": ">=10.17.0"
       }
     },
-    "node_modules/@mui/system": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.14.tgz",
-      "integrity": "sha512-2de7XCjRb1j8Od0Stmo0LwFMLpOMNT4wzfINuExXI1TVSuyxXIXUxiC5FEgJW3GMvf/a7SUR8VOiMoKlKWzukw==",
+    "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": {
-        "@babel/runtime": "^7.20.1",
-        "@mui/private-theming": "^5.10.14",
-        "@mui/styled-engine": "^5.10.14",
-        "@mui/types": "^7.2.1",
-        "@mui/utils": "^5.10.14",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.1",
-        "prop-types": "^15.8.1"
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
       },
       "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@emotion/react": "^11.5.0",
-        "@emotion/styled": "^11.3.0",
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@emotion/react": {
-          "optional": true
-        },
-        "@emotion/styled": {
-          "optional": true
-        },
-        "@types/react": {
-          "optional": true
-        }
+        "node": ">=0.10.0"
       }
     },
-    "node_modules/@mui/types": {
-      "version": "7.2.1",
-      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.1.tgz",
-      "integrity": "sha512-c5mSM7ivD8EsqK6HUi9hQPr5V7TJ/IRThUQ9nWNYPdhCGriTSQV4vL6DflT99LkM+wLiIS1rVjphpEWxERep7A==",
-      "peerDependencies": {
-        "@types/react": "*"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
+    "node_modules/immutable": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
+      "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
+      "dev": true
     },
-    "node_modules/@mui/utils": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.14.tgz",
-      "integrity": "sha512-12p59+wDZpA++XVJmKwqsZmrA1nmUQ5d0a1yQWtcDjxNyER1EDzozYN/db+FY2i5ceQh2TynPTEwGms2mXDwFg==",
+    "node_modules/import-local": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+      "dev": true,
       "dependencies": {
-        "@babel/runtime": "^7.20.1",
-        "@types/prop-types": "^15.7.5",
-        "@types/react-is": "^16.7.1 || ^17.0.0",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
+        "pkg-dir": "^4.2.0",
+        "resolve-cwd": "^3.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
       },
       "engines": {
-        "node": ">=12.0.0"
+        "node": ">=8"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "react": "^17.0.0 || ^18.0.0"
-      }
-    },
-    "node_modules/@mui/utils/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
-    "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
-      "version": "5.1.1-v1",
-      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
-      "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
-      "dependencies": {
-        "eslint-scope": "5.1.1"
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/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==",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
+    "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": ">=8.0.0"
+        "node": ">=0.8.19"
       }
     },
-    "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+    "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": ">=4.0"
+        "node": ">=8"
       }
     },
-    "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==",
+    "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": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "engines": {
-        "node": ">= 8"
+        "once": "^1.3.0",
+        "wrappy": "1"
       }
     },
-    "node_modules/@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "engines": {
-        "node": ">= 8"
-      }
+    "node_modules/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/@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==",
+    "node_modules/internal-slot": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+      "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
+      "dev": true,
       "dependencies": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
+        "get-intrinsic": "^1.2.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
       },
       "engines": {
-        "node": ">= 8"
+        "node": ">= 0.4"
       }
     },
-    "node_modules/@npmcli/fs": {
+    "node_modules/is-arguments": {
       "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
-      "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
-      "dependencies": {
-        "@gar/promisify": "^1.0.1",
-        "semver": "^7.3.5"
-      }
-    },
-    "node_modules/@npmcli/move-file": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
-      "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
-      "deprecated": "This functionality has been moved to @npmcli/fs",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+      "dev": true,
       "dependencies": {
-        "mkdirp": "^1.0.4",
-        "rimraf": "^3.0.2"
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       },
       "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/@npmcli/move-file/node_modules/mkdirp": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-      "bin": {
-        "mkdirp": "bin/cmd.js"
+        "node": ">= 0.4"
       },
-      "engines": {
-        "node": ">=10"
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@pmmmwh/react-refresh-webpack-plugin": {
-      "version": "0.5.9",
-      "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.9.tgz",
-      "integrity": "sha512-7QV4cqUwhkDIHpMAZ9mestSJ2DMIotVTbOUwbiudhjCRTAWWKIaBecELiEM2LT3AHFeOAaHIcFu4dbXjX+9GBA==",
+    "node_modules/is-array-buffer": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+      "dev": true,
       "dependencies": {
-        "ansi-html-community": "^0.0.8",
-        "common-path-prefix": "^3.0.0",
-        "core-js-pure": "^3.23.3",
-        "error-stack-parser": "^2.0.6",
-        "find-up": "^5.0.0",
-        "html-entities": "^2.1.0",
-        "loader-utils": "^2.0.3",
-        "schema-utils": "^3.0.0",
-        "source-map": "^0.7.3"
-      },
-      "engines": {
-        "node": ">= 10.13"
-      },
-      "peerDependencies": {
-        "@types/webpack": "4.x || 5.x",
-        "react-refresh": ">=0.10.0 <1.0.0",
-        "sockjs-client": "^1.4.0",
-        "type-fest": ">=0.17.0 <4.0.0",
-        "webpack": ">=4.43.0 <6.0.0",
-        "webpack-dev-server": "3.x || 4.x",
-        "webpack-hot-middleware": "2.x",
-        "webpack-plugin-serve": "0.x || 1.x"
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.0",
+        "is-typed-array": "^1.1.10"
       },
-      "peerDependenciesMeta": {
-        "@types/webpack": {
-          "optional": true
-        },
-        "sockjs-client": {
-          "optional": true
-        },
-        "type-fest": {
-          "optional": true
-        },
-        "webpack-dev-server": {
-          "optional": true
-        },
-        "webpack-hot-middleware": {
-          "optional": true
-        },
-        "webpack-plugin-serve": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@popperjs/core": {
-      "version": "2.11.6",
-      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
-      "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/popperjs"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@remix-run/router": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.3.tgz",
-      "integrity": "sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q==",
-      "engines": {
-        "node": ">=14"
-      }
+    "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/@rollup/plugin-babel": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
-      "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
+    "node_modules/is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-module-imports": "^7.10.4",
-        "@rollup/pluginutils": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "@types/babel__core": "^7.1.9",
-        "rollup": "^1.20.0||^2.0.0"
+        "has-bigints": "^1.0.1"
       },
-      "peerDependenciesMeta": {
-        "@types/babel__core": {
-          "optional": true
-        }
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@rollup/plugin-node-resolve": {
-      "version": "11.2.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
-      "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
+    "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": {
-        "@rollup/pluginutils": "^3.1.0",
-        "@types/resolve": "1.17.1",
-        "builtin-modules": "^3.1.0",
-        "deepmerge": "^4.2.2",
-        "is-module": "^1.0.0",
-        "resolve": "^1.19.0"
+        "binary-extensions": "^2.0.0"
       },
       "engines": {
-        "node": ">= 10.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0||^2.0.0"
+        "node": ">=8"
       }
     },
-    "node_modules/@rollup/plugin-replace": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
-      "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
+    "node_modules/is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "dev": true,
       "dependencies": {
-        "@rollup/pluginutils": "^3.1.0",
-        "magic-string": "^0.25.7"
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       },
-      "peerDependencies": {
-        "rollup": "^1.20.0 || ^2.0.0"
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@rollup/pluginutils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
-      "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+    "node_modules/is-builtin-module": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+      "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+      "dev": true,
       "dependencies": {
-        "@types/estree": "0.0.39",
-        "estree-walker": "^1.0.1",
-        "picomatch": "^2.2.2"
+        "builtin-modules": "^3.3.0"
       },
       "engines": {
-        "node": ">= 8.0.0"
+        "node": ">=6"
       },
-      "peerDependencies": {
-        "rollup": "^1.20.0||^2.0.0"
-      }
-    },
-    "node_modules/@rollup/pluginutils/node_modules/@types/estree": {
-      "version": "0.0.39",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
-    },
-    "node_modules/@rushstack/eslint-patch": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz",
-      "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg=="
-    },
-    "node_modules/@sinclair/typebox": {
-      "version": "0.24.51",
-      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
-      "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA=="
-    },
-    "node_modules/@sinonjs/commons": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz",
-      "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==",
-      "dependencies": {
-        "type-detect": "4.0.8"
-      }
-    },
-    "node_modules/@sinonjs/fake-timers": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
-      "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
-      "dependencies": {
-        "@sinonjs/commons": "^1.7.0"
-      }
-    },
-    "node_modules/@surma/rollup-plugin-off-main-thread": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
-      "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==",
-      "dependencies": {
-        "ejs": "^3.1.6",
-        "json5": "^2.2.0",
-        "magic-string": "^0.25.0",
-        "string.prototype.matchall": "^4.0.6"
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz",
-      "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==",
+    "node_modules/is-callable": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+      "dev": true,
       "engines": {
-        "node": ">=10"
+        "node": ">= 0.4"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz",
-      "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==",
-      "engines": {
-        "node": ">=10"
+    "node_modules/is-core-module": {
+      "version": "2.11.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.3"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz",
-      "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==",
+    "node_modules/is-date-object": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
       "engines": {
-        "node": ">=10"
+        "node": ">= 0.4"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz",
-      "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==",
+    "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": ">=10"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "node": ">=0.10.0"
       }
     },
-    "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz",
-      "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==",
+    "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": ">=10"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "node": ">=8"
       }
     },
-    "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz",
-      "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==",
+    "node_modules/is-generator-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+      "dev": true,
       "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "node": ">=6"
       }
     },
-    "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz",
-      "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==",
-      "engines": {
-        "node": ">=10"
+    "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-map": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+      "dev": true,
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/babel-plugin-transform-svg-component": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz",
-      "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==",
+    "node_modules/is-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+      "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
+      "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": ">=10"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "node": ">=0.12.0"
       }
     },
-    "node_modules/@svgr/babel-preset": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz",
-      "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==",
+    "node_modules/is-number-object": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+      "dev": true,
       "dependencies": {
-        "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0",
-        "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0",
-        "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1",
-        "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1",
-        "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0",
-        "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0",
-        "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0",
-        "@svgr/babel-plugin-transform-svg-component": "^5.5.0"
+        "has-tostringtag": "^1.0.0"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">= 0.4"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/core": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz",
-      "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==",
+    "node_modules/is-potential-custom-element-name": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+      "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+      "dev": true
+    },
+    "node_modules/is-reference": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
+      "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+      "dev": true,
       "dependencies": {
-        "@svgr/plugin-jsx": "^5.5.0",
-        "camelcase": "^6.2.0",
-        "cosmiconfig": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "@types/estree": "*"
       }
     },
-    "node_modules/@svgr/hast-util-to-babel-ast": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz",
-      "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==",
+    "node_modules/is-regex": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+      "dev": true,
       "dependencies": {
-        "@babel/types": "^7.12.6"
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">= 0.4"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/plugin-jsx": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz",
-      "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==",
-      "dependencies": {
-        "@babel/core": "^7.12.3",
-        "@svgr/babel-preset": "^5.5.0",
-        "@svgr/hast-util-to-babel-ast": "^5.5.0",
-        "svg-parser": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
+    "node_modules/is-set": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+      "dev": true,
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/plugin-svgo": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz",
-      "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==",
+    "node_modules/is-shared-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+      "dev": true,
       "dependencies": {
-        "cosmiconfig": "^7.0.0",
-        "deepmerge": "^4.2.2",
-        "svgo": "^1.2.2"
-      },
-      "engines": {
-        "node": ">=10"
+        "call-bind": "^1.0.2"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@svgr/webpack": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz",
-      "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==",
-      "dependencies": {
-        "@babel/core": "^7.12.3",
-        "@babel/plugin-transform-react-constant-elements": "^7.12.1",
-        "@babel/preset-env": "^7.12.1",
-        "@babel/preset-react": "^7.12.5",
-        "@svgr/core": "^5.5.0",
-        "@svgr/plugin-jsx": "^5.5.0",
-        "@svgr/plugin-svgo": "^5.5.0",
-        "loader-utils": "^2.0.0"
-      },
+    "node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "dev": true,
       "engines": {
-        "node": ">=10"
+        "node": ">=8"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@testing-library/dom": {
-      "version": "8.19.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz",
-      "integrity": "sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==",
+    "node_modules/is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+      "dev": true,
       "dependencies": {
-        "@babel/code-frame": "^7.10.4",
-        "@babel/runtime": "^7.12.5",
-        "@types/aria-query": "^4.2.0",
-        "aria-query": "^5.0.0",
-        "chalk": "^4.1.0",
-        "dom-accessibility-api": "^0.5.9",
-        "lz-string": "^1.4.4",
-        "pretty-format": "^27.0.2"
+        "has-tostringtag": "^1.0.0"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@testing-library/dom/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==",
+    "node_modules/is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+      "dev": true,
       "dependencies": {
-        "color-convert": "^2.0.1"
+        "has-symbols": "^1.0.2"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">= 0.4"
       },
       "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/@testing-library/dom/node_modules/aria-query": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
-      "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
-      "dependencies": {
-        "deep-equal": "^2.0.5"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@testing-library/dom/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+    "node_modules/is-typed-array": {
+      "version": "1.1.10",
+      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+      "dev": true,
       "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.2",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.0"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">= 0.4"
       },
       "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@testing-library/dom/node_modules/color-convert": {
+    "node_modules/is-weakmap": {
       "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-weakset": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+      "dev": true,
       "dependencies": {
-        "color-name": "~1.1.4"
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
       },
-      "engines": {
-        "node": ">=7.0.0"
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/@testing-library/dom/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=="
+    "node_modules/isarray": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+      "dev": true
     },
-    "node_modules/@testing-library/dom/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==",
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "node_modules/istanbul-lib-coverage": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+      "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+      "dev": true,
       "engines": {
         "node": ">=8"
       }
     },
-    "node_modules/@testing-library/dom/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==",
+    "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": {
-        "has-flag": "^4.0.0"
+        "@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/@testing-library/jest-dom": {
-      "version": "5.16.5",
-      "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz",
-      "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==",
+    "node_modules/istanbul-lib-report": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+      "dev": true,
       "dependencies": {
-        "@adobe/css-tools": "^4.0.1",
-        "@babel/runtime": "^7.9.2",
-        "@types/testing-library__jest-dom": "^5.9.1",
-        "aria-query": "^5.0.0",
-        "chalk": "^3.0.0",
-        "css.escape": "^1.5.1",
-        "dom-accessibility-api": "^0.5.6",
-        "lodash": "^4.17.15",
-        "redent": "^3.0.0"
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^3.0.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": ">=8",
-        "npm": ">=6",
-        "yarn": ">=1"
+        "node": ">=8"
       }
     },
-    "node_modules/@testing-library/jest-dom/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==",
+    "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": {
-        "color-convert": "^2.0.1"
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
       },
       "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/@testing-library/jest-dom/node_modules/aria-query": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
-      "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
-      "dependencies": {
-        "deep-equal": "^2.0.5"
+        "node": ">=10"
       }
     },
-    "node_modules/@testing-library/jest-dom/node_modules/chalk": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+    "node_modules/istanbul-reports": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+      "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+      "dev": true,
       "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
       },
       "engines": {
         "node": ">=8"
       }
     },
-    "node_modules/@testing-library/jest-dom/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==",
+    "node_modules/jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
+      "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
+      "dev": true,
       "dependencies": {
-        "color-name": "~1.1.4"
+        "@jest/core": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "import-local": "^3.0.2",
+        "jest-cli": "^29.5.0"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
       },
       "engines": {
-        "node": ">=7.0.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@testing-library/jest-dom/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=="
-    },
-    "node_modules/@testing-library/jest-dom/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==",
+    "node_modules/jest-changed-files": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
+      "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
+      "dev": true,
+      "dependencies": {
+        "execa": "^5.0.0",
+        "p-limit": "^3.1.0"
+      },
       "engines": {
-        "node": ">=8"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@testing-library/jest-dom/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
+    "node_modules/jest-circus": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
+      "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.5.0",
+        "@jest/expect": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "dedent": "^0.7.0",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^29.5.0",
+        "jest-matcher-utils": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-runtime": "^29.5.0",
+        "jest-snapshot": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "p-limit": "^3.1.0",
+        "pretty-format": "^29.5.0",
+        "pure-rand": "^6.0.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
       },
       "engines": {
-        "node": ">=8"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@testing-library/react": {
-      "version": "13.4.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz",
-      "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==",
+    "node_modules/jest-circus/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@babel/runtime": "^7.12.5",
-        "@testing-library/dom": "^8.5.0",
-        "@types/react-dom": "^18.0.0"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=10"
       },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@testing-library/user-event": {
-      "version": "13.5.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
-      "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==",
-      "dependencies": {
-        "@babel/runtime": "^7.12.5"
+    "node_modules/jest-cli": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
+      "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/core": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "import-local": "^3.0.2",
+        "jest-config": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "prompts": "^2.0.1",
+        "yargs": "^17.3.1"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
       },
       "engines": {
-        "node": ">=10",
-        "npm": ">=6"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       },
       "peerDependencies": {
-        "@testing-library/dom": ">=7.21.4"
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": 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==",
+    "node_modules/jest-cli/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
       "engines": {
-        "node": ">= 6"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@trysound/sax": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
-      "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+    "node_modules/jest-config": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
+      "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@jest/test-sequencer": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "babel-jest": "^29.5.0",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "deepmerge": "^4.2.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-circus": "^29.5.0",
+        "jest-environment-node": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "jest-regex-util": "^29.4.3",
+        "jest-resolve": "^29.5.0",
+        "jest-runner": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "parse-json": "^5.2.0",
+        "pretty-format": "^29.5.0",
+        "slash": "^3.0.0",
+        "strip-json-comments": "^3.1.1"
+      },
       "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/@types/aria-query": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
-      "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig=="
-    },
-    "node_modules/@types/babel__core": {
-      "version": "7.1.20",
-      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz",
-      "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==",
-      "dependencies": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0",
-        "@types/babel__generator": "*",
-        "@types/babel__template": "*",
-        "@types/babel__traverse": "*"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@types/node": "*",
+        "ts-node": ">=9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "ts-node": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@types/babel__generator": {
-      "version": "7.6.4",
-      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
-      "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+    "node_modules/jest-config/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": {
-        "@babel/types": "^7.0.0"
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
       }
     },
-    "node_modules/@types/babel__template": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
-      "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+    "node_modules/jest-config/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/babel__traverse": {
-      "version": "7.18.2",
-      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz",
-      "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==",
+    "node_modules/jest-config/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": {
-        "@babel/types": "^7.3.0"
+        "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/@types/body-parser": {
-      "version": "1.19.2",
-      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
-      "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+    "node_modules/jest-config/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": {
-        "@types/connect": "*",
-        "@types/node": "*"
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "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==",
+    "node_modules/jest-diff": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
+      "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
+      "dev": true,
       "dependencies": {
-        "@types/node": "*"
+        "chalk": "^4.0.0",
+        "diff-sequences": "^29.4.3",
+        "jest-get-type": "^29.4.3",
+        "pretty-format": "^29.5.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/connect": {
-      "version": "3.4.35",
-      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
-      "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+    "node_modules/jest-diff/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/connect-history-api-fallback": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
-      "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
-      "dependencies": {
-        "@types/express-serve-static-core": "*",
-        "@types/node": "*"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/eslint": {
-      "version": "8.4.10",
-      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
-      "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
+    "node_modules/jest-docblock": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
+      "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
+      "dev": true,
       "dependencies": {
-        "@types/estree": "*",
-        "@types/json-schema": "*"
+        "detect-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "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==",
+    "node_modules/jest-each": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
+      "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
+      "dev": true,
       "dependencies": {
-        "@types/eslint": "*",
-        "@types/estree": "*"
+        "@jest/types": "^29.5.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.4.3",
+        "jest-util": "^29.5.0",
+        "pretty-format": "^29.5.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/estree": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
-      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ=="
-    },
-    "node_modules/@types/express": {
-      "version": "4.17.14",
-      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz",
-      "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==",
+    "node_modules/jest-each/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@types/body-parser": "*",
-        "@types/express-serve-static-core": "^4.17.18",
-        "@types/qs": "*",
-        "@types/serve-static": "*"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/express-serve-static-core": {
-      "version": "4.17.31",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz",
-      "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==",
-      "dependencies": {
+    "node_modules/jest-environment-jsdom": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.5.0.tgz",
+      "integrity": "sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.5.0",
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/jsdom": "^20.0.0",
         "@types/node": "*",
-        "@types/qs": "*",
-        "@types/range-parser": "*"
-      }
-    },
-    "node_modules/@types/graceful-fs": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
-      "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/html-minifier-terser": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
-      "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg=="
-    },
-    "node_modules/@types/http-proxy": {
-      "version": "1.17.9",
-      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz",
-      "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==",
-      "dependencies": {
-        "@types/node": "*"
+        "jest-mock": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jsdom": "^20.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "canvas": "^2.5.0"
+      },
+      "peerDependenciesMeta": {
+        "canvas": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@types/istanbul-lib-coverage": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
-      "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g=="
-    },
-    "node_modules/@types/istanbul-lib-report": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-      "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*"
+    "node_modules/jest-environment-node": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
+      "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.5.0",
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "jest-mock": "^29.5.0",
+        "jest-util": "^29.5.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/istanbul-reports": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
-      "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
-      "dependencies": {
-        "@types/istanbul-lib-report": "*"
+    "node_modules/jest-get-type": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
+      "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
+      "dev": true,
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest": {
-      "version": "29.2.3",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz",
-      "integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==",
+    "node_modules/jest-haste-map": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
+      "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
+      "dev": true,
       "dependencies": {
-        "expect": "^29.0.0",
-        "pretty-format": "^29.0.0"
+        "@jest/types": "^29.5.0",
+        "@types/graceful-fs": "^4.1.3",
+        "@types/node": "*",
+        "anymatch": "^3.0.3",
+        "fb-watchman": "^2.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-regex-util": "^29.4.3",
+        "jest-util": "^29.5.0",
+        "jest-worker": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "walker": "^1.0.8"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "^2.3.2"
       }
     },
-    "node_modules/@types/jest/node_modules/@jest/schemas": {
-      "version": "29.0.0",
-      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz",
-      "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==",
+    "node_modules/jest-leak-detector": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
+      "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
+      "dev": true,
       "dependencies": {
-        "@sinclair/typebox": "^0.24.1"
+        "jest-get-type": "^29.4.3",
+        "pretty-format": "^29.5.0"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/@jest/types": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz",
-      "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==",
+    "node_modules/jest-matcher-utils": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
+      "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
+      "dev": true,
       "dependencies": {
-        "@jest/schemas": "^29.0.0",
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^17.0.8",
-        "chalk": "^4.0.0"
+        "chalk": "^4.0.0",
+        "jest-diff": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "pretty-format": "^29.5.0"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/@types/yargs": {
-      "version": "17.0.13",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz",
-      "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==",
+    "node_modules/jest-matcher-utils/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@types/yargs-parser": "*"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/jest/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==",
+    "node_modules/jest-message-util": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
+      "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+      "dev": true,
       "dependencies": {
-        "color-convert": "^2.0.1"
+        "@babel/code-frame": "^7.12.13",
+        "@jest/types": "^29.5.0",
+        "@types/stack-utils": "^2.0.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.5.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
       },
       "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/chalk": {
+    "node_modules/jest-message-util/node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -4360,25574 +3684,5914 @@
         "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/jest/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==",
+    "node_modules/jest-mock": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
+      "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
+      "dev": true,
       "dependencies": {
-        "color-name": "~1.1.4"
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "jest-util": "^29.5.0"
       },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/@types/jest/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=="
-    },
-    "node_modules/@types/jest/node_modules/diff-sequences": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz",
-      "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==",
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/expect": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz",
-      "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==",
-      "dependencies": {
-        "@jest/expect-utils": "^29.3.1",
-        "jest-get-type": "^29.2.0",
-        "jest-matcher-utils": "^29.3.1",
-        "jest-message-util": "^29.3.1",
-        "jest-util": "^29.3.1"
-      },
+    "node_modules/jest-pnp-resolver": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+      "dev": true,
       "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "jest-resolve": "*"
+      },
+      "peerDependenciesMeta": {
+        "jest-resolve": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@types/jest/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==",
+    "node_modules/jest-regex-util": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
+      "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
+      "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/jest-diff": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz",
-      "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==",
+    "node_modules/jest-resolve": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
+      "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
+      "dev": true,
       "dependencies": {
         "chalk": "^4.0.0",
-        "diff-sequences": "^29.3.1",
-        "jest-get-type": "^29.2.0",
-        "pretty-format": "^29.3.1"
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.5.0",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "resolve": "^1.20.0",
+        "resolve.exports": "^2.0.0",
+        "slash": "^3.0.0"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/jest-get-type": {
-      "version": "29.2.0",
-      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz",
-      "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==",
+    "node_modules/jest-resolve-dependencies": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
+      "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
+      "dev": true,
+      "dependencies": {
+        "jest-regex-util": "^29.4.3",
+        "jest-snapshot": "^29.5.0"
+      },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/jest-matcher-utils": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz",
-      "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==",
+    "node_modules/jest-resolve/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "chalk": "^4.0.0",
-        "jest-diff": "^29.3.1",
-        "jest-get-type": "^29.2.0",
-        "pretty-format": "^29.3.1"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/jest/node_modules/jest-message-util": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz",
-      "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==",
-      "dependencies": {
-        "@babel/code-frame": "^7.12.13",
-        "@jest/types": "^29.3.1",
-        "@types/stack-utils": "^2.0.0",
+    "node_modules/jest-runner": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
+      "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.5.0",
+        "@jest/environment": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
         "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
         "graceful-fs": "^4.2.9",
-        "micromatch": "^4.0.4",
-        "pretty-format": "^29.3.1",
-        "slash": "^3.0.0",
-        "stack-utils": "^2.0.3"
+        "jest-docblock": "^29.4.3",
+        "jest-environment-node": "^29.5.0",
+        "jest-haste-map": "^29.5.0",
+        "jest-leak-detector": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-resolve": "^29.5.0",
+        "jest-runtime": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-watcher": "^29.5.0",
+        "jest-worker": "^29.5.0",
+        "p-limit": "^3.1.0",
+        "source-map-support": "0.5.13"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/jest-util": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz",
-      "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==",
+    "node_modules/jest-runner/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@jest/types": "^29.3.1",
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/jest-runtime": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
+      "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.5.0",
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/globals": "^29.5.0",
+        "@jest/source-map": "^29.4.3",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
         "@types/node": "*",
         "chalk": "^4.0.0",
-        "ci-info": "^3.2.0",
+        "cjs-module-lexer": "^1.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "glob": "^7.1.3",
         "graceful-fs": "^4.2.9",
-        "picomatch": "^2.2.3"
+        "jest-haste-map": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-mock": "^29.5.0",
+        "jest-regex-util": "^29.4.3",
+        "jest-resolve": "^29.5.0",
+        "jest-snapshot": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "slash": "^3.0.0",
+        "strip-bom": "^4.0.0"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/jest/node_modules/pretty-format": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz",
-      "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==",
+    "node_modules/jest-runtime/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": {
-        "@jest/schemas": "^29.0.0",
-        "ansi-styles": "^5.0.0",
-        "react-is": "^18.0.0"
-      },
-      "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
       }
     },
-    "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
-      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+    "node_modules/jest-runtime/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
       "engines": {
         "node": ">=10"
       },
       "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/jest/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
-    "node_modules/@types/jest/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
+    "node_modules/jest-runtime/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": ">=8"
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@types/json-schema": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
-    },
-    "node_modules/@types/json5": {
-      "version": "0.0.29",
-      "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
-      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
-    },
-    "node_modules/@types/mime": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
-      "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
-    },
-    "node_modules/@types/minimist": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
-      "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ=="
-    },
-    "node_modules/@types/node": {
-      "version": "18.11.9",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
-      "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
-    },
-    "node_modules/@types/normalize-package-data": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
-      "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw=="
-    },
-    "node_modules/@types/parse-json": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
-    },
-    "node_modules/@types/prettier": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz",
-      "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow=="
-    },
-    "node_modules/@types/prop-types": {
-      "version": "15.7.5",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
-    },
-    "node_modules/@types/q": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
-      "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ=="
-    },
-    "node_modules/@types/qs": {
-      "version": "6.9.7",
-      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
-      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
-    },
-    "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=="
-    },
-    "node_modules/@types/react": {
-      "version": "18.0.25",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz",
-      "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==",
+    "node_modules/jest-runtime/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": {
-        "@types/prop-types": "*",
-        "@types/scheduler": "*",
-        "csstype": "^3.0.2"
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
       }
     },
-    "node_modules/@types/react-dom": {
-      "version": "18.0.9",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz",
-      "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==",
+    "node_modules/jest-snapshot": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
+      "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
+      "dev": true,
       "dependencies": {
-        "@types/react": "*"
+        "@babel/core": "^7.11.6",
+        "@babel/generator": "^7.7.2",
+        "@babel/plugin-syntax-jsx": "^7.7.2",
+        "@babel/plugin-syntax-typescript": "^7.7.2",
+        "@babel/traverse": "^7.7.2",
+        "@babel/types": "^7.3.3",
+        "@jest/expect-utils": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/babel__traverse": "^7.0.6",
+        "@types/prettier": "^2.1.5",
+        "babel-preset-current-node-syntax": "^1.0.0",
+        "chalk": "^4.0.0",
+        "expect": "^29.5.0",
+        "graceful-fs": "^4.2.9",
+        "jest-diff": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "jest-matcher-utils": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "natural-compare": "^1.4.0",
+        "pretty-format": "^29.5.0",
+        "semver": "^7.3.5"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/react-is": {
-      "version": "17.0.3",
-      "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
-      "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
+    "node_modules/jest-snapshot/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@types/react": "*"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+    "node_modules/jest-snapshot/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": {
-        "@types/react": "*"
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
-    "node_modules/@types/resolve": {
-      "version": "1.17.1",
-      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
-      "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
+    "node_modules/jest-snapshot/node_modules/semver": {
+      "version": "7.3.8",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "dev": true,
       "dependencies": {
-        "@types/node": "*"
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
-    "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=="
-    },
-    "node_modules/@types/scheduler": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
-      "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
-    },
-    "node_modules/@types/semver": {
-      "version": "7.3.13",
-      "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
-      "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw=="
-    },
-    "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==",
-      "dependencies": {
-        "@types/express": "*"
-      }
+    "node_modules/jest-snapshot/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/@types/serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
+    "node_modules/jest-util": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
+      "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+      "dev": true,
       "dependencies": {
-        "@types/mime": "*",
-        "@types/node": "*"
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "graceful-fs": "^4.2.9",
+        "picomatch": "^2.2.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/sockjs": {
-      "version": "0.3.33",
-      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
-      "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
+    "node_modules/jest-util/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@types/node": "*"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@types/stack-utils": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
-      "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
-    },
-    "node_modules/@types/testing-library__jest-dom": {
-      "version": "5.14.5",
-      "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
-      "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==",
+    "node_modules/jest-validate": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
+      "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
+      "dev": true,
       "dependencies": {
-        "@types/jest": "*"
+        "@jest/types": "^29.5.0",
+        "camelcase": "^6.2.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.4.3",
+        "leven": "^3.1.0",
+        "pretty-format": "^29.5.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@types/trusted-types": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz",
-      "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg=="
-    },
-    "node_modules/@types/ws": {
-      "version": "8.5.3",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
-      "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==",
-      "dependencies": {
-        "@types/node": "*"
+    "node_modules/jest-validate/node_modules/camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/@types/yargs": {
-      "version": "16.0.4",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
-      "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
+    "node_modules/jest-validate/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@types/yargs-parser": {
-      "version": "21.0.0",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
-      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
-    },
-    "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz",
-      "integrity": "sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==",
-      "dependencies": {
-        "@typescript-eslint/scope-manager": "5.43.0",
-        "@typescript-eslint/type-utils": "5.43.0",
-        "@typescript-eslint/utils": "5.43.0",
-        "debug": "^4.3.4",
-        "ignore": "^5.2.0",
-        "natural-compare-lite": "^1.4.0",
-        "regexpp": "^3.2.0",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": ">=10"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "@typescript-eslint/parser": "^5.0.0",
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@typescript-eslint/experimental-utils": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.43.0.tgz",
-      "integrity": "sha512-WkT637CumTJbm/hRbFfnHBMgfUYTKr08LitVsD7gQId7bi6rnkx3pu3jac67lmp5ObW4MpJ9SNFZAIOUB/Qbsw==",
+    "node_modules/jest-watcher": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
+      "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
+      "dev": true,
       "dependencies": {
-        "@typescript-eslint/utils": "5.43.0"
+        "@jest/test-result": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
+        "jest-util": "^29.5.0",
+        "string-length": "^4.0.1"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@typescript-eslint/parser": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz",
-      "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==",
+    "node_modules/jest-watcher/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
       "dependencies": {
-        "@typescript-eslint/scope-manager": "5.43.0",
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/typescript-estree": "5.43.0",
-        "debug": "^4.3.4"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": ">=10"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz",
-      "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==",
+    "node_modules/jest-worker": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
+      "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
+      "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/visitor-keys": "5.43.0"
+        "@types/node": "*",
+        "jest-util": "^29.5.0",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/@typescript-eslint/type-utils": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz",
-      "integrity": "sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==",
+    "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": {
-        "@typescript-eslint/typescript-estree": "5.43.0",
-        "@typescript-eslint/utils": "5.43.0",
-        "debug": "^4.3.4",
-        "tsutils": "^3.21.0"
+        "has-flag": "^4.0.0"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": ">=10"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "*"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+        "url": "https://github.com/chalk/supports-color?sponsor=1"
       }
     },
-    "node_modules/@typescript-eslint/types": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz",
-      "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+    },
+    "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"
       },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
       }
     },
-    "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz",
-      "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==",
-      "dependencies": {
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/visitor-keys": "5.43.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
+    "node_modules/jsdom": {
+      "version": "20.0.3",
+      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
+      "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
+      "dev": true,
+      "dependencies": {
+        "abab": "^2.0.6",
+        "acorn": "^8.8.1",
+        "acorn-globals": "^7.0.0",
+        "cssom": "^0.5.0",
+        "cssstyle": "^2.3.0",
+        "data-urls": "^3.0.2",
+        "decimal.js": "^10.4.2",
+        "domexception": "^4.0.0",
+        "escodegen": "^2.0.0",
+        "form-data": "^4.0.0",
+        "html-encoding-sniffer": "^3.0.0",
+        "http-proxy-agent": "^5.0.0",
+        "https-proxy-agent": "^5.0.1",
+        "is-potential-custom-element-name": "^1.0.1",
+        "nwsapi": "^2.2.2",
+        "parse5": "^7.1.1",
+        "saxes": "^6.0.0",
+        "symbol-tree": "^3.2.4",
+        "tough-cookie": "^4.1.2",
+        "w3c-xmlserializer": "^4.0.0",
+        "webidl-conversions": "^7.0.0",
+        "whatwg-encoding": "^2.0.0",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^11.0.0",
+        "ws": "^8.11.0",
+        "xml-name-validator": "^4.0.0"
       },
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": ">=14"
       },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+      "peerDependencies": {
+        "canvas": "^2.5.0"
       },
       "peerDependenciesMeta": {
-        "typescript": {
+        "canvas": {
           "optional": true
         }
       }
     },
-    "node_modules/@typescript-eslint/utils": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.43.0.tgz",
-      "integrity": "sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==",
-      "dependencies": {
-        "@types/json-schema": "^7.0.9",
-        "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.43.0",
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/typescript-estree": "5.43.0",
-        "eslint-scope": "^5.1.1",
-        "eslint-utils": "^3.0.0",
-        "semver": "^7.3.7"
+    "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": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+        "node": ">=4"
       }
     },
-    "node_modules/@typescript-eslint/utils/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==",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
+    "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/@typescript-eslint/utils/node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+    "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": ">=4.0"
+        "node": ">=6"
       }
     },
-    "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz",
-      "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==",
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.43.0",
-        "eslint-visitor-keys": "^3.3.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "universalify": "^2.0.0"
       },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
       }
     },
-    "node_modules/@webassemblyjs/ast": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
-      "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
-      "dependencies": {
-        "@webassemblyjs/helper-numbers": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
+    "node_modules/kleur": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
       }
     },
-    "node_modules/@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
-      "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="
-    },
-    "node_modules/@webassemblyjs/helper-api-error": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
-      "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="
-    },
-    "node_modules/@webassemblyjs/helper-buffer": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
-      "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="
-    },
-    "node_modules/@webassemblyjs/helper-numbers": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
-      "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
-      "dependencies": {
-        "@webassemblyjs/floating-point-hex-parser": "1.11.1",
-        "@webassemblyjs/helper-api-error": "1.11.1",
-        "@xtuc/long": "4.2.2"
+    "node_modules/leven": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
       }
     },
-    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
-      "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="
-    },
-    "node_modules/@webassemblyjs/helper-wasm-section": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
-      "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
+    "node_modules/levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+      "dev": true,
       "dependencies": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-buffer": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/wasm-gen": "1.11.1"
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
       }
     },
-    "node_modules/@webassemblyjs/ieee754": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
-      "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
-      "dependencies": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "dev": true
     },
-    "node_modules/@webassemblyjs/leb128": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
-      "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
+    "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": {
-        "@xtuc/long": "4.2.2"
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "node_modules/@webassemblyjs/utf8": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
-      "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="
+    "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/@webassemblyjs/wasm-edit": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
-      "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-buffer": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/helper-wasm-section": "1.11.1",
-        "@webassemblyjs/wasm-gen": "1.11.1",
-        "@webassemblyjs/wasm-opt": "1.11.1",
-        "@webassemblyjs/wasm-parser": "1.11.1",
-        "@webassemblyjs/wast-printer": "1.11.1"
-      }
+    "node_modules/lodash.memoize": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+      "dev": true
     },
-    "node_modules/@webassemblyjs/wasm-gen": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
-      "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
+    "node_modules/loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
       "dependencies": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/ieee754": "1.11.1",
-        "@webassemblyjs/leb128": "1.11.1",
-        "@webassemblyjs/utf8": "1.11.1"
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      },
+      "bin": {
+        "loose-envify": "cli.js"
       }
     },
-    "node_modules/@webassemblyjs/wasm-opt": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
-      "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
+    "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": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-buffer": "1.11.1",
-        "@webassemblyjs/wasm-gen": "1.11.1",
-        "@webassemblyjs/wasm-parser": "1.11.1"
+        "yallist": "^3.0.2"
       }
     },
-    "node_modules/@webassemblyjs/wasm-parser": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
-      "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
+    "node_modules/magic-string": {
+      "version": "0.27.0",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
+      "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+      "dev": true,
       "dependencies": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-api-error": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/ieee754": "1.11.1",
-        "@webassemblyjs/leb128": "1.11.1",
-        "@webassemblyjs/utf8": "1.11.1"
+        "@jridgewell/sourcemap-codec": "^1.4.13"
+      },
+      "engines": {
+        "node": ">=12"
       }
     },
-    "node_modules/@webassemblyjs/wast-printer": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
-      "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "dev": true,
       "dependencies": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@xtuc/long": "4.2.2"
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "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=="
-    },
-    "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=="
+    "node_modules/make-error": {
+      "version": "1.3.6",
+      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+      "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+      "dev": true
     },
-    "node_modules/abab": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
-      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
+    "node_modules/makeerror": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+      "dev": true,
+      "dependencies": {
+        "tmpl": "1.0.5"
+      }
     },
-    "node_modules/abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+    "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/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==",
+    "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": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
       },
       "engines": {
-        "node": ">= 0.6"
+        "node": ">=8.6"
       }
     },
-    "node_modules/acorn": {
-      "version": "8.8.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
-      "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
+    "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.4.0"
+        "node": ">= 0.6"
       }
     },
-    "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==",
+    "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": {
-        "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==",
-      "bin": {
-        "acorn": "bin/acorn"
+        "mime-db": "1.52.0"
       },
       "engines": {
-        "node": ">=0.4.0"
+        "node": ">= 0.6"
       }
     },
-    "node_modules/acorn-import-assertions": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
-      "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
-      "peerDependencies": {
-        "acorn": "^8"
+    "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/acorn-jsx": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "peerDependencies": {
-        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+    "node_modules/min-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
       }
     },
-    "node_modules/acorn-node": {
-      "version": "1.8.2",
-      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
-      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
+    "node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dev": true,
       "dependencies": {
-        "acorn": "^7.0.0",
-        "acorn-walk": "^7.0.0",
-        "xtend": "^4.0.2"
-      }
-    },
-    "node_modules/acorn-node/node_modules/acorn": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
-      "bin": {
-        "acorn": "bin/acorn"
+        "brace-expansion": "^2.0.1"
       },
       "engines": {
-        "node": ">=0.4.0"
+        "node": ">=10"
       }
     },
-    "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==",
-      "engines": {
-        "node": ">=0.4.0"
-      }
+    "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/address": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz",
-      "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==",
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "node_modules/node-int64": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.10",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
+      "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
+      "dev": true
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
       "engines": {
-        "node": ">= 10.0.0"
+        "node": ">=0.10.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==",
+    "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": {
-        "loader-utils": "^2.0.0",
-        "regex-parser": "^2.2.11"
+        "path-key": "^3.0.0"
       },
       "engines": {
-        "node": ">=8.9"
+        "node": ">=8"
       }
     },
-    "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==",
-      "dependencies": {
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
+    "node_modules/nwsapi": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz",
+      "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
+      "dev": true
+    },
+    "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/agentkeepalive": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
-      "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
+    "node_modules/object-is": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+      "dev": true,
       "dependencies": {
-        "debug": "^4.1.0",
-        "depd": "^1.1.2",
-        "humanize-ms": "^1.2.1"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
       },
       "engines": {
-        "node": ">= 8.0.0"
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/agentkeepalive/node_modules/depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true,
       "engines": {
-        "node": ">= 0.6"
+        "node": ">= 0.4"
       }
     },
-    "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==",
+    "node_modules/object.assign": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+      "dev": true,
       "dependencies": {
-        "clean-stack": "^2.0.0",
-        "indent-string": "^4.0.0"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
       },
       "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "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"
+        "node": ">= 0.4"
       },
       "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "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==",
-      "dependencies": {
-        "ajv": "^8.0.0"
-      },
-      "peerDependencies": {
-        "ajv": "^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "ajv": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/ajv-formats/node_modules/ajv": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-      "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
+    "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": {
-        "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/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=="
-    },
-    "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==",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
+        "wrappy": "1"
       }
     },
-    "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==",
+    "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": {
-        "type-fest": "^0.21.3"
+        "mimic-fn": "^2.1.0"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">=6"
       },
       "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==",
-      "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==",
-      "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==",
+    "node_modules/optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+      "dev": true,
       "dependencies": {
-        "color-convert": "^1.9.0"
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">= 0.8.0"
       }
     },
-    "node_modules/anymatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
       "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
+        "yocto-queue": "^0.1.0"
       },
       "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=="
-    },
-    "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==",
-      "dependencies": {
-        "delegates": "^1.0.0",
-        "readable-stream": "^3.6.0"
+        "node": ">=10"
       },
-      "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=="
-    },
-    "node_modules/argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "dependencies": {
-        "sprintf-js": "~1.0.2"
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/aria-query": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
-      "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+    "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": {
-        "@babel/runtime": "^7.10.2",
-        "@babel/runtime-corejs3": "^7.10.2"
+        "p-limit": "^2.2.0"
       },
       "engines": {
-        "node": ">=6.0"
+        "node": ">=8"
       }
     },
-    "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=="
-    },
-    "node_modules/array-includes": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
-      "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
+    "node_modules/p-locate/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": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "is-string": "^1.0.7"
+        "p-try": "^2.0.0"
       },
       "engines": {
-        "node": ">= 0.4"
+        "node": ">=6"
       },
       "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+    "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": ">=8"
+        "node": ">=6"
       }
     },
-    "node_modules/array.prototype.flat": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
-      "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
+    "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": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0"
+        "@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": ">= 0.4"
+        "node": ">=8"
       },
       "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/array.prototype.flatmap": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
-      "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+    "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": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
+        "entities": "^4.4.0"
       },
       "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
       }
     },
-    "node_modules/array.prototype.reduce": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
-      "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-array-method-boxes-properly": "^1.0.0",
-        "is-string": "^1.0.7"
-      },
+    "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": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+        "node": ">=8"
       }
     },
-    "node_modules/arrify": {
+    "node_modules/path-is-absolute": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+      "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/asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
-    },
-    "node_modules/asn1": {
-      "version": "0.2.6",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
-      "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
-      "dependencies": {
-        "safer-buffer": "~2.1.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/assert-plus": {
+    "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/picocolors": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+      "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": ">=0.8"
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
       }
     },
-    "node_modules/ast-types-flow": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
-      "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag=="
-    },
-    "node_modules/async": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
-      "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
-    },
-    "node_modules/async-foreach": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
-      "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==",
+    "node_modules/pirates": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+      "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+      "dev": true,
       "engines": {
-        "node": "*"
+        "node": ">= 6"
       }
     },
-    "node_modules/asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
     },
-    "node_modules/at-least-node": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
-      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+    "node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+      "dev": true,
       "engines": {
-        "node": ">= 4.0.0"
+        "node": ">= 0.8.0"
       }
     },
-    "node_modules/autoprefixer": {
-      "version": "10.4.13",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
-      "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/autoprefixer"
-        }
-      ],
+    "node_modules/pretty-format": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+      "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+      "dev": true,
       "dependencies": {
-        "browserslist": "^4.21.4",
-        "caniuse-lite": "^1.0.30001426",
-        "fraction.js": "^4.2.0",
-        "normalize-range": "^0.1.2",
-        "picocolors": "^1.0.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "bin": {
-        "autoprefixer": "bin/autoprefixer"
+        "@jest/schemas": "^29.4.3",
+        "ansi-styles": "^5.0.0",
+        "react-is": "^18.0.0"
       },
       "engines": {
-        "node": "^10 || ^12 || >=14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/available-typed-arrays": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
-      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+    "node_modules/pretty-format/node_modules/ansi-styles": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+      "dev": true,
       "engines": {
-        "node": ">= 0.4"
+        "node": ">=10"
       },
       "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
-    "node_modules/aws-sign2": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+    "node_modules/prompts": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+      "dev": true,
+      "dependencies": {
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.5"
+      },
       "engines": {
-        "node": "*"
+        "node": ">= 6"
       }
     },
-    "node_modules/aws4": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
+    "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/axe-core": {
-      "version": "4.5.2",
-      "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz",
-      "integrity": "sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA==",
-      "engines": {
-        "node": ">=4"
+    "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/axios": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.1.tgz",
-      "integrity": "sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==",
+    "node_modules/pure-rand": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz",
+      "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/dubzzz"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/fast-check"
+        }
+      ]
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+      "dev": true
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
       "dependencies": {
-        "follow-redirects": "^1.15.0",
-        "form-data": "^4.0.0",
-        "proxy-from-env": "^1.1.0"
+        "safe-buffer": "^5.1.0"
       }
     },
-    "node_modules/axios/node_modules/form-data": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+    "node_modules/react": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
       "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "mime-types": "^2.1.12"
+        "loose-envify": "^1.1.0"
       },
       "engines": {
-        "node": ">= 6"
+        "node": ">=0.10.0"
       }
     },
-    "node_modules/axobject-query": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
-      "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
-    },
-    "node_modules/babel-jest": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
-      "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+    "node_modules/react-dom": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
       "dependencies": {
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/babel__core": "^7.1.14",
-        "babel-plugin-istanbul": "^6.1.1",
-        "babel-preset-jest": "^27.5.1",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.9",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "loose-envify": "^1.1.0",
+        "scheduler": "^0.23.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.8.0"
+        "react": "^18.2.0"
       }
     },
-    "node_modules/babel-jest/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==",
+    "node_modules/react-is": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+      "dev": true
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
       "dependencies": {
-        "color-convert": "^2.0.1"
+        "picomatch": "^2.2.1"
       },
       "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+        "node": ">=8.10.0"
       }
     },
-    "node_modules/babel-jest/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+    "node_modules/redent": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+      "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+      "dev": true,
       "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
+        "indent-string": "^4.0.0",
+        "strip-indent": "^3.0.0"
       },
       "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
+        "node": ">=8"
       }
     },
-    "node_modules/babel-jest/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==",
+    "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/regexp.prototype.flags": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+      "dev": true,
       "dependencies": {
-        "color-name": "~1.1.4"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "functions-have-names": "^1.2.2"
       },
       "engines": {
-        "node": ">=7.0.0"
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/babel-jest/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=="
-    },
-    "node_modules/babel-jest/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==",
+    "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": ">=8"
+        "node": ">=0.10.0"
       }
     },
-    "node_modules/babel-jest/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
+    "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/babel-loader": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz",
-      "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==",
+    "node_modules/resolve": {
+      "version": "1.22.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+      "dev": true,
       "dependencies": {
-        "find-cache-dir": "^3.3.1",
-        "loader-utils": "^2.0.0",
-        "make-dir": "^3.1.0",
-        "schema-utils": "^2.6.5"
+        "is-core-module": "^2.9.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
       },
-      "engines": {
-        "node": ">= 8.9"
+      "bin": {
+        "resolve": "bin/resolve"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "webpack": ">=2"
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/babel-loader/node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+    "node_modules/resolve-cwd": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+      "dev": true,
       "dependencies": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
+        "resolve-from": "^5.0.0"
       },
       "engines": {
-        "node": ">= 8.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
+        "node": ">=8"
       }
     },
-    "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==",
-      "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"
-      },
+    "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/babel-plugin-jest-hoist": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
-      "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
-      "dependencies": {
-        "@babel/template": "^7.3.3",
-        "@babel/types": "^7.3.3",
-        "@types/babel__core": "^7.0.0",
-        "@types/babel__traverse": "^7.0.6"
-      },
+    "node_modules/resolve.exports": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+      "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+      "dev": true,
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+        "node": ">=10"
       }
     },
-    "node_modules/babel-plugin-macros": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
-      "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
-      "dependencies": {
-        "@babel/runtime": "^7.12.5",
-        "cosmiconfig": "^7.0.0",
-        "resolve": "^1.19.0"
+    "node_modules/rollup": {
+      "version": "2.79.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
       },
       "engines": {
-        "node": ">=10",
-        "npm": ">=6"
+        "node": ">=10.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
       }
     },
-    "node_modules/babel-plugin-named-asset-import": {
-      "version": "0.3.8",
-      "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz",
-      "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==",
+    "node_modules/rollup-plugin-peer-deps-external": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz",
+      "integrity": "sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==",
+      "dev": true,
       "peerDependencies": {
-        "@babel/core": "^7.1.0"
+        "rollup": "*"
       }
     },
-    "node_modules/babel-plugin-polyfill-corejs2": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
-      "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
+    "node_modules/rollup-plugin-sass": {
+      "version": "1.12.19",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-sass/-/rollup-plugin-sass-1.12.19.tgz",
+      "integrity": "sha512-gVYQ+fKpwbIeC3tFWbtSw0kVHbDd6bpPHJ+YHpY28YRY1aS8LCrogJZmyb23fDcBn6r8eWzuC1N3jfQbCY3gMQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/compat-data": "^7.17.7",
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "semver": "^6.1.1"
+        "@rollup/pluginutils": "^3 || ^4 || ^5",
+        "resolve": "^1.5.0",
+        "sass": "^1.7.2"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
+      "engines": {
+        "node": ">=10"
       }
     },
-    "node_modules/babel-plugin-polyfill-corejs3": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
-      "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
+    "node_modules/rollup-plugin-terser": {
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+      "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+      "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "core-js-compat": "^3.25.1"
+        "@babel/code-frame": "^7.10.4",
+        "jest-worker": "^26.2.1",
+        "serialize-javascript": "^4.0.0",
+        "terser": "^5.0.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+        "rollup": "^2.0.0"
       }
     },
-    "node_modules/babel-plugin-polyfill-regenerator": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
-      "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
+    "node_modules/rollup-plugin-terser/node_modules/jest-worker": {
+      "version": "26.6.2",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+      "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+      "dev": true,
       "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3"
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^7.0.0"
       },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
+      "engines": {
+        "node": ">= 10.13.0"
       }
     },
-    "node_modules/babel-plugin-transform-react-remove-prop-types": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
-      "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA=="
-    },
-    "node_modules/babel-preset-current-node-syntax": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
-      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+    "node_modules/rollup-plugin-typescript2": {
+      "version": "0.34.1",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz",
+      "integrity": "sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==",
+      "dev": true,
       "dependencies": {
-        "@babel/plugin-syntax-async-generators": "^7.8.4",
-        "@babel/plugin-syntax-bigint": "^7.8.3",
-        "@babel/plugin-syntax-class-properties": "^7.8.3",
-        "@babel/plugin-syntax-import-meta": "^7.8.3",
-        "@babel/plugin-syntax-json-strings": "^7.8.3",
-        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
-        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
-        "@babel/plugin-syntax-top-level-await": "^7.8.3"
+        "@rollup/pluginutils": "^4.1.2",
+        "find-cache-dir": "^3.3.2",
+        "fs-extra": "^10.0.0",
+        "semver": "^7.3.7",
+        "tslib": "^2.4.0"
       },
       "peerDependencies": {
-        "@babel/core": "^7.0.0"
+        "rollup": ">=1.26.3",
+        "typescript": ">=2.4.0"
       }
     },
-    "node_modules/babel-preset-jest": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
-      "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+    "node_modules/rollup-plugin-typescript2/node_modules/@rollup/pluginutils": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+      "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+      "dev": true,
       "dependencies": {
-        "babel-plugin-jest-hoist": "^27.5.1",
-        "babel-preset-current-node-syntax": "^1.0.0"
+        "estree-walker": "^2.0.1",
+        "picomatch": "^2.2.2"
       },
       "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/babel-preset-react-app": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz",
-      "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==",
-      "dependencies": {
-        "@babel/core": "^7.16.0",
-        "@babel/plugin-proposal-class-properties": "^7.16.0",
-        "@babel/plugin-proposal-decorators": "^7.16.4",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
-        "@babel/plugin-proposal-numeric-separator": "^7.16.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.16.0",
-        "@babel/plugin-proposal-private-methods": "^7.16.0",
-        "@babel/plugin-transform-flow-strip-types": "^7.16.0",
-        "@babel/plugin-transform-react-display-name": "^7.16.0",
-        "@babel/plugin-transform-runtime": "^7.16.4",
-        "@babel/preset-env": "^7.16.4",
-        "@babel/preset-react": "^7.16.0",
-        "@babel/preset-typescript": "^7.16.0",
-        "@babel/runtime": "^7.16.3",
-        "babel-plugin-macros": "^3.1.0",
-        "babel-plugin-transform-react-remove-prop-types": "^0.4.24"
+        "node": ">= 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=="
-    },
-    "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=="
-    },
-    "node_modules/bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+    "node_modules/rollup-plugin-typescript2/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": {
-        "tweetnacl": "^0.14.3"
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
-    "node_modules/bfj": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz",
-      "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==",
+    "node_modules/rollup-plugin-typescript2/node_modules/semver": {
+      "version": "7.3.8",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "dev": true,
       "dependencies": {
-        "bluebird": "^3.5.5",
-        "check-types": "^11.1.1",
-        "hoopy": "^0.1.4",
-        "tryer": "^1.0.1"
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
       },
       "engines": {
-        "node": ">= 8.0.0"
+        "node": ">=10"
       }
     },
-    "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==",
-      "engines": {
-        "node": "*"
-      }
+    "node_modules/rollup-plugin-typescript2/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/binary-extensions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "engines": {
-        "node": ">=8"
-      }
+    "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/bluebird": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+    "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/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==",
+    "node_modules/sass": {
+      "version": "1.60.0",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.60.0.tgz",
+      "integrity": "sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==",
+      "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"
+        "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": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/body-parser/node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "ms": "2.0.0"
+        "node": ">=12.0.0"
       }
     },
-    "node_modules/body-parser/node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+    "node_modules/saxes": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+      "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+      "dev": true,
       "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
+        "xmlchars": "^2.2.0"
       },
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=v12.22.7"
       }
     },
-    "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=="
-    },
-    "node_modules/bonjour-service": {
-      "version": "1.0.14",
-      "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz",
-      "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==",
+    "node_modules/scheduler": {
+      "version": "0.23.0",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+      "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
       "dependencies": {
-        "array-flatten": "^2.1.2",
-        "dns-equal": "^1.0.0",
-        "fast-deep-equal": "^3.1.3",
-        "multicast-dns": "^7.2.5"
+        "loose-envify": "^1.1.0"
       }
     },
-    "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=="
+    "node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
     },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+    "node_modules/serialize-javascript": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+      "dev": true,
       "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
+        "randombytes": "^2.1.0"
       }
     },
-    "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+    "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": {
-        "fill-range": "^7.0.1"
+        "shebang-regex": "^3.0.0"
       },
       "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=="
-    },
-    "node_modules/browserslist": {
-      "version": "4.21.4",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
-      "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        }
-      ],
-      "dependencies": {
-        "caniuse-lite": "^1.0.30001400",
-        "electron-to-chromium": "^1.4.251",
-        "node-releases": "^2.0.6",
-        "update-browserslist-db": "^1.0.9"
-      },
-      "bin": {
-        "browserslist": "cli.js"
-      },
+    "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": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+        "node": ">=8"
       }
     },
-    "node_modules/bser": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
-      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+    "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": {
-        "node-int64": "^0.4.0"
-      }
-    },
-    "node_modules/buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
-    },
-    "node_modules/builtin-modules": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
-      "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
-      "engines": {
-        "node": ">=6"
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
       },
       "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/bytes": {
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "node_modules/sisteransi": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+      "dev": true
+    },
+    "node_modules/slash": {
       "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true,
       "engines": {
-        "node": ">= 0.8"
+        "node": ">=8"
       }
     },
-    "node_modules/cacache": {
-      "version": "15.3.0",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
-      "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
-      "dependencies": {
-        "@npmcli/fs": "^1.0.0",
-        "@npmcli/move-file": "^1.0.1",
-        "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "glob": "^7.1.4",
-        "infer-owner": "^1.0.4",
-        "lru-cache": "^6.0.0",
-        "minipass": "^3.1.1",
-        "minipass-collect": "^1.0.2",
-        "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.2",
-        "mkdirp": "^1.0.3",
-        "p-map": "^4.0.0",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^3.0.2",
-        "ssri": "^8.0.1",
-        "tar": "^6.0.2",
-        "unique-filename": "^1.1.1"
-      },
+    "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": ">= 10"
+        "node": ">=0.10.0"
       }
     },
-    "node_modules/cacache/node_modules/mkdirp": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      },
+    "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": ">=10"
+        "node": ">=0.10.0"
       }
     },
-    "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==",
+    "node_modules/source-map-support": {
+      "version": "0.5.13",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+      "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+      "dev": true,
       "dependencies": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
       }
     },
-    "node_modules/callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+    "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/stack-utils": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+      "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^2.0.0"
+      },
       "engines": {
-        "node": ">=6"
+        "node": ">=10"
       }
     },
-    "node_modules/camel-case": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
-      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+    "node_modules/stop-iteration-iterator": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+      "dev": true,
       "dependencies": {
-        "pascal-case": "^3.1.2",
-        "tslib": "^2.0.3"
+        "internal-slot": "^1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
       }
     },
-    "node_modules/camelcase": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
-      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+    "node_modules/string-length": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+      "dev": true,
+      "dependencies": {
+        "char-regex": "^1.0.2",
+        "strip-ansi": "^6.0.0"
+      },
       "engines": {
         "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "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==",
+    "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": ">= 6"
+        "node": ">=8"
       }
     },
-    "node_modules/camelcase-keys": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
-      "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+    "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": {
-        "camelcase": "^5.3.1",
-        "map-obj": "^4.0.0",
-        "quick-lru": "^4.0.1"
+        "ansi-regex": "^5.0.1"
       },
       "engines": {
         "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/camelcase-keys/node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+    "node_modules/strip-bom": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+      "dev": true,
       "engines": {
-        "node": ">=6"
+        "node": ">=8"
       }
     },
-    "node_modules/camelcase-keys/node_modules/quick-lru": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
-      "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+    "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": ">=8"
+        "node": ">=6"
       }
     },
-    "node_modules/caniuse-api": {
+    "node_modules/strip-indent": {
       "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+      "dev": true,
       "dependencies": {
-        "browserslist": "^4.0.0",
-        "caniuse-lite": "^1.0.0",
-        "lodash.memoize": "^4.1.2",
-        "lodash.uniq": "^4.5.0"
+        "min-indent": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "node_modules/caniuse-lite": {
-      "version": "1.0.30001431",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz",
-      "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
-        }
-      ]
-    },
-    "node_modules/case-sensitive-paths-webpack-plugin": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
-      "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==",
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
       "engines": {
-        "node": ">=4"
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
-    },
-    "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==",
+    "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": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
+        "has-flag": "^4.0.0"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">=8"
       }
     },
-    "node_modules/char-regex": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
-      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+    "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": ">=10"
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/check-types": {
-      "version": "11.1.2",
-      "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz",
-      "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ=="
+    "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/chokidar": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
-      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://paulmillr.com/funding/"
-        }
-      ],
+    "node_modules/terser": {
+      "version": "5.16.8",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz",
+      "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==",
+      "dev": true,
       "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"
+        "@jridgewell/source-map": "^0.3.2",
+        "acorn": "^8.5.0",
+        "commander": "^2.20.0",
+        "source-map-support": "~0.5.20"
       },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/chokidar/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dependencies": {
-        "is-glob": "^4.0.1"
+      "bin": {
+        "terser": "bin/terser"
       },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/chownr": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
-      "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
       "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==",
-      "engines": {
-        "node": ">=6.0"
+    "node_modules/terser/node_modules/source-map-support": {
+      "version": "0.5.21",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+      "dev": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
       }
     },
-    "node_modules/ci-info": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz",
-      "integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==",
+    "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/cjs-module-lexer": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
-      "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA=="
+    "node_modules/test-exclude/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/clean-css": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
-      "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==",
+    "node_modules/test-exclude/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": {
-        "source-map": "~0.6.0"
+        "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": ">= 10.0"
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/clean-css/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==",
+    "node_modules/test-exclude/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": ">=0.10.0"
+        "node": "*"
       }
     },
-    "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==",
+    "node_modules/tmpl": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+      "dev": true
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true,
       "engines": {
-        "node": ">=6"
+        "node": ">=4"
       }
     },
-    "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==",
+    "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": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^7.0.0"
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
       }
     },
-    "node_modules/clsx": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-      "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+    "node_modules/tough-cookie": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
+      "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
+      "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/co": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+    "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": {
-        "iojs": ">= 1.0.0",
-        "node": ">= 0.12.0"
+        "node": ">= 4.0.0"
       }
     },
-    "node_modules/coa": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
-      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+    "node_modules/tr46": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+      "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+      "dev": true,
       "dependencies": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
+        "punycode": "^2.1.1"
       },
       "engines": {
-        "node": ">= 4.0"
+        "node": ">=12"
       }
     },
-    "node_modules/collect-v8-coverage": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
-      "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg=="
-    },
-    "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==",
+    "node_modules/ts-jest": {
+      "version": "29.0.5",
+      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz",
+      "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==",
+      "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=="
-    },
-    "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==",
+        "bs-logger": "0.x",
+        "fast-json-stable-stringify": "2.x",
+        "jest-util": "^29.0.0",
+        "json5": "^2.2.3",
+        "lodash.memoize": "4.x",
+        "make-error": "1.x",
+        "semver": "7.x",
+        "yargs-parser": "^21.0.1"
+      },
       "bin": {
-        "color-support": "bin.js"
-      }
-    },
-    "node_modules/colord": {
-      "version": "2.9.3",
-      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
-      "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="
-    },
-    "node_modules/colorette": {
-      "version": "2.0.19",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
-      "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
-    },
-    "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==",
-      "dependencies": {
-        "delayed-stream": "~1.0.0"
+        "ts-jest": "cli.js"
       },
       "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/commander": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
-      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
-      "engines": {
-        "node": ">= 12"
-      }
-    },
-    "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=="
-    },
-    "node_modules/common-tags": {
-      "version": "1.8.2",
-      "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
-      "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
-      "engines": {
-        "node": ">=4.0.0"
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": ">=7.0.0-beta.0 <8",
+        "@jest/types": "^29.0.0",
+        "babel-jest": "^29.0.0",
+        "jest": "^29.0.0",
+        "typescript": ">=4.3"
+      },
+      "peerDependenciesMeta": {
+        "@babel/core": {
+          "optional": true
+        },
+        "@jest/types": {
+          "optional": true
+        },
+        "babel-jest": {
+          "optional": true
+        },
+        "esbuild": {
+          "optional": true
+        }
       }
     },
-    "node_modules/commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
-    },
-    "node_modules/compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+    "node_modules/ts-jest/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": {
-        "mime-db": ">= 1.43.0 < 2"
+        "yallist": "^4.0.0"
       },
       "engines": {
-        "node": ">= 0.6"
+        "node": ">=10"
       }
     },
-    "node_modules/compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+    "node_modules/ts-jest/node_modules/semver": {
+      "version": "7.3.8",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "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"
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
       },
       "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "ms": "2.0.0"
+        "node": ">=10"
       }
     },
-    "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=="
-    },
-    "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=="
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
-    },
-    "node_modules/confusing-browser-globals": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
-      "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA=="
-    },
-    "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==",
-      "engines": {
-        "node": ">=0.8"
-      }
+    "node_modules/ts-jest/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/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=="
+    "node_modules/tslib": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
+      "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==",
+    "node_modules/type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+      "dev": true,
       "dependencies": {
-        "safe-buffer": "5.2.1"
+        "prelude-ls": "~1.1.2"
       },
       "engines": {
-        "node": ">= 0.6"
+        "node": ">= 0.8.0"
       }
     },
-    "node_modules/content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+      "dev": true,
       "engines": {
-        "node": ">= 0.6"
+        "node": ">=4"
       }
     },
-    "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=="
-    },
-    "node_modules/cookie": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+    "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": ">= 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=="
-    },
-    "node_modules/core-js": {
-      "version": "3.26.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz",
-      "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==",
-      "hasInstallScript": true,
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-js-compat": {
-      "version": "3.26.1",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz",
-      "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==",
-      "dependencies": {
-        "browserslist": "^4.21.4"
+        "node": ">=10"
       },
       "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-js-pure": {
-      "version": "3.26.1",
-      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz",
-      "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==",
-      "hasInstallScript": true,
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
-    },
-    "node_modules/cosmiconfig": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
-      "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
-      "dependencies": {
-        "@types/parse-json": "^4.0.0",
-        "import-fresh": "^3.2.1",
-        "parse-json": "^5.0.0",
-        "path-type": "^4.0.0",
-        "yaml": "^1.10.0"
-      },
-      "engines": {
-        "node": ">=10"
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "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==",
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
+    "node_modules/typescript": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz",
+      "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==",
+      "dev": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
       },
       "engines": {
-        "node": ">= 8"
+        "node": ">=12.20"
       }
     },
-    "node_modules/crypto-random-string": {
+    "node_modules/universalify": {
       "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+      "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": ">= 10.0.0"
       }
     },
-    "node_modules/css-blank-pseudo": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz",
-      "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==",
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+      "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        }
+      ],
       "dependencies": {
-        "postcss-selector-parser": "^6.0.9"
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
       },
       "bin": {
-        "css-blank-pseudo": "dist/cli.cjs"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
+        "browserslist-lint": "cli.js"
       },
       "peerDependencies": {
-        "postcss": "^8.4"
+        "browserslist": ">= 4.21.0"
       }
     },
-    "node_modules/css-declaration-sorter": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
-      "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==",
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.0.9"
+    "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/css-has-pseudo": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz",
-      "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==",
+    "node_modules/v8-to-istanbul": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+      "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+      "dev": true,
       "dependencies": {
-        "postcss-selector-parser": "^6.0.9"
-      },
-      "bin": {
-        "css-has-pseudo": "dist/cli.cjs"
+        "@jridgewell/trace-mapping": "^0.3.12",
+        "@types/istanbul-lib-coverage": "^2.0.1",
+        "convert-source-map": "^1.6.0"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4"
+        "node": ">=10.12.0"
       }
     },
-    "node_modules/css-loader": {
-      "version": "6.7.2",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz",
-      "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==",
+    "node_modules/v8-to-istanbul/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/w3c-xmlserializer": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+      "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
+      "dev": true,
       "dependencies": {
-        "icss-utils": "^5.1.0",
-        "postcss": "^8.4.18",
-        "postcss-modules-extract-imports": "^3.0.0",
-        "postcss-modules-local-by-default": "^4.0.0",
-        "postcss-modules-scope": "^3.0.0",
-        "postcss-modules-values": "^4.0.0",
-        "postcss-value-parser": "^4.2.0",
-        "semver": "^7.3.8"
+        "xml-name-validator": "^4.0.0"
       },
       "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.0"
+        "node": ">=14"
       }
     },
-    "node_modules/css-minimizer-webpack-plugin": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz",
-      "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==",
+    "node_modules/walker": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+      "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+      "dev": true,
       "dependencies": {
-        "cssnano": "^5.0.6",
-        "jest-worker": "^27.0.2",
-        "postcss": "^8.3.5",
-        "schema-utils": "^4.0.0",
-        "serialize-javascript": "^6.0.0",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@parcel/css": {
-          "optional": true
-        },
-        "clean-css": {
-          "optional": true
-        },
-        "csso": {
-          "optional": true
-        },
-        "esbuild": {
-          "optional": true
-        }
+        "makeerror": "1.0.12"
       }
     },
-    "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-      "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-      "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/webidl-conversions": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
       }
     },
-    "node_modules/css-minimizer-webpack-plugin/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==",
+    "node_modules/whatwg-encoding": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
+      "dev": true,
       "dependencies": {
-        "fast-deep-equal": "^3.1.3"
+        "iconv-lite": "0.6.3"
       },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
+      "engines": {
+        "node": ">=12"
       }
     },
-    "node_modules/css-minimizer-webpack-plugin/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=="
-    },
-    "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-      "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-      "dependencies": {
-        "@types/json-schema": "^7.0.9",
-        "ajv": "^8.8.0",
-        "ajv-formats": "^2.1.1",
-        "ajv-keywords": "^5.0.0"
-      },
+    "node_modules/whatwg-mimetype": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+      "dev": true,
       "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
+        "node": ">=12"
       }
     },
-    "node_modules/css-minimizer-webpack-plugin/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==",
+    "node_modules/whatwg-url": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+      "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+      "dev": true,
+      "dependencies": {
+        "tr46": "^3.0.0",
+        "webidl-conversions": "^7.0.0"
+      },
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=12"
       }
     },
-    "node_modules/css-prefers-color-scheme": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz",
-      "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==",
+    "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": {
-        "css-prefers-color-scheme": "dist/cli.cjs"
+        "node-which": "bin/node-which"
       },
       "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4"
+        "node": ">= 8"
       }
     },
-    "node_modules/css-select": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+    "node_modules/which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "dev": true,
       "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^6.0.1",
-        "domhandler": "^4.3.1",
-        "domutils": "^2.8.0",
-        "nth-check": "^2.0.1"
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
       },
       "funding": {
-        "url": "https://github.com/sponsors/fb55"
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/css-select-base-adapter": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
-      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
+    "node_modules/which-collection": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+      "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+      "dev": true,
+      "dependencies": {
+        "is-map": "^2.0.1",
+        "is-set": "^2.0.1",
+        "is-weakmap": "^2.0.1",
+        "is-weakset": "^2.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
     },
-    "node_modules/css-tree": {
-      "version": "1.0.0-alpha.37",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-      "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+    "node_modules/which-typed-array": {
+      "version": "1.1.9",
+      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+      "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+      "dev": true,
       "dependencies": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.2",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.0",
+        "is-typed-array": "^1.1.10"
       },
       "engines": {
-        "node": ">=8.0.0"
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/css-tree/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==",
+    "node_modules/word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
     },
-    "node_modules/css-what": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
-      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+    "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": ">= 6"
+        "node": ">=10"
       },
       "funding": {
-        "url": "https://github.com/sponsors/fb55"
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
       }
     },
-    "node_modules/css.escape": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
-      "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg=="
-    },
-    "node_modules/cssdb": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz",
-      "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      }
+    "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/cssesc": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-      "bin": {
-        "cssesc": "bin/cssesc"
+    "node_modules/write-file-atomic": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+      "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+      "dev": true,
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^3.0.7"
       },
       "engines": {
-        "node": ">=4"
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
       }
     },
-    "node_modules/cssnano": {
-      "version": "5.1.14",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz",
-      "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==",
-      "dependencies": {
-        "cssnano-preset-default": "^5.2.13",
-        "lilconfig": "^2.0.3",
-        "yaml": "^1.10.2"
-      },
+    "node_modules/ws": {
+      "version": "8.13.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
+      "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+      "dev": true,
       "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/cssnano"
+        "node": ">=10.0.0"
       },
       "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/cssnano-preset-default": {
-      "version": "5.2.13",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz",
-      "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==",
-      "dependencies": {
-        "css-declaration-sorter": "^6.3.1",
-        "cssnano-utils": "^3.1.0",
-        "postcss-calc": "^8.2.3",
-        "postcss-colormin": "^5.3.0",
-        "postcss-convert-values": "^5.1.3",
-        "postcss-discard-comments": "^5.1.2",
-        "postcss-discard-duplicates": "^5.1.0",
-        "postcss-discard-empty": "^5.1.1",
-        "postcss-discard-overridden": "^5.1.0",
-        "postcss-merge-longhand": "^5.1.7",
-        "postcss-merge-rules": "^5.1.3",
-        "postcss-minify-font-values": "^5.1.0",
-        "postcss-minify-gradients": "^5.1.1",
-        "postcss-minify-params": "^5.1.4",
-        "postcss-minify-selectors": "^5.2.1",
-        "postcss-normalize-charset": "^5.1.0",
-        "postcss-normalize-display-values": "^5.1.0",
-        "postcss-normalize-positions": "^5.1.1",
-        "postcss-normalize-repeat-style": "^5.1.1",
-        "postcss-normalize-string": "^5.1.0",
-        "postcss-normalize-timing-functions": "^5.1.0",
-        "postcss-normalize-unicode": "^5.1.1",
-        "postcss-normalize-url": "^5.1.0",
-        "postcss-normalize-whitespace": "^5.1.1",
-        "postcss-ordered-values": "^5.1.3",
-        "postcss-reduce-initial": "^5.1.1",
-        "postcss-reduce-transforms": "^5.1.0",
-        "postcss-svgo": "^5.1.0",
-        "postcss-unique-selectors": "^5.1.1"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
       },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
       }
     },
-    "node_modules/cssnano-utils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
-      "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
+    "node_modules/xml-name-validator": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+      "dev": true,
       "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
+        "node": ">=12"
       }
     },
-    "node_modules/csso": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-      "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
-      "dependencies": {
-        "css-tree": "^1.1.2"
-      },
+    "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": ">=8.0.0"
+        "node": ">=10"
       }
     },
-    "node_modules/csso/node_modules/css-tree": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-      "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true
+    },
+    "node_modules/yargs": {
+      "version": "17.7.1",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
+      "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
+      "dev": true,
       "dependencies": {
-        "mdn-data": "2.0.14",
-        "source-map": "^0.6.1"
+        "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": ">=8.0.0"
+        "node": ">=12"
       }
     },
-    "node_modules/csso/node_modules/mdn-data": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-      "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-    },
-    "node_modules/csso/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==",
+    "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": ">=0.10.0"
+        "node": ">=12"
       }
     },
-    "node_modules/cssom": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
-      "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
-    },
-    "node_modules/cssstyle": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
-      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
-      "dependencies": {
-        "cssom": "~0.3.6"
-      },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
+    }
+  },
+  "dependencies": {
+    "@adobe/css-tools": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz",
+      "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==",
+      "dev": true
     },
-    "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=="
+    "@ampproject/remapping": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+      "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/gen-mapping": "^0.1.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
     },
-    "node_modules/csstype": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+    "@babel/code-frame": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+      "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.18.6"
+      }
     },
-    "node_modules/damerau-levenshtein": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
-      "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="
+    "@babel/compat-data": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
+      "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
+      "dev": true
     },
-    "node_modules/dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
-      "dependencies": {
-        "assert-plus": "^1.0.0"
+    "@babel/core": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz",
+      "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==",
+      "dev": true,
+      "requires": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.18.6",
+        "@babel/generator": "^7.21.3",
+        "@babel/helper-compilation-targets": "^7.20.7",
+        "@babel/helper-module-transforms": "^7.21.2",
+        "@babel/helpers": "^7.21.0",
+        "@babel/parser": "^7.21.3",
+        "@babel/template": "^7.20.7",
+        "@babel/traverse": "^7.21.3",
+        "@babel/types": "^7.21.3",
+        "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": ">=0.10"
-      }
-    },
-    "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==",
       "dependencies": {
-        "abab": "^2.0.3",
-        "whatwg-mimetype": "^2.3.0",
-        "whatwg-url": "^8.0.0"
-      },
-      "engines": {
-        "node": ">=10"
+        "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/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
+    "@babel/generator": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz",
+      "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.21.3",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
       },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
+      "dependencies": {
+        "@jridgewell/gen-mapping": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+          "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/set-array": "^1.0.1",
+            "@jridgewell/sourcemap-codec": "^1.4.10",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
         }
       }
     },
-    "node_modules/decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
-      "engines": {
-        "node": ">=0.10.0"
+    "@babel/helper-compilation-targets": {
+      "version": "7.20.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
+      "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.20.5",
+        "@babel/helper-validator-option": "^7.18.6",
+        "browserslist": "^4.21.3",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.0"
       }
     },
-    "node_modules/decamelize-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
-      "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
-      "dependencies": {
-        "decamelize": "^1.1.0",
-        "map-obj": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+    "@babel/helper-environment-visitor": {
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+      "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+      "dev": true
+    },
+    "@babel/helper-function-name": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+      "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.20.7",
+        "@babel/types": "^7.21.0"
       }
     },
-    "node_modules/decamelize-keys/node_modules/map-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-      "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
-      "engines": {
-        "node": ">=0.10.0"
+    "@babel/helper-hoist-variables": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+      "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.18.6"
       }
     },
-    "node_modules/decimal.js": {
-      "version": "10.4.2",
-      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz",
-      "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA=="
+    "@babel/helper-module-imports": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+      "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.18.6"
+      }
     },
-    "node_modules/dedent": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
-      "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA=="
+    "@babel/helper-module-transforms": {
+      "version": "7.21.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
+      "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-module-imports": "^7.18.6",
+        "@babel/helper-simple-access": "^7.20.2",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/helper-validator-identifier": "^7.19.1",
+        "@babel/template": "^7.20.7",
+        "@babel/traverse": "^7.21.2",
+        "@babel/types": "^7.21.2"
+      }
     },
-    "node_modules/deep-equal": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz",
-      "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "es-get-iterator": "^1.1.2",
-        "get-intrinsic": "^1.1.3",
-        "is-arguments": "^1.1.1",
-        "is-date-object": "^1.0.5",
-        "is-regex": "^1.1.4",
-        "isarray": "^2.0.5",
-        "object-is": "^1.1.5",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "side-channel": "^1.0.4",
-        "which-boxed-primitive": "^1.0.2",
-        "which-collection": "^1.0.1",
-        "which-typed-array": "^1.1.8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+    "@babel/helper-plugin-utils": {
+      "version": "7.20.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
+      "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
+      "dev": true
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.20.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
+      "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.20.2"
       }
     },
-    "node_modules/deep-equal/node_modules/isarray": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+    "@babel/helper-split-export-declaration": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+      "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.18.6"
+      }
     },
-    "node_modules/deep-is": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
+    "@babel/helper-string-parser": {
+      "version": "7.19.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+      "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+      "dev": true
     },
-    "node_modules/deepmerge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
-      "engines": {
-        "node": ">=0.10.0"
+    "@babel/helper-validator-identifier": {
+      "version": "7.19.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+      "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+      "dev": true
+    },
+    "@babel/helper-validator-option": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+      "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
+      "dev": true
+    },
+    "@babel/helpers": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
+      "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.20.7",
+        "@babel/traverse": "^7.21.0",
+        "@babel/types": "^7.21.0"
       }
     },
-    "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==",
-      "dependencies": {
-        "execa": "^5.0.0"
+    "@babel/highlight": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.18.6",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
       },
-      "engines": {
-        "node": ">= 10"
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+          "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+          "dev": true,
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+          "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+          "dev": true
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+          "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+          "dev": true
+        },
+        "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
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
       }
     },
-    "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==",
-      "engines": {
-        "node": ">=8"
-      }
+    "@babel/parser": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz",
+      "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==",
+      "dev": true
     },
-    "node_modules/define-properties": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
-      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
-      "dependencies": {
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
-    "node_modules/defined": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
-      "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+    "@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
-    "node_modules/delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-      "engines": {
-        "node": ">=0.4.0"
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
       }
     },
-    "node_modules/delegates": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
     },
-    "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==",
-      "engines": {
-        "node": ">= 0.8"
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
-    "node_modules/destroy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
-      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+      "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
-    "node_modules/detect-newline": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
-      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
-      "engines": {
-        "node": ">=8"
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
-    "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=="
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
     },
-    "node_modules/detect-port-alt": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
-      "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
-      "dependencies": {
-        "address": "^1.0.1",
-        "debug": "^2.6.0"
-      },
-      "bin": {
-        "detect": "bin/detect-port",
-        "detect-port": "bin/detect-port"
-      },
-      "engines": {
-        "node": ">= 4.2.1"
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
-    "node_modules/detect-port-alt/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dependencies": {
-        "ms": "2.0.0"
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
-    "node_modules/detect-port-alt/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
     },
-    "node_modules/detective": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
-      "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
-      "dependencies": {
-        "acorn-node": "^1.8.2",
-        "defined": "^1.0.0",
-        "minimist": "^1.2.6"
-      },
-      "bin": {
-        "detective": "bin/detective.js"
-      },
-      "engines": {
-        "node": ">=0.8.0"
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
-    "node_modules/didyoumean": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
-      "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
+    "@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,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
     },
-    "node_modules/diff-sequences": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
-      "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+    "@babel/plugin-syntax-typescript": {
+      "version": "7.20.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
+      "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.19.0"
       }
     },
-    "node_modules/dir-glob": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-      "dependencies": {
-        "path-type": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
+    "@babel/runtime": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
+      "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+      "dev": true,
+      "requires": {
+        "regenerator-runtime": "^0.13.11"
       }
     },
-    "node_modules/dlv": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
-      "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
-    },
-    "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=="
-    },
-    "node_modules/dns-packet": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz",
-      "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==",
-      "dependencies": {
-        "@leichtgewicht/ip-codec": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=6"
+    "@babel/template": {
+      "version": "7.20.7",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+      "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.18.6",
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7"
       }
     },
-    "node_modules/doctrine": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=6.0.0"
+    "@babel/traverse": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz",
+      "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.18.6",
+        "@babel/generator": "^7.21.3",
+        "@babel/helper-environment-visitor": "^7.18.9",
+        "@babel/helper-function-name": "^7.21.0",
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/parser": "^7.21.3",
+        "@babel/types": "^7.21.3",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
       }
     },
-    "node_modules/dom-accessibility-api": {
-      "version": "0.5.14",
-      "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz",
-      "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg=="
-    },
-    "node_modules/dom-converter": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
-      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
-      "dependencies": {
-        "utila": "~0.4"
+    "@babel/types": {
+      "version": "7.21.3",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz",
+      "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-string-parser": "^7.19.4",
+        "@babel/helper-validator-identifier": "^7.19.1",
+        "to-fast-properties": "^2.0.0"
       }
     },
-    "node_modules/dom-helpers": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
-      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
-      "dependencies": {
-        "@babel/runtime": "^7.8.7",
-        "csstype": "^3.0.2"
-      }
+    "@bcoe/v8-coverage": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+      "dev": true
     },
-    "node_modules/dom-serializer": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.2.0",
-        "entities": "^2.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+    "@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,
+      "requires": {
+        "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"
       }
     },
-    "node_modules/domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ]
+    "@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
     },
-    "node_modules/domexception": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
-      "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
-      "dependencies": {
-        "webidl-conversions": "^5.0.0"
+    "@jest/console": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
+      "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
+      "dev": true,
+      "requires": {
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "slash": "^3.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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/domhandler": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
       "dependencies": {
-        "domelementtype": "^2.2.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domhandler?sponsor=1"
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "node_modules/domutils": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-      "dependencies": {
-        "dom-serializer": "^1.0.1",
-        "domelementtype": "^2.2.0",
-        "domhandler": "^4.2.0"
+    "@jest/core": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
+      "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
+      "dev": true,
+      "requires": {
+        "@jest/console": "^29.5.0",
+        "@jest/reporters": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "jest-changed-files": "^29.5.0",
+        "jest-config": "^29.5.0",
+        "jest-haste-map": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-regex-util": "^29.4.3",
+        "jest-resolve": "^29.5.0",
+        "jest-resolve-dependencies": "^29.5.0",
+        "jest-runner": "^29.5.0",
+        "jest-runtime": "^29.5.0",
+        "jest-snapshot": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "jest-watcher": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.5.0",
+        "slash": "^3.0.0",
+        "strip-ansi": "^6.0.0"
       },
-      "funding": {
-        "url": "https://github.com/fb55/domutils?sponsor=1"
-      }
-    },
-    "node_modules/dot-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
-      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
       "dependencies": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/dotenv": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
-      "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
-      "engines": {
-        "node": ">=10"
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "node_modules/dotenv-expand": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
-      "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA=="
-    },
-    "node_modules/duplexer": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
-      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
-    },
-    "node_modules/ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
-      "dependencies": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
+    "@jest/environment": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
+      "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+      "dev": true,
+      "requires": {
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "jest-mock": "^29.5.0"
       }
     },
-    "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=="
-    },
-    "node_modules/ejs": {
-      "version": "3.1.8",
-      "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
-      "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
-      "dependencies": {
-        "jake": "^10.8.5"
-      },
-      "bin": {
-        "ejs": "bin/cli.js"
-      },
-      "engines": {
-        "node": ">=0.10.0"
+    "@jest/expect": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
+      "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
+      "dev": true,
+      "requires": {
+        "expect": "^29.5.0",
+        "jest-snapshot": "^29.5.0"
       }
     },
-    "node_modules/electron-to-chromium": {
-      "version": "1.4.284",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
-      "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
-    },
-    "node_modules/emittery": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
-      "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+    "@jest/expect-utils": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
+      "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
+      "dev": true,
+      "requires": {
+        "jest-get-type": "^29.4.3"
       }
     },
-    "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=="
-    },
-    "node_modules/emojis-list": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
-      "engines": {
-        "node": ">= 4"
+    "@jest/fake-timers": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
+      "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+      "dev": true,
+      "requires": {
+        "@jest/types": "^29.5.0",
+        "@sinonjs/fake-timers": "^10.0.2",
+        "@types/node": "*",
+        "jest-message-util": "^29.5.0",
+        "jest-mock": "^29.5.0",
+        "jest-util": "^29.5.0"
       }
     },
-    "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==",
-      "engines": {
-        "node": ">= 0.8"
+    "@jest/globals": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
+      "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
+      "dev": true,
+      "requires": {
+        "@jest/environment": "^29.5.0",
+        "@jest/expect": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "jest-mock": "^29.5.0"
       }
     },
-    "node_modules/encoding": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
-      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
-      "optional": true,
+    "@jest/reporters": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
+      "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
+      "dev": true,
+      "requires": {
+        "@bcoe/v8-coverage": "^0.2.3",
+        "@jest/console": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@jridgewell/trace-mapping": "^0.3.15",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-instrument": "^5.1.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.0",
+        "istanbul-reports": "^3.1.3",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-worker": "^29.5.0",
+        "slash": "^3.0.0",
+        "string-length": "^4.0.1",
+        "strip-ansi": "^6.0.0",
+        "v8-to-istanbul": "^9.0.1"
+      },
       "dependencies": {
-        "iconv-lite": "^0.6.2"
+        "brace-expansion": {
+          "version": "1.1.11",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
+          "requires": {
+            "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"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        }
       }
     },
-    "node_modules/enhanced-resolve": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
-      "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
-      "dependencies": {
-        "graceful-fs": "^4.2.4",
-        "tapable": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=10.13.0"
+    "@jest/schemas": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
+      "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+      "dev": true,
+      "requires": {
+        "@sinclair/typebox": "^0.25.16"
       }
     },
-    "node_modules/entities": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
-      "funding": {
-        "url": "https://github.com/fb55/entities?sponsor=1"
+    "@jest/source-map": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
+      "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/trace-mapping": "^0.3.15",
+        "callsites": "^3.0.0",
+        "graceful-fs": "^4.2.9"
       }
     },
-    "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==",
-      "engines": {
-        "node": ">=6"
+    "@jest/test-result": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
+      "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
+      "dev": true,
+      "requires": {
+        "@jest/console": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "collect-v8-coverage": "^1.0.0"
       }
     },
-    "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=="
-    },
-    "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==",
-      "dependencies": {
-        "is-arrayish": "^0.2.1"
+    "@jest/test-sequencer": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
+      "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
+      "dev": true,
+      "requires": {
+        "@jest/test-result": "^29.5.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.5.0",
+        "slash": "^3.0.0"
       }
     },
-    "node_modules/error-stack-parser": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
-      "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+    "@jest/transform": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
+      "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.11.6",
+        "@jest/types": "^29.5.0",
+        "@jridgewell/trace-mapping": "^0.3.15",
+        "babel-plugin-istanbul": "^6.1.1",
+        "chalk": "^4.0.0",
+        "convert-source-map": "^2.0.0",
+        "fast-json-stable-stringify": "^2.1.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.5.0",
+        "jest-regex-util": "^29.4.3",
+        "jest-util": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "pirates": "^4.0.4",
+        "slash": "^3.0.0",
+        "write-file-atomic": "^4.0.2"
+      },
       "dependencies": {
-        "stackframe": "^1.3.4"
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "node_modules/es-abstract": {
-      "version": "1.20.4",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
-      "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.1.3",
-        "get-symbol-description": "^1.0.0",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "is-callable": "^1.2.7",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.2",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "safe-regex-test": "^1.0.0",
-        "string.prototype.trimend": "^1.0.5",
-        "string.prototype.trimstart": "^1.0.5",
-        "unbox-primitive": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
+    "@jest/types": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+      "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+      "dev": true,
+      "requires": {
+        "@jest/schemas": "^29.4.3",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^17.0.8",
+        "chalk": "^4.0.0"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/es-array-method-boxes-properly": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
-      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="
-    },
-    "node_modules/es-get-iterator": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
-      "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.0",
-        "has-symbols": "^1.0.1",
-        "is-arguments": "^1.1.0",
-        "is-map": "^2.0.2",
-        "is-set": "^2.0.2",
-        "is-string": "^1.0.5",
-        "isarray": "^2.0.5"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "node_modules/es-get-iterator/node_modules/isarray": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+    "@jridgewell/gen-mapping": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+      "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/set-array": "^1.0.0",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
+      }
     },
-    "node_modules/es-module-lexer": {
-      "version": "0.9.3",
-      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
-      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
+    "@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "dev": true
     },
-    "node_modules/es-shim-unscopables": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
-      "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
-      "dependencies": {
-        "has": "^1.0.3"
-      }
+    "@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
     },
-    "node_modules/es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dependencies": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
+    "@jridgewell/source-map": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
+      "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+      "dependencies": {
+        "@jridgewell/gen-mapping": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+          "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/set-array": "^1.0.1",
+            "@jridgewell/sourcemap-codec": "^1.4.10",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        }
       }
     },
-    "node_modules/es6-object-assign": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
-      "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw=="
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+      "dev": true
     },
-    "node_modules/escalade": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "engines": {
-        "node": ">=6"
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.17",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/resolve-uri": "3.1.0",
+        "@jridgewell/sourcemap-codec": "1.4.14"
       }
     },
-    "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=="
-    },
-    "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==",
-      "engines": {
-        "node": ">=0.8.0"
+    "@rollup/plugin-commonjs": {
+      "version": "24.0.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz",
+      "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==",
+      "dev": true,
+      "requires": {
+        "@rollup/pluginutils": "^5.0.1",
+        "commondir": "^1.0.1",
+        "estree-walker": "^2.0.2",
+        "glob": "^8.0.3",
+        "is-reference": "1.2.1",
+        "magic-string": "^0.27.0"
       }
     },
-    "node_modules/escodegen": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
-      "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
-      "dependencies": {
-        "esprima": "^4.0.1",
-        "estraverse": "^5.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1"
-      },
-      "bin": {
-        "escodegen": "bin/escodegen.js",
-        "esgenerate": "bin/esgenerate.js"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "optionalDependencies": {
-        "source-map": "~0.6.1"
+    "@rollup/plugin-node-resolve": {
+      "version": "15.0.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz",
+      "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==",
+      "dev": true,
+      "requires": {
+        "@rollup/pluginutils": "^5.0.1",
+        "@types/resolve": "1.20.2",
+        "deepmerge": "^4.2.2",
+        "is-builtin-module": "^3.2.0",
+        "is-module": "^1.0.0",
+        "resolve": "^1.22.1"
       }
     },
-    "node_modules/escodegen/node_modules/levn": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
-      "dependencies": {
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
+    "@rollup/pluginutils": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+      "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+      "dev": true,
+      "requires": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
       }
     },
-    "node_modules/escodegen/node_modules/optionator": {
-      "version": "0.8.3",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-      "dependencies": {
-        "deep-is": "~0.1.3",
-        "fast-levenshtein": "~2.0.6",
-        "levn": "~0.3.0",
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2",
-        "word-wrap": "~1.2.3"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
+    "@sinclair/typebox": {
+      "version": "0.25.24",
+      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
+      "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+      "dev": true
     },
-    "node_modules/escodegen/node_modules/prelude-ls": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
-      "engines": {
-        "node": ">= 0.8.0"
+    "@sinonjs/commons": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
+      "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
+      "dev": true,
+      "requires": {
+        "type-detect": "4.0.8"
       }
     },
-    "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==",
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
+    "@sinonjs/fake-timers": {
+      "version": "10.0.2",
+      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
+      "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
+      "dev": true,
+      "requires": {
+        "@sinonjs/commons": "^2.0.0"
       }
     },
-    "node_modules/escodegen/node_modules/type-check": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
-      "dependencies": {
-        "prelude-ls": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
+    "@testing-library/jest-dom": {
+      "version": "5.16.5",
+      "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz",
+      "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==",
+      "dev": true,
+      "requires": {
+        "@adobe/css-tools": "^4.0.1",
+        "@babel/runtime": "^7.9.2",
+        "@types/testing-library__jest-dom": "^5.9.1",
+        "aria-query": "^5.0.0",
+        "chalk": "^3.0.0",
+        "css.escape": "^1.5.1",
+        "dom-accessibility-api": "^0.5.6",
+        "lodash": "^4.17.15",
+        "redent": "^3.0.0"
       }
     },
-    "node_modules/eslint": {
-      "version": "8.27.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz",
-      "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==",
-      "dependencies": {
-        "@eslint/eslintrc": "^1.3.3",
-        "@humanwhocodes/config-array": "^0.11.6",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
-        "ajv": "^6.10.0",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.1.1",
-        "eslint-utils": "^3.0.0",
-        "eslint-visitor-keys": "^3.3.0",
-        "espree": "^9.4.0",
-        "esquery": "^1.4.0",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "globals": "^13.15.0",
-        "grapheme-splitter": "^1.0.4",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-sdsl": "^4.1.4",
-        "js-yaml": "^4.1.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.1",
-        "regexpp": "^3.2.0",
-        "strip-ansi": "^6.0.1",
-        "strip-json-comments": "^3.1.0",
-        "text-table": "^0.2.0"
-      },
-      "bin": {
-        "eslint": "bin/eslint.js"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
+    "@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
+    },
+    "@types/babel__core": {
+      "version": "7.20.0",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
+      "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==",
+      "dev": true,
+      "requires": {
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
       }
     },
-    "node_modules/eslint-config-react-app": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz",
-      "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==",
-      "dependencies": {
-        "@babel/core": "^7.16.0",
-        "@babel/eslint-parser": "^7.16.3",
-        "@rushstack/eslint-patch": "^1.1.0",
-        "@typescript-eslint/eslint-plugin": "^5.5.0",
-        "@typescript-eslint/parser": "^5.5.0",
-        "babel-preset-react-app": "^10.0.1",
-        "confusing-browser-globals": "^1.0.11",
-        "eslint-plugin-flowtype": "^8.0.3",
-        "eslint-plugin-import": "^2.25.3",
-        "eslint-plugin-jest": "^25.3.0",
-        "eslint-plugin-jsx-a11y": "^6.5.1",
-        "eslint-plugin-react": "^7.27.1",
-        "eslint-plugin-react-hooks": "^4.3.0",
-        "eslint-plugin-testing-library": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "eslint": "^8.0.0"
+    "@types/babel__generator": {
+      "version": "7.6.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
+      "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
       }
     },
-    "node_modules/eslint-import-resolver-node": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
-      "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
-      "dependencies": {
-        "debug": "^3.2.7",
-        "resolve": "^1.20.0"
+    "@types/babel__template": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+      "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+      "dev": true,
+      "requires": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
-    "node_modules/eslint-import-resolver-node/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dependencies": {
-        "ms": "^2.1.1"
+    "@types/babel__traverse": {
+      "version": "7.18.3",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
+      "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.3.0"
       }
     },
-    "node_modules/eslint-module-utils": {
-      "version": "2.7.4",
-      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
-      "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
-      "dependencies": {
-        "debug": "^3.2.7"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "peerDependenciesMeta": {
-        "eslint": {
-          "optional": true
-        }
+    "@types/estree": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
+      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
+      "dev": true
+    },
+    "@types/graceful-fs": {
+      "version": "4.1.6",
+      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+      "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
       }
     },
-    "node_modules/eslint-module-utils/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dependencies": {
-        "ms": "^2.1.1"
+    "@types/istanbul-lib-coverage": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+      "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+      "dev": true
+    },
+    "@types/istanbul-lib-report": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+      "dev": true,
+      "requires": {
+        "@types/istanbul-lib-coverage": "*"
       }
     },
-    "node_modules/eslint-plugin-flowtype": {
-      "version": "8.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz",
-      "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==",
-      "dependencies": {
-        "lodash": "^4.17.21",
-        "string-natural-compare": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "peerDependencies": {
-        "@babel/plugin-syntax-flow": "^7.14.5",
-        "@babel/plugin-transform-react-jsx": "^7.14.9",
-        "eslint": "^8.1.0"
-      }
-    },
-    "node_modules/eslint-plugin-import": {
-      "version": "2.26.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
-      "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
-      "dependencies": {
-        "array-includes": "^3.1.4",
-        "array.prototype.flat": "^1.2.5",
-        "debug": "^2.6.9",
-        "doctrine": "^2.1.0",
-        "eslint-import-resolver-node": "^0.3.6",
-        "eslint-module-utils": "^2.7.3",
-        "has": "^1.0.3",
-        "is-core-module": "^2.8.1",
-        "is-glob": "^4.0.3",
-        "minimatch": "^3.1.2",
-        "object.values": "^1.1.5",
-        "resolve": "^1.22.0",
-        "tsconfig-paths": "^3.14.1"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "peerDependencies": {
-        "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+    "@types/istanbul-reports": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+      "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+      "dev": true,
+      "requires": {
+        "@types/istanbul-lib-report": "*"
       }
     },
-    "node_modules/eslint-plugin-import/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dependencies": {
-        "ms": "2.0.0"
+    "@types/jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz",
+      "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==",
+      "dev": true,
+      "requires": {
+        "expect": "^29.0.0",
+        "pretty-format": "^29.0.0"
       }
     },
-    "node_modules/eslint-plugin-import/node_modules/doctrine": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
+    "@types/jsdom": {
+      "version": "20.0.1",
+      "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz",
+      "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*",
+        "@types/tough-cookie": "*",
+        "parse5": "^7.0.0"
       }
     },
-    "node_modules/eslint-plugin-import/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+    "@types/node": {
+      "version": "18.15.7",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.7.tgz",
+      "integrity": "sha512-LFmUbFunqmBn26wJZgZPYZPrDR1RwGOu2v79Mgcka1ndO6V0/cwjivPTc4yoK6n9kmw4/ls1r8cLrvh2iMibFA==",
+      "dev": true
     },
-    "node_modules/eslint-plugin-jest": {
-      "version": "25.7.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz",
-      "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==",
-      "dependencies": {
-        "@typescript-eslint/experimental-utils": "^5.0.0"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
-      },
-      "peerDependencies": {
-        "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0",
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@typescript-eslint/eslint-plugin": {
-          "optional": true
-        },
-        "jest": {
-          "optional": true
-        }
-      }
+    "@types/prettier": {
+      "version": "2.7.2",
+      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
+      "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
+      "dev": true
     },
-    "node_modules/eslint-plugin-jsx-a11y": {
-      "version": "6.6.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz",
-      "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==",
-      "dependencies": {
-        "@babel/runtime": "^7.18.9",
-        "aria-query": "^4.2.2",
-        "array-includes": "^3.1.5",
-        "ast-types-flow": "^0.0.7",
-        "axe-core": "^4.4.3",
-        "axobject-query": "^2.2.0",
-        "damerau-levenshtein": "^1.0.8",
-        "emoji-regex": "^9.2.2",
-        "has": "^1.0.3",
-        "jsx-ast-utils": "^3.3.2",
-        "language-tags": "^1.0.5",
-        "minimatch": "^3.1.2",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependencies": {
-        "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
-      }
+    "@types/resolve": {
+      "version": "1.20.2",
+      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+      "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
+      "dev": true
     },
-    "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
+    "@types/stack-utils": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+      "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+      "dev": true
     },
-    "node_modules/eslint-plugin-react": {
-      "version": "7.31.10",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz",
-      "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==",
-      "dependencies": {
-        "array-includes": "^3.1.5",
-        "array.prototype.flatmap": "^1.3.0",
-        "doctrine": "^2.1.0",
-        "estraverse": "^5.3.0",
-        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
-        "minimatch": "^3.1.2",
-        "object.entries": "^1.1.5",
-        "object.fromentries": "^2.0.5",
-        "object.hasown": "^1.1.1",
-        "object.values": "^1.1.5",
-        "prop-types": "^15.8.1",
-        "resolve": "^2.0.0-next.3",
-        "semver": "^6.3.0",
-        "string.prototype.matchall": "^4.0.7"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "peerDependencies": {
-        "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+    "@types/testing-library__jest-dom": {
+      "version": "5.14.5",
+      "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
+      "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==",
+      "dev": true,
+      "requires": {
+        "@types/jest": "*"
       }
     },
-    "node_modules/eslint-plugin-react-hooks": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
-      "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
-      "engines": {
-        "node": ">=10"
-      },
-      "peerDependencies": {
-        "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
-      }
+    "@types/tough-cookie": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz",
+      "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==",
+      "dev": true
     },
-    "node_modules/eslint-plugin-react/node_modules/doctrine": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
+    "@types/yargs": {
+      "version": "17.0.23",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz",
+      "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==",
+      "dev": true,
+      "requires": {
+        "@types/yargs-parser": "*"
       }
     },
-    "node_modules/eslint-plugin-react/node_modules/resolve": {
-      "version": "2.0.0-next.4",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
-      "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
-      "dependencies": {
-        "is-core-module": "^2.9.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
+    "@types/yargs-parser": {
+      "version": "21.0.0",
+      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
+      "dev": true
     },
-    "node_modules/eslint-plugin-react/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
+    "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/eslint-plugin-testing-library": {
-      "version": "5.9.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz",
-      "integrity": "sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==",
-      "dependencies": {
-        "@typescript-eslint/utils": "^5.13.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0",
-        "npm": ">=6"
-      },
-      "peerDependencies": {
-        "eslint": "^7.5.0 || ^8.0.0"
-      }
+    "acorn": {
+      "version": "8.8.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+      "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+      "dev": true
     },
-    "node_modules/eslint-scope": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
-      "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+    "acorn-globals": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
+      "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
+      "dev": true,
+      "requires": {
+        "acorn": "^8.1.0",
+        "acorn-walk": "^8.0.2"
       }
     },
-    "node_modules/eslint-utils": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
-      "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
-      "dependencies": {
-        "eslint-visitor-keys": "^2.0.0"
-      },
-      "engines": {
-        "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/mysticatea"
-      },
-      "peerDependencies": {
-        "eslint": ">=5"
-      }
+    "acorn-walk": {
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+      "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+      "dev": true
     },
-    "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
-      "engines": {
-        "node": ">=10"
+    "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,
+      "requires": {
+        "debug": "4"
       }
     },
-    "node_modules/eslint-visitor-keys": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
-      "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+    "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,
+      "requires": {
+        "type-fest": "^0.21.3"
       }
     },
-    "node_modules/eslint-webpack-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz",
-      "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==",
-      "dependencies": {
-        "@types/eslint": "^7.29.0 || ^8.4.1",
-        "jest-worker": "^28.0.2",
-        "micromatch": "^4.0.5",
-        "normalize-path": "^3.0.0",
-        "schema-utils": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "eslint": "^7.0.0 || ^8.0.0",
-        "webpack": "^5.0.0"
-      }
+    "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
     },
-    "node_modules/eslint-webpack-plugin/node_modules/ajv": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-      "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-      "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"
+    "ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^2.0.1"
       }
     },
-    "node_modules/eslint-webpack-plugin/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==",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3"
-      },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
+    "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,
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
       }
     },
-    "node_modules/eslint-webpack-plugin/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==",
-      "engines": {
-        "node": ">=8"
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
       }
     },
-    "node_modules/eslint-webpack-plugin/node_modules/jest-worker": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz",
-      "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==",
-      "dependencies": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^8.0.0"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+    "aria-query": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+      "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+      "dev": true,
+      "requires": {
+        "deep-equal": "^2.0.5"
       }
     },
-    "node_modules/eslint-webpack-plugin/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=="
+    "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/eslint-webpack-plugin/node_modules/schema-utils": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-      "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-      "dependencies": {
-        "@types/json-schema": "^7.0.9",
-        "ajv": "^8.8.0",
-        "ajv-formats": "^2.1.1",
-        "ajv-keywords": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
+    "available-typed-arrays": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+      "dev": true
     },
-    "node_modules/eslint-webpack-plugin/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/supports-color?sponsor=1"
-      }
-    },
-    "node_modules/eslint/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/eslint/node_modules/argparse": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
-    },
-    "node_modules/eslint/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
+    "babel-jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
+      "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
+      "dev": true,
+      "requires": {
+        "@jest/transform": "^29.5.0",
+        "@types/babel__core": "^7.1.14",
+        "babel-plugin-istanbul": "^6.1.1",
+        "babel-preset-jest": "^29.5.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "slash": "^3.0.0"
       },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/eslint/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==",
       "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "node_modules/eslint/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=="
-    },
-    "node_modules/eslint/node_modules/escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+    "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,
+      "requires": {
+        "@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"
       }
     },
-    "node_modules/eslint/node_modules/globals": {
-      "version": "13.17.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
-      "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
-      "dependencies": {
-        "type-fest": "^0.20.2"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+    "babel-plugin-jest-hoist": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
+      "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.3.3",
+        "@babel/types": "^7.3.3",
+        "@types/babel__core": "^7.1.14",
+        "@types/babel__traverse": "^7.0.6"
       }
     },
-    "node_modules/eslint/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==",
-      "engines": {
-        "node": ">=8"
+    "babel-preset-current-node-syntax": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-bigint": "^7.8.3",
+        "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-top-level-await": "^7.8.3"
       }
     },
-    "node_modules/eslint/node_modules/js-yaml": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dependencies": {
-        "argparse": "^2.0.1"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
+    "babel-preset-jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
+      "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
+      "dev": true,
+      "requires": {
+        "babel-plugin-jest-hoist": "^29.5.0",
+        "babel-preset-current-node-syntax": "^1.0.0"
       }
     },
-    "node_modules/eslint/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
+    "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/eslint/node_modules/type-fest": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
+    "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
     },
-    "node_modules/espree": {
-      "version": "9.4.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
-      "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
-      "dependencies": {
-        "acorn": "^8.8.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.3.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
+    "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,
+      "requires": {
+        "balanced-match": "^1.0.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==",
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
+    "braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "requires": {
+        "fill-range": "^7.0.1"
       }
     },
-    "node_modules/esquery": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
-      "dependencies": {
-        "estraverse": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=0.10"
+    "browserslist": {
+      "version": "4.21.5",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+      "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30001449",
+        "electron-to-chromium": "^1.4.284",
+        "node-releases": "^2.0.8",
+        "update-browserslist-db": "^1.0.10"
       }
     },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
+    "bs-logger": {
+      "version": "0.2.6",
+      "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+      "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+      "dev": true,
+      "requires": {
+        "fast-json-stable-stringify": "2.x"
       }
     },
-    "node_modules/estraverse": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "engines": {
-        "node": ">=4.0"
+    "bser": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+      "dev": true,
+      "requires": {
+        "node-int64": "^0.4.0"
       }
     },
-    "node_modules/estree-walker": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
-      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="
+    "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/esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
+    "builtin-modules": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+      "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+      "dev": true
     },
-    "node_modules/etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
-      "engines": {
-        "node": ">= 0.6"
+    "call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
       }
     },
-    "node_modules/eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+    "callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "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==",
-      "engines": {
-        "node": ">=0.8.x"
-      }
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "dev": true
     },
-    "node_modules/execa": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
-      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
-      "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"
-      }
+    "caniuse-lite": {
+      "version": "1.0.30001469",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz",
+      "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==",
+      "dev": true
     },
-    "node_modules/exit": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/expect": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
-      "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/express": {
-      "version": "4.18.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
-      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
-      "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=="
-    },
-    "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==",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/express/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-    },
-    "node_modules/extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
-    },
-    "node_modules/extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
-      "engines": [
-        "node >=0.6.0"
-      ]
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
-    },
-    "node_modules/fast-glob": {
-      "version": "3.2.12",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
-      "dependencies": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
-      },
-      "engines": {
-        "node": ">=8.6.0"
-      }
-    },
-    "node_modules/fast-glob/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
-    },
-    "node_modules/fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
-    },
-    "node_modules/fastq": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
-      "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
-      "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==",
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/fb-watchman": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
-      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
-      "dependencies": {
-        "bser": "2.1.1"
-      }
-    },
-    "node_modules/file-entry-cache": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-      "dependencies": {
-        "flat-cache": "^3.0.4"
-      },
-      "engines": {
-        "node": "^10.12.0 || >=12.0.0"
-      }
-    },
-    "node_modules/file-loader": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
-      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
-      "dependencies": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/filelist": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
-      "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
-      "dependencies": {
-        "minimatch": "^5.0.1"
-      }
-    },
-    "node_modules/filelist/node_modules/brace-expansion": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/filelist/node_modules/minimatch": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
-      "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/filesize": {
-      "version": "8.0.7",
-      "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
-      "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==",
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
-      "dependencies": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "statuses": "2.0.1",
-        "unpipe": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/finalhandler/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "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=="
-    },
-    "node_modules/find-cache-dir": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
-      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^3.0.2",
-        "pkg-dir": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
-      }
-    },
-    "node_modules/find-root": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
-      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
-    },
-    "node_modules/find-up": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-      "dependencies": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/flat-cache": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
-      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
-      "dependencies": {
-        "flatted": "^3.1.0",
-        "rimraf": "^3.0.2"
-      },
-      "engines": {
-        "node": "^10.12.0 || >=12.0.0"
-      }
-    },
-    "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=="
-    },
-    "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==",
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependenciesMeta": {
-        "debug": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/for-each": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
-      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
-      "dependencies": {
-        "is-callable": "^1.1.3"
-      }
-    },
-    "node_modules/forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz",
-      "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==",
-      "dependencies": {
-        "@babel/code-frame": "^7.8.3",
-        "@types/json-schema": "^7.0.5",
-        "chalk": "^4.1.0",
-        "chokidar": "^3.4.2",
-        "cosmiconfig": "^6.0.0",
-        "deepmerge": "^4.2.2",
-        "fs-extra": "^9.0.0",
-        "glob": "^7.1.6",
-        "memfs": "^3.1.2",
-        "minimatch": "^3.0.4",
-        "schema-utils": "2.7.0",
-        "semver": "^7.3.2",
-        "tapable": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=10",
-        "yarn": ">=1.0.0"
-      },
-      "peerDependencies": {
-        "eslint": ">= 6",
-        "typescript": ">= 2.7",
-        "vue-template-compiler": "*",
-        "webpack": ">= 4"
-      },
-      "peerDependenciesMeta": {
-        "eslint": {
-          "optional": true
-        },
-        "vue-template-compiler": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "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/fork-ts-checker-webpack-plugin/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/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=="
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
-      "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
-      "dependencies": {
-        "@types/parse-json": "^4.0.0",
-        "import-fresh": "^3.1.0",
-        "parse-json": "^5.0.0",
-        "path-type": "^4.0.0",
-        "yaml": "^1.7.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-      "dependencies": {
-        "at-least-node": "^1.0.0",
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
-      "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
-      "dependencies": {
-        "@types/json-schema": "^7.0.4",
-        "ajv": "^6.12.2",
-        "ajv-keywords": "^3.4.1"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "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==",
-      "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==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fraction.js": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
-      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "type": "patreon",
-        "url": "https://www.patreon.com/infusion"
-      }
-    },
-    "node_modules/fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fs-extra": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
-      "dependencies": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/fs-monkey": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
-      "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="
-    },
-    "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=="
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "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=="
-    },
-    "node_modules/function.prototype.name": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/gauge": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
-      "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
-      "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/gaze": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
-      "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
-      "dependencies": {
-        "globule": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 4.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==",
-      "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==",
-      "engines": {
-        "node": "6.* || 8.* || >= 10.*"
-      }
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
-      "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-own-enumerable-property-symbols": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
-      "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="
-    },
-    "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==",
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/get-stdin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-      "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
-      "engines": {
-        "node": ">=0.10.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==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/get-symbol-description": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
-      "dependencies": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "node_modules/glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "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": "6.0.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-      "dependencies": {
-        "is-glob": "^4.0.3"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/glob-to-regexp": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
-    },
-    "node_modules/global-modules": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
-      "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
-      "dependencies": {
-        "global-prefix": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/global-prefix": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
-      "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
-      "dependencies": {
-        "ini": "^1.3.5",
-        "kind-of": "^6.0.2",
-        "which": "^1.3.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/global-prefix/node_modules/which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/globby": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-      "dependencies": {
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.2.9",
-        "ignore": "^5.2.0",
-        "merge2": "^1.4.1",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/globule": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz",
-      "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
-      "dependencies": {
-        "glob": "~7.1.1",
-        "lodash": "^4.17.21",
-        "minimatch": "~3.0.2"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/globule/node_modules/glob": {
-      "version": "7.1.7",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-      "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-      "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/globule/node_modules/minimatch": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
-      "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dependencies": {
-        "get-intrinsic": "^1.1.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/graceful-fs": {
-      "version": "4.2.10",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
-    },
-    "node_modules/grapheme-splitter": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
-    },
-    "node_modules/gzip-size": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
-      "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
-      "dependencies": {
-        "duplexer": "^0.1.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "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=="
-    },
-    "node_modules/har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/har-validator": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-      "deprecated": "this library is no longer supported",
-      "dependencies": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/hard-rejection": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
-      "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/harmony-reflect": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
-      "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g=="
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/has-bigints": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/has-property-descriptors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
-      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
-      "dependencies": {
-        "get-intrinsic": "^1.1.1"
-      },
-      "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==",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-tostringtag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "dependencies": {
-        "has-symbols": "^1.0.2"
-      },
-      "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=="
-    },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "bin": {
-        "he": "bin/he"
-      }
-    },
-    "node_modules/hoist-non-react-statics": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
-      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
-      "dependencies": {
-        "react-is": "^16.7.0"
-      }
-    },
-    "node_modules/hoist-non-react-statics/node_modules/react-is": {
-      "version": "16.13.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-    },
-    "node_modules/hoopy": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
-      "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/hosted-git-info": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
-      "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "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==",
-      "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.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "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=="
-    },
-    "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==",
-      "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==",
-      "dependencies": {
-        "whatwg-encoding": "^1.0.5"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/html-entities": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
-      "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="
-    },
-    "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=="
-    },
-    "node_modules/html-minifier-terser": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
-      "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
-      "dependencies": {
-        "camel-case": "^4.1.2",
-        "clean-css": "^5.2.2",
-        "commander": "^8.3.0",
-        "he": "^1.2.0",
-        "param-case": "^3.0.4",
-        "relateurl": "^0.2.7",
-        "terser": "^5.10.0"
-      },
-      "bin": {
-        "html-minifier-terser": "cli.js"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/html-webpack-plugin": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
-      "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==",
-      "dependencies": {
-        "@types/html-minifier-terser": "^6.0.0",
-        "html-minifier-terser": "^6.0.2",
-        "lodash": "^4.17.21",
-        "pretty-error": "^4.0.0",
-        "tapable": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/html-webpack-plugin"
-      },
-      "peerDependencies": {
-        "webpack": "^5.20.0"
-      }
-    },
-    "node_modules/htmlparser2": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
-      "funding": [
-        "https://github.com/fb55/htmlparser2?sponsor=1",
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
-      }
-    },
-    "node_modules/http-cache-semantics": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
-      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
-    },
-    "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=="
-    },
-    "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==",
-      "dependencies": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/http-parser-js": {
-      "version": "0.5.8",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
-      "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
-    },
-    "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==",
-      "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==",
-      "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==",
-      "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/http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      },
-      "engines": {
-        "node": ">=0.8",
-        "npm": ">=1.3.7"
-      }
-    },
-    "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==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "ms": "^2.0.0"
-      }
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-      },
-      "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==",
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/idb": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
-      "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="
-    },
-    "node_modules/identity-obj-proxy": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
-      "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==",
-      "dependencies": {
-        "harmony-reflect": "^1.4.6"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ignore": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
-      "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/immer": {
-      "version": "9.0.16",
-      "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz",
-      "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/immer"
-      }
-    },
-    "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==",
-      "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==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-local": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
-      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
-      "dependencies": {
-        "pkg-dir": "^4.2.0",
-        "resolve-cwd": "^3.0.0"
-      },
-      "bin": {
-        "import-local-fixture": "fixtures/cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/infer-owner": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
-    },
-    "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==",
-      "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=="
-    },
-    "node_modules/ini": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
-      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
-    },
-    "node_modules/internal-slot": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
-      "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
-      "dependencies": {
-        "get-intrinsic": "^1.1.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/ip": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
-      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
-    },
-    "node_modules/ipaddr.js": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
-      "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/is-arguments": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
-      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
-    },
-    "node_modules/is-bigint": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dependencies": {
-        "has-bigints": "^1.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-boolean-object": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-callable": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
-      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-core-module": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "dependencies": {
-        "has": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "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==",
-      "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==",
-      "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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-generator-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
-      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-lambda": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
-      "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
-    },
-    "node_modules/is-map": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
-      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
-      "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
-    },
-    "node_modules/is-negative-zero": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/is-number-object": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
-      "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-plain-obj": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
-      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "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=="
-    },
-    "node_modules/is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-regexp": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
-      "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-root": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
-      "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-set": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
-      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-shared-array-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "dependencies": {
-        "call-bind": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-stream": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-string": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dependencies": {
-        "has-symbols": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-typed-array": {
-      "version": "1.1.10",
-      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
-      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
-      "dependencies": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
-    },
-    "node_modules/is-weakmap": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
-      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-weakref": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "dependencies": {
-        "call-bind": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-weakset": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
-      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "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==",
-      "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=="
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
-    },
-    "node_modules/isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
-    },
-    "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==",
-      "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==",
-      "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.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/istanbul-lib-report": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
-      "dependencies": {
-        "istanbul-lib-coverage": "^3.0.0",
-        "make-dir": "^3.0.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "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==",
-      "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==",
-      "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==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/istanbul-reports": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
-      "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
-      "dependencies": {
-        "html-escaper": "^2.0.0",
-        "istanbul-lib-report": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jake": {
-      "version": "10.8.5",
-      "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
-      "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
-      "dependencies": {
-        "async": "^3.2.3",
-        "chalk": "^4.0.2",
-        "filelist": "^1.0.1",
-        "minimatch": "^3.0.4"
-      },
-      "bin": {
-        "jake": "bin/cli.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/jake/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jake/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "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/jake/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jake/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=="
-    },
-    "node_modules/jake/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jake/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
-      "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
-      "dependencies": {
-        "@jest/core": "^27.5.1",
-        "import-local": "^3.0.2",
-        "jest-cli": "^27.5.1"
-      },
-      "bin": {
-        "jest": "bin/jest.js"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      },
-      "peerDependencies": {
-        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
-      },
-      "peerDependenciesMeta": {
-        "node-notifier": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/jest-changed-files": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
-      "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "execa": "^5.0.0",
-        "throat": "^6.0.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-circus": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
-      "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
-      "dependencies": {
-        "@jest/environment": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "co": "^4.6.0",
-        "dedent": "^0.7.0",
-        "expect": "^27.5.1",
-        "is-generator-fn": "^2.0.0",
-        "jest-each": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "pretty-format": "^27.5.1",
-        "slash": "^3.0.0",
-        "stack-utils": "^2.0.3",
-        "throat": "^6.0.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-circus/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-circus/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-circus/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-circus/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=="
-    },
-    "node_modules/jest-circus/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-circus/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-cli": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
-      "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
-      "dependencies": {
-        "@jest/core": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.2.9",
-        "import-local": "^3.0.2",
-        "jest-config": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "prompts": "^2.0.1",
-        "yargs": "^16.2.0"
-      },
-      "bin": {
-        "jest": "bin/jest.js"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      },
-      "peerDependencies": {
-        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
-      },
-      "peerDependenciesMeta": {
-        "node-notifier": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/jest-cli/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-cli/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-cli/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-cli/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=="
-    },
-    "node_modules/jest-cli/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-cli/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-config": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
-      "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
-      "dependencies": {
-        "@babel/core": "^7.8.0",
-        "@jest/test-sequencer": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "babel-jest": "^27.5.1",
-        "chalk": "^4.0.0",
-        "ci-info": "^3.2.0",
-        "deepmerge": "^4.2.2",
-        "glob": "^7.1.1",
-        "graceful-fs": "^4.2.9",
-        "jest-circus": "^27.5.1",
-        "jest-environment-jsdom": "^27.5.1",
-        "jest-environment-node": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "jest-jasmine2": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-runner": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "parse-json": "^5.2.0",
-        "pretty-format": "^27.5.1",
-        "slash": "^3.0.0",
-        "strip-json-comments": "^3.1.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      },
-      "peerDependencies": {
-        "ts-node": ">=9.0.0"
-      },
-      "peerDependenciesMeta": {
-        "ts-node": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/jest-config/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-config/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-config/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-config/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=="
-    },
-    "node_modules/jest-config/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-config/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-diff": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
-      "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
-      "dependencies": {
-        "chalk": "^4.0.0",
-        "diff-sequences": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-diff/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-diff/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-diff/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-diff/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=="
-    },
-    "node_modules/jest-diff/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-diff/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-docblock": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
-      "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
-      "dependencies": {
-        "detect-newline": "^3.0.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-each": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
-      "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "jest-get-type": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-each/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-each/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-each/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-each/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=="
-    },
-    "node_modules/jest-each/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-each/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-environment-jsdom": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
-      "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
-      "dependencies": {
-        "@jest/environment": "^27.5.1",
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "jest-mock": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jsdom": "^16.6.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-environment-node": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
-      "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
-      "dependencies": {
-        "@jest/environment": "^27.5.1",
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "jest-mock": "^27.5.1",
-        "jest-util": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-get-type": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
-      "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-haste-map": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
-      "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "@types/graceful-fs": "^4.1.2",
-        "@types/node": "*",
-        "anymatch": "^3.0.3",
-        "fb-watchman": "^2.0.0",
-        "graceful-fs": "^4.2.9",
-        "jest-regex-util": "^27.5.1",
-        "jest-serializer": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-worker": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "walker": "^1.0.7"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "^2.3.2"
-      }
-    },
-    "node_modules/jest-jasmine2": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
-      "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
-      "dependencies": {
-        "@jest/environment": "^27.5.1",
-        "@jest/source-map": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "co": "^4.6.0",
-        "expect": "^27.5.1",
-        "is-generator-fn": "^2.0.0",
-        "jest-each": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "pretty-format": "^27.5.1",
-        "throat": "^6.0.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-jasmine2/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-jasmine2/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-jasmine2/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-jasmine2/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=="
-    },
-    "node_modules/jest-jasmine2/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-jasmine2/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-leak-detector": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
-      "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
-      "dependencies": {
-        "jest-get-type": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-matcher-utils": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
-      "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
-      "dependencies": {
-        "chalk": "^4.0.0",
-        "jest-diff": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-matcher-utils/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-matcher-utils/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=="
-    },
-    "node_modules/jest-matcher-utils/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-matcher-utils/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-message-util": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
-      "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
-      "dependencies": {
-        "@babel/code-frame": "^7.12.13",
-        "@jest/types": "^27.5.1",
-        "@types/stack-utils": "^2.0.0",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.9",
-        "micromatch": "^4.0.4",
-        "pretty-format": "^27.5.1",
-        "slash": "^3.0.0",
-        "stack-utils": "^2.0.3"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-message-util/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-message-util/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-message-util/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-message-util/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=="
-    },
-    "node_modules/jest-message-util/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-message-util/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-mock": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
-      "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "@types/node": "*"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-pnp-resolver": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
-      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
-      "engines": {
-        "node": ">=6"
-      },
-      "peerDependencies": {
-        "jest-resolve": "*"
-      },
-      "peerDependenciesMeta": {
-        "jest-resolve": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/jest-regex-util": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
-      "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-resolve": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
-      "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-pnp-resolver": "^1.2.2",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "resolve": "^1.20.0",
-        "resolve.exports": "^1.1.0",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-resolve-dependencies": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
-      "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-snapshot": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-resolve/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-resolve/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-resolve/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-resolve/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=="
-    },
-    "node_modules/jest-resolve/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-resolve/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-runner": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
-      "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
-      "dependencies": {
-        "@jest/console": "^27.5.1",
-        "@jest/environment": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "emittery": "^0.8.1",
-        "graceful-fs": "^4.2.9",
-        "jest-docblock": "^27.5.1",
-        "jest-environment-jsdom": "^27.5.1",
-        "jest-environment-node": "^27.5.1",
-        "jest-haste-map": "^27.5.1",
-        "jest-leak-detector": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-worker": "^27.5.1",
-        "source-map-support": "^0.5.6",
-        "throat": "^6.0.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-runner/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-runner/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-runner/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-runner/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=="
-    },
-    "node_modules/jest-runner/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-runner/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-runtime": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
-      "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
-      "dependencies": {
-        "@jest/environment": "^27.5.1",
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/globals": "^27.5.1",
-        "@jest/source-map": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "cjs-module-lexer": "^1.0.0",
-        "collect-v8-coverage": "^1.0.0",
-        "execa": "^5.0.0",
-        "glob": "^7.1.3",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-mock": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "slash": "^3.0.0",
-        "strip-bom": "^4.0.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-runtime/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-runtime/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-runtime/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-runtime/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=="
-    },
-    "node_modules/jest-runtime/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-runtime/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-serializer": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
-      "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
-      "dependencies": {
-        "@types/node": "*",
-        "graceful-fs": "^4.2.9"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-snapshot": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
-      "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
-      "dependencies": {
-        "@babel/core": "^7.7.2",
-        "@babel/generator": "^7.7.2",
-        "@babel/plugin-syntax-typescript": "^7.7.2",
-        "@babel/traverse": "^7.7.2",
-        "@babel/types": "^7.0.0",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/babel__traverse": "^7.0.4",
-        "@types/prettier": "^2.1.5",
-        "babel-preset-current-node-syntax": "^1.0.0",
-        "chalk": "^4.0.0",
-        "expect": "^27.5.1",
-        "graceful-fs": "^4.2.9",
-        "jest-diff": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "jest-haste-map": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "natural-compare": "^1.4.0",
-        "pretty-format": "^27.5.1",
-        "semver": "^7.3.2"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-snapshot/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-snapshot/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=="
-    },
-    "node_modules/jest-snapshot/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-snapshot/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-util": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
-      "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "ci-info": "^3.2.0",
-        "graceful-fs": "^4.2.9",
-        "picomatch": "^2.2.3"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-util/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-util/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-util/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-util/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=="
-    },
-    "node_modules/jest-util/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-util/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-validate": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
-      "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
-      "dependencies": {
-        "@jest/types": "^27.5.1",
-        "camelcase": "^6.2.0",
-        "chalk": "^4.0.0",
-        "jest-get-type": "^27.5.1",
-        "leven": "^3.1.0",
-        "pretty-format": "^27.5.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-validate/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-validate/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-validate/node_modules/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-validate/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=="
-    },
-    "node_modules/jest-validate/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-validate/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watch-typeahead": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz",
-      "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==",
-      "dependencies": {
-        "ansi-escapes": "^4.3.1",
-        "chalk": "^4.0.0",
-        "jest-regex-util": "^28.0.0",
-        "jest-watcher": "^28.0.0",
-        "slash": "^4.0.0",
-        "string-length": "^5.0.1",
-        "strip-ansi": "^7.0.1"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "peerDependencies": {
-        "jest": "^27.0.0 || ^28.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/@jest/console": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz",
-      "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==",
-      "dependencies": {
-        "@jest/types": "^28.1.3",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "jest-message-util": "^28.1.3",
-        "jest-util": "^28.1.3",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz",
-      "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==",
-      "dependencies": {
-        "@jest/console": "^28.1.3",
-        "@jest/types": "^28.1.3",
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "collect-v8-coverage": "^1.0.0"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/@jest/types": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz",
-      "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==",
-      "dependencies": {
-        "@jest/schemas": "^28.1.3",
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^17.0.8",
-        "chalk": "^4.0.0"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/@types/yargs": {
-      "version": "17.0.13",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz",
-      "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-watch-typeahead/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-watch-typeahead/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/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=="
-    },
-    "node_modules/jest-watch-typeahead/node_modules/emittery": {
-      "version": "0.10.2",
-      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz",
-      "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/emittery?sponsor=1"
-      }
-    },
-    "node_modules/jest-watch-typeahead/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/jest-message-util": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz",
-      "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==",
-      "dependencies": {
-        "@babel/code-frame": "^7.12.13",
-        "@jest/types": "^28.1.3",
-        "@types/stack-utils": "^2.0.0",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.9",
-        "micromatch": "^4.0.4",
-        "pretty-format": "^28.1.3",
-        "slash": "^3.0.0",
-        "stack-utils": "^2.0.3"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": {
-      "version": "28.0.2",
-      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz",
-      "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==",
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/jest-util": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz",
-      "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==",
-      "dependencies": {
-        "@jest/types": "^28.1.3",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "ci-info": "^3.2.0",
-        "graceful-fs": "^4.2.9",
-        "picomatch": "^2.2.3"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/jest-watcher": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz",
-      "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==",
-      "dependencies": {
-        "@jest/test-result": "^28.1.3",
-        "@jest/types": "^28.1.3",
-        "@types/node": "*",
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.0.0",
-        "emittery": "^0.10.2",
-        "jest-util": "^28.1.3",
-        "string-length": "^4.0.1"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
-      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
-      "dependencies": {
-        "char-regex": "^1.0.2",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/jest-watcher/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==",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/pretty-format": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz",
-      "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==",
-      "dependencies": {
-        "@jest/schemas": "^28.1.3",
-        "ansi-regex": "^5.0.1",
-        "ansi-styles": "^5.0.0",
-        "react-is": "^18.0.0"
-      },
-      "engines": {
-        "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
-      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
-    "node_modules/jest-watch-typeahead/node_modules/slash": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
-      "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/string-length": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz",
-      "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==",
-      "dependencies": {
-        "char-regex": "^2.0.0",
-        "strip-ansi": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=12.20"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz",
-      "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==",
-      "engines": {
-        "node": ">=12.20"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/strip-ansi": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
-      "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/strip-ansi/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==",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/jest-watch-typeahead/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watcher": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
-      "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
-      "dependencies": {
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.0.0",
-        "jest-util": "^27.5.1",
-        "string-length": "^4.0.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-watcher/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-watcher/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/jest-watcher/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-watcher/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=="
-    },
-    "node_modules/jest-watcher/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watcher/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/supports-color?sponsor=1"
-      }
-    },
-    "node_modules/js-base64": {
-      "version": "2.6.4",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
-      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
-    },
-    "node_modules/js-sdsl": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz",
-      "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q=="
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
-    },
-    "node_modules/js-yaml": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
-    },
-    "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==",
-      "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==",
-      "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=="
-    },
-    "node_modules/json-schema": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
-      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
-    },
-    "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=="
-    },
-    "node_modules/json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
-    },
-    "node_modules/json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
-    },
-    "node_modules/json5": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
-      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
-      "bin": {
-        "json5": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jsonfile": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-      "dependencies": {
-        "universalify": "^2.0.0"
-      },
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/jsonpointer": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
-      "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/jsprim": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
-      "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
-      "dependencies": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.4.0",
-        "verror": "1.10.0"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/jsx-ast-utils": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
-      "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
-      "dependencies": {
-        "array-includes": "^3.1.5",
-        "object.assign": "^4.1.3"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/kleur": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/klona": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz",
-      "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/language-subtag-registry": {
-      "version": "0.3.22",
-      "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
-      "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w=="
-    },
-    "node_modules/language-tags": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
-      "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==",
-      "dependencies": {
-        "language-subtag-registry": "~0.3.2"
-      }
-    },
-    "node_modules/leven": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
-      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/levn": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-      "dependencies": {
-        "prelude-ls": "^1.2.1",
-        "type-check": "~0.4.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/lilconfig": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
-      "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
-      "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=="
-    },
-    "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==",
-      "engines": {
-        "node": ">=6.11.5"
-      }
-    },
-    "node_modules/loader-utils": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
-      "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-      "dependencies": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^2.1.2"
-      },
-      "engines": {
-        "node": ">=8.9.0"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-      "dependencies": {
-        "p-locate": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-    },
-    "node_modules/lodash.debounce": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
-    },
-    "node_modules/lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
-    },
-    "node_modules/lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
-    },
-    "node_modules/lodash.sortby": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-      "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="
-    },
-    "node_modules/lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
-    },
-    "node_modules/loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/lower-case": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
-      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
-      "dependencies": {
-        "tslib": "^2.0.3"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/lz-string": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
-      "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==",
-      "bin": {
-        "lz-string": "bin/bin.js"
-      }
-    },
-    "node_modules/magic-string": {
-      "version": "0.25.9",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
-      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-      "dependencies": {
-        "sourcemap-codec": "^1.4.8"
-      }
-    },
-    "node_modules/make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-      "dependencies": {
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/make-dir/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/makeerror": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
-      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
-      "dependencies": {
-        "tmpl": "1.0.5"
-      }
-    },
-    "node_modules/map-obj": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
-      "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/mdn-data": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
-      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA=="
-    },
-    "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==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/memfs": {
-      "version": "3.4.11",
-      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz",
-      "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==",
-      "dependencies": {
-        "fs-monkey": "^1.0.3"
-      },
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/meow": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
-      "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
-      "dependencies": {
-        "@types/minimist": "^1.2.0",
-        "camelcase-keys": "^6.2.2",
-        "decamelize": "^1.2.0",
-        "decamelize-keys": "^1.1.0",
-        "hard-rejection": "^2.1.0",
-        "minimist-options": "4.1.0",
-        "normalize-package-data": "^3.0.0",
-        "read-pkg-up": "^7.0.1",
-        "redent": "^3.0.0",
-        "trim-newlines": "^3.0.0",
-        "type-fest": "^0.18.0",
-        "yargs-parser": "^20.2.3"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/meow/node_modules/type-fest": {
-      "version": "0.18.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
-      "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "node_modules/merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
-      "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==",
-      "dependencies": {
-        "braces": "^3.0.2",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "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==",
-      "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==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/min-indent": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
-      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mini-css-extract-plugin": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz",
-      "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==",
-      "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/mini-css-extract-plugin/node_modules/ajv": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-      "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-      "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/mini-css-extract-plugin/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==",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3"
-      },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
-      }
-    },
-    "node_modules/mini-css-extract-plugin/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=="
-    },
-    "node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-      "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-      "dependencies": {
-        "@types/json-schema": "^7.0.9",
-        "ajv": "^8.8.0",
-        "ajv-formats": "^2.1.1",
-        "ajv-keywords": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "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=="
-    },
-    "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/minimist": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/minimist-options": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
-      "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
-      "dependencies": {
-        "arrify": "^1.0.1",
-        "is-plain-obj": "^1.1.0",
-        "kind-of": "^6.0.3"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/minimist-options/node_modules/is-plain-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/minipass": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
-      "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "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==",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/minipass-fetch": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
-      "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
-      "dependencies": {
-        "minipass": "^3.1.0",
-        "minipass-sized": "^1.0.3",
-        "minizlib": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "optionalDependencies": {
-        "encoding": "^0.1.12"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/minizlib": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-      "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
-      "dependencies": {
-        "minipass": "^3.0.0",
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "minimist": "^1.2.6"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
-    "node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-    },
-    "node_modules/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==",
-      "dependencies": {
-        "dns-packet": "^5.2.2",
-        "thunky": "^1.0.2"
-      },
-      "bin": {
-        "multicast-dns": "cli.js"
-      }
-    },
-    "node_modules/nan": {
-      "version": "2.17.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
-      "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
-    },
-    "node_modules/nanoid": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
-      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
-      "bin": {
-        "nanoid": "bin/nanoid.cjs"
-      },
-      "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-      }
-    },
-    "node_modules/natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
-    },
-    "node_modules/natural-compare-lite": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
-      "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g=="
-    },
-    "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==",
-      "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=="
-    },
-    "node_modules/no-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
-      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
-      "dependencies": {
-        "lower-case": "^2.0.2",
-        "tslib": "^2.0.3"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">= 6.13.0"
-      }
-    },
-    "node_modules/node-gyp": {
-      "version": "8.4.1",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz",
-      "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==",
-      "dependencies": {
-        "env-paths": "^2.2.0",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.6",
-        "make-fetch-happen": "^9.1.0",
-        "nopt": "^5.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": ">= 10.12.0"
-      }
-    },
-    "node_modules/node-gyp/node_modules/make-fetch-happen": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
-      "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
-      "dependencies": {
-        "agentkeepalive": "^4.1.3",
-        "cacache": "^15.2.0",
-        "http-cache-semantics": "^4.1.0",
-        "http-proxy-agent": "^4.0.1",
-        "https-proxy-agent": "^5.0.0",
-        "is-lambda": "^1.0.1",
-        "lru-cache": "^6.0.0",
-        "minipass": "^3.1.3",
-        "minipass-collect": "^1.0.2",
-        "minipass-fetch": "^1.3.2",
-        "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.4",
-        "negotiator": "^0.6.2",
-        "promise-retry": "^2.0.1",
-        "socks-proxy-agent": "^6.0.0",
-        "ssri": "^8.0.0"
-      },
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/node-int64": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
-      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
-    },
-    "node_modules/node-releases": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
-      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
-    },
-    "node_modules/node-sass": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.3.tgz",
-      "integrity": "sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==",
-      "hasInstallScript": true,
-      "dependencies": {
-        "async-foreach": "^0.1.3",
-        "chalk": "^4.1.2",
-        "cross-spawn": "^7.0.3",
-        "gaze": "^1.0.0",
-        "get-stdin": "^4.0.1",
-        "glob": "^7.0.3",
-        "lodash": "^4.17.15",
-        "meow": "^9.0.0",
-        "nan": "^2.13.2",
-        "node-gyp": "^8.4.1",
-        "npmlog": "^5.0.0",
-        "request": "^2.88.0",
-        "sass-graph": "^4.0.1",
-        "stdout-stream": "^1.4.0",
-        "true-case-path": "^1.0.2"
-      },
-      "bin": {
-        "node-sass": "bin/node-sass"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/node-sass/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/node-sass/node_modules/are-we-there-yet": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
-      "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
-      "dependencies": {
-        "delegates": "^1.0.0",
-        "readable-stream": "^3.6.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/node-sass/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "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/node-sass/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/node-sass/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=="
-    },
-    "node_modules/node-sass/node_modules/gauge": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
-      "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
-      "dependencies": {
-        "aproba": "^1.0.3 || ^2.0.0",
-        "color-support": "^1.1.2",
-        "console-control-strings": "^1.0.0",
-        "has-unicode": "^2.0.1",
-        "object-assign": "^4.1.1",
-        "signal-exit": "^3.0.0",
-        "string-width": "^4.2.3",
-        "strip-ansi": "^6.0.1",
-        "wide-align": "^1.1.2"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/node-sass/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/node-sass/node_modules/npmlog": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
-      "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
-      "dependencies": {
-        "are-we-there-yet": "^2.0.0",
-        "console-control-strings": "^1.1.0",
-        "gauge": "^3.0.0",
-        "set-blocking": "^2.0.0"
-      }
-    },
-    "node_modules/node-sass/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/nopt": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
-      "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/normalize-package-data": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
-      "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
-      "dependencies": {
-        "hosted-git-info": "^4.0.1",
-        "is-core-module": "^2.5.0",
-        "semver": "^7.3.4",
-        "validate-npm-package-license": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "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==",
-      "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==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-url": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
-      "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "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==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "boolbase": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/nth-check?sponsor=1"
-      }
-    },
-    "node_modules/nwsapi": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz",
-      "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw=="
-    },
-    "node_modules/oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "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==",
-      "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==",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object.assign": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.entries": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
-      "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object.fromentries": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
-      "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.getownpropertydescriptors": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz",
-      "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==",
-      "dependencies": {
-        "array.prototype.reduce": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.hasown": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
-      "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
-      "dependencies": {
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.values": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
-      "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/obuf": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
-      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
-    },
-    "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==",
-      "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==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "mimic-fn": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/open": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
-      "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
-      "dependencies": {
-        "define-lazy-prop": "^2.0.0",
-        "is-docker": "^2.1.1",
-        "is-wsl": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/optionator": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
-      "dependencies": {
-        "deep-is": "^0.1.3",
-        "fast-levenshtein": "^2.0.6",
-        "levn": "^0.4.1",
-        "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0",
-        "word-wrap": "^1.2.3"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-      "dependencies": {
-        "yocto-queue": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-      "dependencies": {
-        "p-limit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "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==",
-      "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==",
-      "dependencies": {
-        "@types/retry": "0.12.0",
-        "retry": "^0.13.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/param-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
-      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
-      "dependencies": {
-        "dot-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "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==",
-      "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==",
-      "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/parse5": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
-      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
-    },
-    "node_modules/parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/pascal-case": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
-      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
-      "dependencies": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "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==",
-      "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==",
-      "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==",
-      "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=="
-    },
-    "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=="
-    },
-    "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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/performance-now": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
-    },
-    "node_modules/picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pirates": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
-      "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/pkg-dir": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-      "dependencies": {
-        "find-up": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pkg-dir/node_modules/find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pkg-dir/node_modules/locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pkg-dir/node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/pkg-dir/node_modules/p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pkg-up": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
-      "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pkg-up/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pkg-up/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pkg-up/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==",
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/pkg-up/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pkg-up/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "8.4.19",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
-      "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/postcss"
-        }
-      ],
-      "dependencies": {
-        "nanoid": "^3.3.4",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      }
-    },
-    "node_modules/postcss-attribute-case-insensitive": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz",
-      "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.10"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-browser-comments": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz",
-      "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==",
-      "engines": {
-        "node": ">=8"
-      },
-      "peerDependencies": {
-        "browserslist": ">=4",
-        "postcss": ">=8"
-      }
-    },
-    "node_modules/postcss-calc": {
-      "version": "8.2.4",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
-      "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.9",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.2"
-      }
-    },
-    "node_modules/postcss-clamp": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
-      "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": ">=7.6.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.6"
-      }
-    },
-    "node_modules/postcss-color-functional-notation": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz",
-      "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-color-hex-alpha": {
-      "version": "8.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz",
-      "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4"
-      }
-    },
-    "node_modules/postcss-color-rebeccapurple": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz",
-      "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-colormin": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz",
-      "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==",
-      "dependencies": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0",
-        "colord": "^2.9.1",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-convert-values": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz",
-      "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==",
-      "dependencies": {
-        "browserslist": "^4.21.4",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-custom-media": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz",
-      "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.3"
-      }
-    },
-    "node_modules/postcss-custom-properties": {
-      "version": "12.1.10",
-      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz",
-      "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-custom-selectors": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz",
-      "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.4"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.3"
-      }
-    },
-    "node_modules/postcss-dir-pseudo-class": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz",
-      "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.10"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-discard-comments": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
-      "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-discard-duplicates": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
-      "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-discard-empty": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
-      "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-discard-overridden": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
-      "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-double-position-gradients": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz",
-      "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==",
-      "dependencies": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-env-function": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz",
-      "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4"
-      }
-    },
-    "node_modules/postcss-flexbugs-fixes": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz",
-      "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==",
-      "peerDependencies": {
-        "postcss": "^8.1.4"
-      }
-    },
-    "node_modules/postcss-focus-visible": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz",
-      "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.9"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4"
-      }
-    },
-    "node_modules/postcss-focus-within": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz",
-      "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.9"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4"
-      }
-    },
-    "node_modules/postcss-font-variant": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
-      "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-gap-properties": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz",
-      "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==",
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-image-set-function": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz",
-      "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-import": {
-      "version": "14.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
-      "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
-      "dependencies": {
-        "postcss-value-parser": "^4.0.0",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.0.0"
-      }
-    },
-    "node_modules/postcss-initial": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz",
-      "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==",
-      "peerDependencies": {
-        "postcss": "^8.0.0"
-      }
-    },
-    "node_modules/postcss-js": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
-      "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
-      "dependencies": {
-        "camelcase-css": "^2.0.1"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >= 16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      },
-      "peerDependencies": {
-        "postcss": "^8.3.3"
-      }
-    },
-    "node_modules/postcss-lab-function": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz",
-      "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==",
-      "dependencies": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-load-config": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
-      "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
-      "dependencies": {
-        "lilconfig": "^2.0.5",
-        "yaml": "^1.10.2"
-      },
-      "engines": {
-        "node": ">= 10"
-      },
-      "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": "6.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz",
-      "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==",
-      "dependencies": {
-        "cosmiconfig": "^7.0.0",
-        "klona": "^2.0.5",
-        "semver": "^7.3.5"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "postcss": "^7.0.0 || ^8.0.1",
-        "webpack": "^5.0.0"
-      }
-    },
-    "node_modules/postcss-logical": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz",
-      "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==",
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4"
-      }
-    },
-    "node_modules/postcss-media-minmax": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz",
-      "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==",
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-merge-longhand": {
-      "version": "5.1.7",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz",
-      "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0",
-        "stylehacks": "^5.1.1"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-merge-rules": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz",
-      "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==",
-      "dependencies": {
-        "browserslist": "^4.21.4",
-        "caniuse-api": "^3.0.0",
-        "cssnano-utils": "^3.1.0",
-        "postcss-selector-parser": "^6.0.5"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-minify-font-values": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
-      "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-minify-gradients": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
-      "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
-      "dependencies": {
-        "colord": "^2.9.1",
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-minify-params": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz",
-      "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==",
-      "dependencies": {
-        "browserslist": "^4.21.4",
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-minify-selectors": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
-      "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.5"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-modules-local-by-default": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
-      "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "icss-utils": "^5.0.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-nested": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
-      "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.10"
-      },
-      "engines": {
-        "node": ">=12.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.14"
-      }
-    },
-    "node_modules/postcss-nesting": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz",
-      "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==",
-      "dependencies": {
-        "@csstools/selector-specificity": "^2.0.0",
-        "postcss-selector-parser": "^6.0.10"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-normalize": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz",
-      "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==",
-      "dependencies": {
-        "@csstools/normalize.css": "*",
-        "postcss-browser-comments": "^4",
-        "sanitize.css": "*"
-      },
-      "engines": {
-        "node": ">= 12"
-      },
-      "peerDependencies": {
-        "browserslist": ">= 4",
-        "postcss": ">= 8"
-      }
-    },
-    "node_modules/postcss-normalize-charset": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
-      "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-display-values": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
-      "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-positions": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
-      "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-repeat-style": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
-      "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-string": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
-      "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-timing-functions": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
-      "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-unicode": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz",
-      "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==",
-      "dependencies": {
-        "browserslist": "^4.21.4",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
-      "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
-      "dependencies": {
-        "normalize-url": "^6.0.1",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-normalize-whitespace": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
-      "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-opacity-percentage": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz",
-      "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==",
-      "funding": [
-        {
-          "type": "kofi",
-          "url": "https://ko-fi.com/mrcgrtz"
-        },
-        {
-          "type": "liberapay",
-          "url": "https://liberapay.com/mrcgrtz"
-        }
-      ],
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      }
-    },
-    "node_modules/postcss-ordered-values": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
-      "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
-      "dependencies": {
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-overflow-shorthand": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz",
-      "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-page-break": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
-      "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
-      "peerDependencies": {
-        "postcss": "^8"
-      }
-    },
-    "node_modules/postcss-place": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz",
-      "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-preset-env": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz",
-      "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==",
-      "dependencies": {
-        "@csstools/postcss-cascade-layers": "^1.1.1",
-        "@csstools/postcss-color-function": "^1.1.1",
-        "@csstools/postcss-font-format-keywords": "^1.0.1",
-        "@csstools/postcss-hwb-function": "^1.0.2",
-        "@csstools/postcss-ic-unit": "^1.0.1",
-        "@csstools/postcss-is-pseudo-class": "^2.0.7",
-        "@csstools/postcss-nested-calc": "^1.0.0",
-        "@csstools/postcss-normalize-display-values": "^1.0.1",
-        "@csstools/postcss-oklab-function": "^1.1.1",
-        "@csstools/postcss-progressive-custom-properties": "^1.3.0",
-        "@csstools/postcss-stepped-value-functions": "^1.0.1",
-        "@csstools/postcss-text-decoration-shorthand": "^1.0.0",
-        "@csstools/postcss-trigonometric-functions": "^1.0.2",
-        "@csstools/postcss-unset-value": "^1.0.2",
-        "autoprefixer": "^10.4.13",
-        "browserslist": "^4.21.4",
-        "css-blank-pseudo": "^3.0.3",
-        "css-has-pseudo": "^3.0.4",
-        "css-prefers-color-scheme": "^6.0.3",
-        "cssdb": "^7.1.0",
-        "postcss-attribute-case-insensitive": "^5.0.2",
-        "postcss-clamp": "^4.1.0",
-        "postcss-color-functional-notation": "^4.2.4",
-        "postcss-color-hex-alpha": "^8.0.4",
-        "postcss-color-rebeccapurple": "^7.1.1",
-        "postcss-custom-media": "^8.0.2",
-        "postcss-custom-properties": "^12.1.10",
-        "postcss-custom-selectors": "^6.0.3",
-        "postcss-dir-pseudo-class": "^6.0.5",
-        "postcss-double-position-gradients": "^3.1.2",
-        "postcss-env-function": "^4.0.6",
-        "postcss-focus-visible": "^6.0.4",
-        "postcss-focus-within": "^5.0.4",
-        "postcss-font-variant": "^5.0.0",
-        "postcss-gap-properties": "^3.0.5",
-        "postcss-image-set-function": "^4.0.7",
-        "postcss-initial": "^4.0.1",
-        "postcss-lab-function": "^4.2.1",
-        "postcss-logical": "^5.0.4",
-        "postcss-media-minmax": "^5.0.0",
-        "postcss-nesting": "^10.2.0",
-        "postcss-opacity-percentage": "^1.1.2",
-        "postcss-overflow-shorthand": "^3.0.4",
-        "postcss-page-break": "^3.0.4",
-        "postcss-place": "^7.0.5",
-        "postcss-pseudo-class-any-link": "^7.1.6",
-        "postcss-replace-overflow-wrap": "^4.0.0",
-        "postcss-selector-not": "^6.0.1",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-pseudo-class-any-link": {
-      "version": "7.1.6",
-      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz",
-      "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.10"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-reduce-initial": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz",
-      "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==",
-      "dependencies": {
-        "browserslist": "^4.21.4",
-        "caniuse-api": "^3.0.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-reduce-transforms": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
-      "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-replace-overflow-wrap": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
-      "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
-      "peerDependencies": {
-        "postcss": "^8.0.3"
-      }
-    },
-    "node_modules/postcss-selector-not": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz",
-      "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.10"
-      },
-      "engines": {
-        "node": "^12 || ^14 || >=16"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/csstools"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2"
-      }
-    },
-    "node_modules/postcss-selector-parser": {
-      "version": "6.0.10",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
-      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-svgo": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
-      "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0",
-        "svgo": "^2.7.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-svgo/node_modules/commander": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-      "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/postcss-svgo/node_modules/css-tree": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-      "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-      "dependencies": {
-        "mdn-data": "2.0.14",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/postcss-svgo/node_modules/mdn-data": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-      "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-    },
-    "node_modules/postcss-svgo/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==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-svgo/node_modules/svgo": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
-      "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
-      "dependencies": {
-        "@trysound/sax": "0.2.0",
-        "commander": "^7.2.0",
-        "css-select": "^4.1.3",
-        "css-tree": "^1.1.3",
-        "csso": "^4.2.0",
-        "picocolors": "^1.0.0",
-        "stable": "^0.1.8"
-      },
-      "bin": {
-        "svgo": "bin/svgo"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/postcss-unique-selectors": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
-      "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.5"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/postcss-value-parser": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
-    },
-    "node_modules/prelude-ls": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/pretty-error": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
-      "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
-      "dependencies": {
-        "lodash": "^4.17.20",
-        "renderkid": "^3.0.0"
-      }
-    },
-    "node_modules/pretty-format": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
-      "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
-      "dependencies": {
-        "ansi-regex": "^5.0.1",
-        "ansi-styles": "^5.0.0",
-        "react-is": "^17.0.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/pretty-format/node_modules/ansi-styles": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
-      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "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=="
-    },
-    "node_modules/promise": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
-      "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
-      "dependencies": {
-        "asap": "~2.0.6"
-      }
-    },
-    "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=="
-    },
-    "node_modules/promise-polyfill": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz",
-      "integrity": "sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ=="
-    },
-    "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==",
-      "dependencies": {
-        "err-code": "^2.0.2",
-        "retry": "^0.12.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/promise-retry/node_modules/retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/prompts": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
-      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
-      "dependencies": {
-        "kleur": "^3.0.3",
-        "sisteransi": "^1.0.5"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/prop-types": {
-      "version": "15.8.1",
-      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-      "dependencies": {
-        "loose-envify": "^1.4.0",
-        "object-assign": "^4.1.1",
-        "react-is": "^16.13.1"
-      }
-    },
-    "node_modules/prop-types/node_modules/react-is": {
-      "version": "16.13.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-    },
-    "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==",
-      "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==",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/proxy-from-env": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
-      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
-    },
-    "node_modules/psl": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
-      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
-    },
-    "node_modules/punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
-      "engines": {
-        "node": ">=0.6.0",
-        "teleport": ">=0.2.0"
-      }
-    },
-    "node_modules/qs": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-      "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=="
-    },
-    "node_modules/queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/quick-lru": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
-      "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/raf": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
-      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
-      "dependencies": {
-        "performance-now": "^2.1.0"
-      }
-    },
-    "node_modules/randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "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==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/raw-body": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
-      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
-      "dependencies": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/raw-body/node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/raw-body/node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rc-highlight": {
-      "version": "2.5.6",
-      "resolved": "https://registry.npmjs.org/rc-highlight/-/rc-highlight-2.5.6.tgz",
-      "integrity": "sha512-2ZniAUY00UxiofYp3kcRuafUMDDNQ7Gcmgv24kJpjyvnsezjaLh1lvrdwPx/sktCcp+Xqj2o6SvvhNzbuhu+QQ==",
-      "peerDependencies": {
-        "react": "^17.0.0 || ^18.0.0",
-        "react-dom": "^17.0.0 || ^18.0.0"
-      }
-    },
-    "node_modules/react": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-app-polyfill": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz",
-      "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==",
-      "dependencies": {
-        "core-js": "^3.19.2",
-        "object-assign": "^4.1.1",
-        "promise": "^8.1.0",
-        "raf": "^3.4.1",
-        "regenerator-runtime": "^0.13.9",
-        "whatwg-fetch": "^3.6.2"
-      },
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/react-dev-utils": {
-      "version": "12.0.1",
-      "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
-      "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==",
-      "dependencies": {
-        "@babel/code-frame": "^7.16.0",
-        "address": "^1.1.2",
-        "browserslist": "^4.18.1",
-        "chalk": "^4.1.2",
-        "cross-spawn": "^7.0.3",
-        "detect-port-alt": "^1.1.6",
-        "escape-string-regexp": "^4.0.0",
-        "filesize": "^8.0.6",
-        "find-up": "^5.0.0",
-        "fork-ts-checker-webpack-plugin": "^6.5.0",
-        "global-modules": "^2.0.0",
-        "globby": "^11.0.4",
-        "gzip-size": "^6.0.0",
-        "immer": "^9.0.7",
-        "is-root": "^2.1.0",
-        "loader-utils": "^3.2.0",
-        "open": "^8.4.0",
-        "pkg-up": "^3.1.0",
-        "prompts": "^2.4.2",
-        "react-error-overlay": "^6.0.11",
-        "recursive-readdir": "^2.2.2",
-        "shell-quote": "^1.7.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/react-dev-utils/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==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "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/react-dev-utils/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==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/react-dev-utils/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=="
-    },
-    "node_modules/react-dev-utils/node_modules/escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/react-dev-utils/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==",
-      "engines": {
-        "node": ">= 12.13.0"
-      }
-    },
-    "node_modules/react-dev-utils/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/react-dom": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "scheduler": "^0.23.0"
-      },
-      "peerDependencies": {
-        "react": "^18.2.0"
-      }
-    },
-    "node_modules/react-error-overlay": {
-      "version": "6.0.11",
-      "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
-      "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
-    },
-    "node_modules/react-is": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
-      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
-    },
-    "node_modules/react-refresh": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
-      "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-router": {
-      "version": "6.4.3",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.3.tgz",
-      "integrity": "sha512-BT6DoGn6aV1FVP5yfODMOiieakp3z46P1Fk0RNzJMACzE7C339sFuHebfvWtnB4pzBvXXkHP2vscJzWRuUjTtA==",
-      "dependencies": {
-        "@remix-run/router": "1.0.3"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "peerDependencies": {
-        "react": ">=16.8"
-      }
-    },
-    "node_modules/react-router-dom": {
-      "version": "6.4.3",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.3.tgz",
-      "integrity": "sha512-MiaYQU8CwVCaOfJdYvt84KQNjT78VF0TJrA17SIQgNHRvLnXDJO6qsFqq8F/zzB1BWZjCFIrQpu4QxcshitziQ==",
-      "dependencies": {
-        "@remix-run/router": "1.0.3",
-        "react-router": "6.4.3"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "peerDependencies": {
-        "react": ">=16.8",
-        "react-dom": ">=16.8"
-      }
-    },
-    "node_modules/react-scripts": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
-      "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==",
-      "dependencies": {
-        "@babel/core": "^7.16.0",
-        "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
-        "@svgr/webpack": "^5.5.0",
-        "babel-jest": "^27.4.2",
-        "babel-loader": "^8.2.3",
-        "babel-plugin-named-asset-import": "^0.3.8",
-        "babel-preset-react-app": "^10.0.1",
-        "bfj": "^7.0.2",
-        "browserslist": "^4.18.1",
-        "camelcase": "^6.2.1",
-        "case-sensitive-paths-webpack-plugin": "^2.4.0",
-        "css-loader": "^6.5.1",
-        "css-minimizer-webpack-plugin": "^3.2.0",
-        "dotenv": "^10.0.0",
-        "dotenv-expand": "^5.1.0",
-        "eslint": "^8.3.0",
-        "eslint-config-react-app": "^7.0.1",
-        "eslint-webpack-plugin": "^3.1.1",
-        "file-loader": "^6.2.0",
-        "fs-extra": "^10.0.0",
-        "html-webpack-plugin": "^5.5.0",
-        "identity-obj-proxy": "^3.0.0",
-        "jest": "^27.4.3",
-        "jest-resolve": "^27.4.2",
-        "jest-watch-typeahead": "^1.0.0",
-        "mini-css-extract-plugin": "^2.4.5",
-        "postcss": "^8.4.4",
-        "postcss-flexbugs-fixes": "^5.0.2",
-        "postcss-loader": "^6.2.1",
-        "postcss-normalize": "^10.0.1",
-        "postcss-preset-env": "^7.0.1",
-        "prompts": "^2.4.2",
-        "react-app-polyfill": "^3.0.0",
-        "react-dev-utils": "^12.0.1",
-        "react-refresh": "^0.11.0",
-        "resolve": "^1.20.0",
-        "resolve-url-loader": "^4.0.0",
-        "sass-loader": "^12.3.0",
-        "semver": "^7.3.5",
-        "source-map-loader": "^3.0.0",
-        "style-loader": "^3.3.1",
-        "tailwindcss": "^3.0.2",
-        "terser-webpack-plugin": "^5.2.5",
-        "webpack": "^5.64.4",
-        "webpack-dev-server": "^4.6.0",
-        "webpack-manifest-plugin": "^4.0.2",
-        "workbox-webpack-plugin": "^6.4.1"
-      },
-      "bin": {
-        "react-scripts": "bin/react-scripts.js"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "^2.3.2"
-      },
-      "peerDependencies": {
-        "react": ">= 16",
-        "typescript": "^3.2.1 || ^4"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
-      "dependencies": {
-        "@babel/runtime": "^7.5.5",
-        "dom-helpers": "^5.0.1",
-        "loose-envify": "^1.4.0",
-        "prop-types": "^15.6.2"
-      },
-      "peerDependencies": {
-        "react": ">=16.6.0",
-        "react-dom": ">=16.6.0"
-      }
-    },
-    "node_modules/read-cache": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
-      "dependencies": {
-        "pify": "^2.3.0"
-      }
-    },
-    "node_modules/read-pkg": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
-      "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
-      "dependencies": {
-        "@types/normalize-package-data": "^2.4.0",
-        "normalize-package-data": "^2.5.0",
-        "parse-json": "^5.0.0",
-        "type-fest": "^0.6.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/read-pkg-up": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
-      "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
-      "dependencies": {
-        "find-up": "^4.1.0",
-        "read-pkg": "^5.2.0",
-        "type-fest": "^0.8.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/read-pkg-up/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==",
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/read-pkg-up/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==",
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/read-pkg-up/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==",
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/read-pkg-up/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==",
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/read-pkg-up/node_modules/type-fest": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/read-pkg/node_modules/hosted-git-info": {
-      "version": "2.8.9",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
-    },
-    "node_modules/read-pkg/node_modules/normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-      "dependencies": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      }
-    },
-    "node_modules/read-pkg/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/read-pkg/node_modules/type-fest": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
-      "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "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==",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/recursive-readdir": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
-      "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
-      "dependencies": {
-        "minimatch": "^3.0.5"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/redent": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
-      "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
-      "dependencies": {
-        "indent-string": "^4.0.0",
-        "strip-indent": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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=="
-    },
-    "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==",
-      "dependencies": {
-        "regenerate": "^1.4.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/regenerator-runtime": {
-      "version": "0.13.10",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz",
-      "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw=="
-    },
-    "node_modules/regenerator-transform": {
-      "version": "0.15.0",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
-      "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
-      "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=="
-    },
-    "node_modules/regexp.prototype.flags": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "functions-have-names": "^1.2.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/regexpp": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
-      "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/mysticatea"
-      }
-    },
-    "node_modules/regexpu-core": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
-      "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
-      "dependencies": {
-        "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.1.0",
-        "regjsgen": "^0.7.1",
-        "regjsparser": "^0.9.1",
-        "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/regjsgen": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
-      "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA=="
-    },
-    "node_modules/regjsparser": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
-      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
-      "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==",
-      "bin": {
-        "jsesc": "bin/jsesc"
-      }
-    },
-    "node_modules/relateurl": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
-      "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/renderkid": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
-      "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
-      "dependencies": {
-        "css-select": "^4.1.3",
-        "dom-converter": "^0.2.0",
-        "htmlparser2": "^6.1.0",
-        "lodash": "^4.17.21",
-        "strip-ansi": "^6.0.1"
-      }
-    },
-    "node_modules/request": {
-      "version": "2.88.2",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-      "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
-      "dependencies": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/request/node_modules/form-data": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 0.12"
-      }
-    },
-    "node_modules/request/node_modules/qs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
-      "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/request/node_modules/tough-cookie": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-      "dependencies": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/request/node_modules/uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
-      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
-      "bin": {
-        "uuid": "bin/uuid"
-      }
-    },
-    "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==",
-      "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==",
-      "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=="
-    },
-    "node_modules/resolve": {
-      "version": "1.22.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
-      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-      "dependencies": {
-        "is-core-module": "^2.9.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve-cwd": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
-      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
-      "dependencies": {
-        "resolve-from": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/resolve-url-loader": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
-      "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
-      "dependencies": {
-        "adjust-sourcemap-loader": "^4.0.0",
-        "convert-source-map": "^1.7.0",
-        "loader-utils": "^2.0.0",
-        "postcss": "^7.0.35",
-        "source-map": "0.6.1"
-      },
-      "engines": {
-        "node": ">=8.9"
-      },
-      "peerDependencies": {
-        "rework": "1.0.1",
-        "rework-visit": "1.0.0"
-      },
-      "peerDependenciesMeta": {
-        "rework": {
-          "optional": true
-        },
-        "rework-visit": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/resolve-url-loader/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
-    },
-    "node_modules/resolve-url-loader/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/resolve.exports": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
-      "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/retry": {
-      "version": "0.13.1",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
-      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
-      "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==",
-      "engines": {
-        "iojs": ">=1.0.0",
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rimraf": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "2.79.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
-      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/rollup-plugin-terser": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
-      "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
-      "dependencies": {
-        "@babel/code-frame": "^7.10.4",
-        "jest-worker": "^26.2.1",
-        "serialize-javascript": "^4.0.0",
-        "terser": "^5.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^2.0.0"
-      }
-    },
-    "node_modules/rollup-plugin-terser/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/rollup-plugin-terser/node_modules/jest-worker": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
-      "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
-      "dependencies": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      }
-    },
-    "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/rollup-plugin-terser/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/safe-regex-test": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
-      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.3",
-        "is-regex": "^1.1.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "node_modules/sanitize.css": {
-      "version": "13.0.0",
-      "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz",
-      "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA=="
-    },
-    "node_modules/sass-graph": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz",
-      "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==",
-      "dependencies": {
-        "glob": "^7.0.0",
-        "lodash": "^4.17.11",
-        "scss-tokenizer": "^0.4.3",
-        "yargs": "^17.2.1"
-      },
-      "bin": {
-        "sassgraph": "bin/sassgraph"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/sass-graph/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==",
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.1",
-        "wrap-ansi": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/sass-graph/node_modules/yargs": {
-      "version": "17.6.2",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
-      "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
-      "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/sass-graph/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==",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/sass-loader": {
-      "version": "12.6.0",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz",
-      "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==",
-      "dependencies": {
-        "klona": "^2.0.4",
-        "neo-async": "^2.6.2"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "fibers": ">= 3.1.0",
-        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0",
-        "sass": "^1.3.0",
-        "sass-embedded": "*",
-        "webpack": "^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "fibers": {
-          "optional": true
-        },
-        "node-sass": {
-          "optional": true
-        },
-        "sass": {
-          "optional": true
-        },
-        "sass-embedded": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
-    },
-    "node_modules/saxes": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
-      "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
-      "dependencies": {
-        "xmlchars": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/scheduler": {
-      "version": "0.23.0",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
-      "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      }
-    },
-    "node_modules/schema-utils": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-      "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-      "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/scss-tokenizer": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz",
-      "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==",
-      "dependencies": {
-        "js-base64": "^2.4.9",
-        "source-map": "^0.7.3"
-      }
-    },
-    "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=="
-    },
-    "node_modules/selfsigned": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz",
-      "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
-      "dependencies": {
-        "node-forge": "^1"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
-      "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==",
-      "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=="
-    },
-    "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=="
-    },
-    "node_modules/serialize-javascript": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-      "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-      "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==",
-      "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==",
-      "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==",
-      "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==",
-      "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=="
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "node_modules/serve-index/node_modules/statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
-      "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=="
-    },
-    "node_modules/setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
-    },
-    "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==",
-      "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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shell-quote": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz",
-      "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==",
-      "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==",
-      "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=="
-    },
-    "node_modules/sisteransi": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
-      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
-    },
-    "node_modules/slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">= 6.0.0",
-        "npm": ">= 3.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==",
-      "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==",
-      "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": "6.2.1",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
-      "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
-      "dependencies": {
-        "agent-base": "^6.0.2",
-        "debug": "^4.3.3",
-        "socks": "^2.6.2"
-      },
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
-    },
-    "node_modules/source-map": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-      "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-loader": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz",
-      "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==",
-      "dependencies": {
-        "abab": "^2.0.5",
-        "iconv-lite": "^0.6.3",
-        "source-map-js": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.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==",
-      "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==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
-    },
-    "node_modules/spdx-correct": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "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=="
-    },
-    "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==",
-      "dependencies": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-license-ids": {
-      "version": "3.0.12",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
-      "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA=="
-    },
-    "node_modules/spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
-      "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==",
-      "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=="
-    },
-    "node_modules/sshpk": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
-      "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
-      "dependencies": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      },
-      "bin": {
-        "sshpk-conv": "bin/sshpk-conv",
-        "sshpk-sign": "bin/sshpk-sign",
-        "sshpk-verify": "bin/sshpk-verify"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ssri": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
-      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
-      "dependencies": {
-        "minipass": "^3.1.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/stable": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-      "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility"
-    },
-    "node_modules/stack-utils": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
-      "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
-      "dependencies": {
-        "escape-string-regexp": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/stack-utils/node_modules/escape-string-regexp": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
-      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stackframe": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
-      "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
-    },
-    "node_modules/statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/stdout-stream": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
-      "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
-      "dependencies": {
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "node_modules/stdout-stream/node_modules/readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "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/stdout-stream/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=="
-    },
-    "node_modules/stdout-stream/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==",
-      "dependencies": {
-        "safe-buffer": "~5.1.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==",
-      "dependencies": {
-        "safe-buffer": "~5.2.0"
-      }
-    },
-    "node_modules/string-length": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
-      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
-      "dependencies": {
-        "char-regex": "^1.0.2",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/string-natural-compare": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz",
-      "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw=="
-    },
-    "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==",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/string-width/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
-    },
-    "node_modules/string.prototype.matchall": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
-      "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "regexp.prototype.flags": "^1.4.3",
-        "side-channel": "^1.0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/string.prototype.trimend": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
-      "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/string.prototype.trimstart": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
-      "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/stringify-object": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
-      "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
-      "dependencies": {
-        "get-own-enumerable-property-symbols": "^3.0.0",
-        "is-obj": "^1.0.1",
-        "is-regexp": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-bom": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
-      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
-      "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/strip-indent": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
-      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
-      "dependencies": {
-        "min-indent": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/style-loader": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
-      "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.0"
-      }
-    },
-    "node_modules/stylehacks": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
-      "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==",
-      "dependencies": {
-        "browserslist": "^4.21.4",
-        "postcss-selector-parser": "^6.0.4"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.15"
-      }
-    },
-    "node_modules/stylis": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
-      "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
-    },
-    "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==",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/supports-hyperlinks": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
-      "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
-      "dependencies": {
-        "has-flag": "^4.0.0",
-        "supports-color": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/supports-hyperlinks/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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/supports-hyperlinks/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==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/svg-parser": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
-      "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="
-    },
-    "node_modules/svgo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
-      "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
-      "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.",
-      "dependencies": {
-        "chalk": "^2.4.1",
-        "coa": "^2.0.2",
-        "css-select": "^2.0.0",
-        "css-select-base-adapter": "^0.1.1",
-        "css-tree": "1.0.0-alpha.37",
-        "csso": "^4.0.2",
-        "js-yaml": "^3.13.1",
-        "mkdirp": "~0.5.1",
-        "object.values": "^1.1.0",
-        "sax": "~1.2.4",
-        "stable": "^0.1.8",
-        "unquote": "~1.1.1",
-        "util.promisify": "~1.0.0"
-      },
-      "bin": {
-        "svgo": "bin/svgo"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/svgo/node_modules/css-select": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-      "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^3.2.1",
-        "domutils": "^1.7.0",
-        "nth-check": "^1.0.2"
-      }
-    },
-    "node_modules/svgo/node_modules/css-what": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
-      "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/svgo/node_modules/dom-serializer": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "entities": "^2.0.0"
-      }
-    },
-    "node_modules/svgo/node_modules/domutils": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-      "dependencies": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
-      }
-    },
-    "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
-    },
-    "node_modules/svgo/node_modules/nth-check": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
-      "dependencies": {
-        "boolbase": "~1.0.0"
-      }
-    },
-    "node_modules/sweetalert": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz",
-      "integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==",
-      "dependencies": {
-        "es6-object-assign": "^1.1.0",
-        "promise-polyfill": "^6.0.2"
-      }
-    },
-    "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=="
-    },
-    "node_modules/tailwindcss": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
-      "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
-      "dependencies": {
-        "arg": "^5.0.2",
-        "chokidar": "^3.5.3",
-        "color-name": "^1.1.4",
-        "detective": "^5.2.1",
-        "didyoumean": "^1.2.2",
-        "dlv": "^1.1.3",
-        "fast-glob": "^3.2.12",
-        "glob-parent": "^6.0.2",
-        "is-glob": "^4.0.3",
-        "lilconfig": "^2.0.6",
-        "micromatch": "^4.0.5",
-        "normalize-path": "^3.0.0",
-        "object-hash": "^3.0.0",
-        "picocolors": "^1.0.0",
-        "postcss": "^8.4.18",
-        "postcss-import": "^14.1.0",
-        "postcss-js": "^4.0.0",
-        "postcss-load-config": "^3.1.4",
-        "postcss-nested": "6.0.0",
-        "postcss-selector-parser": "^6.0.10",
-        "postcss-value-parser": "^4.2.0",
-        "quick-lru": "^5.1.1",
-        "resolve": "^1.22.1"
-      },
-      "bin": {
-        "tailwind": "lib/cli.js",
-        "tailwindcss": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=12.13.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.0.9"
-      }
-    },
-    "node_modules/tailwindcss/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=="
-    },
-    "node_modules/tapable": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/tar": {
-      "version": "6.1.12",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz",
-      "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==",
-      "dependencies": {
-        "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "minipass": "^3.0.0",
-        "minizlib": "^2.1.1",
-        "mkdirp": "^1.0.3",
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "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==",
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/temp-dir": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
-      "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/tempy": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz",
-      "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==",
-      "dependencies": {
-        "is-stream": "^2.0.0",
-        "temp-dir": "^2.0.0",
-        "type-fest": "^0.16.0",
-        "unique-string": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/tempy/node_modules/type-fest": {
-      "version": "0.16.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
-      "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/terminal-link": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
-      "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
-      "dependencies": {
-        "ansi-escapes": "^4.2.1",
-        "supports-hyperlinks": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/terser": {
-      "version": "5.15.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
-      "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
-      "dependencies": {
-        "@jridgewell/source-map": "^0.3.2",
-        "acorn": "^8.5.0",
-        "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.6",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
-      "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
-      "dependencies": {
-        "@jridgewell/trace-mapping": "^0.3.14",
-        "jest-worker": "^27.4.5",
-        "schema-utils": "^3.1.1",
-        "serialize-javascript": "^6.0.0",
-        "terser": "^5.14.1"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.1.0"
-      },
-      "peerDependenciesMeta": {
-        "@swc/core": {
-          "optional": true
-        },
-        "esbuild": {
-          "optional": true
-        },
-        "uglify-js": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/terser/node_modules/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=="
-    },
-    "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==",
-      "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=="
-    },
-    "node_modules/throat": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
-      "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w=="
-    },
-    "node_modules/thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
-    },
-    "node_modules/tmpl": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
-      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
-    },
-    "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==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/tough-cookie": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
-      "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "punycode": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/trim-newlines": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
-      "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/true-case-path": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
-      "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
-      "dependencies": {
-        "glob": "^7.1.2"
-      }
-    },
-    "node_modules/tryer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
-      "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
-    },
-    "node_modules/tsconfig-paths": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
-      "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
-      "dependencies": {
-        "@types/json5": "^0.0.29",
-        "json5": "^1.0.1",
-        "minimist": "^1.2.6",
-        "strip-bom": "^3.0.0"
-      }
-    },
-    "node_modules/tsconfig-paths/node_modules/json5": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-      "dependencies": {
-        "minimist": "^1.2.0"
-      },
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/tsconfig-paths/node_modules/strip-bom": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-      "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/tslib": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
-      "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
-    },
-    "node_modules/tsutils": {
-      "version": "3.21.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
-      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-      "dependencies": {
-        "tslib": "^1.8.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "peerDependencies": {
-        "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
-      }
-    },
-    "node_modules/tsutils/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-    },
-    "node_modules/tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-      "dependencies": {
-        "safe-buffer": "^5.0.1"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
-    },
-    "node_modules/type-check": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-      "dependencies": {
-        "prelude-ls": "^1.2.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/type-detect": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
-      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "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==",
-      "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==",
-      "dependencies": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "dependencies": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
-    "node_modules/typescript": {
-      "version": "4.9.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz",
-      "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==",
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/unbox-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/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==",
-      "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==",
-      "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==",
-      "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==",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unique-filename": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
-      "dependencies": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "node_modules/unique-slug": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
-      "dependencies": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "node_modules/unique-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
-      "dependencies": {
-        "crypto-random-string": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/universalify": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/unquote": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-      "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
-    },
-    "node_modules/upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-      "engines": {
-        "node": ">=4",
-        "yarn": "*"
-      }
-    },
-    "node_modules/update-browserslist-db": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
-      "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        }
-      ],
-      "dependencies": {
-        "escalade": "^3.1.1",
-        "picocolors": "^1.0.0"
-      },
-      "bin": {
-        "browserslist-lint": "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==",
-      "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==",
-      "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=="
-    },
-    "node_modules/util.promisify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
-      "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
-      "dependencies": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.2",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/utila": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
-      "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA=="
-    },
-    "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==",
-      "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==",
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/v8-to-istanbul": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
-      "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.1",
-        "convert-source-map": "^1.6.0",
-        "source-map": "^0.7.3"
-      },
-      "engines": {
-        "node": ">=10.12.0"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.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==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
-      "engines": [
-        "node >=0.6.0"
-      ],
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "node_modules/verror/node_modules/core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
-    },
-    "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.",
-      "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==",
-      "dependencies": {
-        "xml-name-validator": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/walker": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
-      "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
-      "dependencies": {
-        "makeerror": "1.0.12"
-      }
-    },
-    "node_modules/watchpack": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
-      "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
-      "dependencies": {
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.1.2"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/wbuf": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
-      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
-      "dependencies": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/web-vitals": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz",
-      "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg=="
-    },
-    "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==",
-      "engines": {
-        "node": ">=10.4"
-      }
-    },
-    "node_modules/webpack": {
-      "version": "5.75.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz",
-      "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==",
-      "dependencies": {
-        "@types/eslint-scope": "^3.7.3",
-        "@types/estree": "^0.0.51",
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/wasm-edit": "1.11.1",
-        "@webassemblyjs/wasm-parser": "1.11.1",
-        "acorn": "^8.7.1",
-        "acorn-import-assertions": "^1.7.6",
-        "browserslist": "^4.14.5",
-        "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^5.10.0",
-        "es-module-lexer": "^0.9.0",
-        "eslint-scope": "5.1.1",
-        "events": "^3.2.0",
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.2.9",
-        "json-parse-even-better-errors": "^2.3.1",
-        "loader-runner": "^4.2.0",
-        "mime-types": "^2.1.27",
-        "neo-async": "^2.6.2",
-        "schema-utils": "^3.1.0",
-        "tapable": "^2.1.1",
-        "terser-webpack-plugin": "^5.1.3",
-        "watchpack": "^2.4.0",
-        "webpack-sources": "^3.2.3"
-      },
-      "bin": {
-        "webpack": "bin/webpack.js"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependenciesMeta": {
-        "webpack-cli": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/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==",
-      "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-middleware/node_modules/ajv": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-      "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-      "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/webpack-dev-middleware/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==",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3"
-      },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
-      }
-    },
-    "node_modules/webpack-dev-middleware/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=="
-    },
-    "node_modules/webpack-dev-middleware/node_modules/schema-utils": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-      "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-      "dependencies": {
-        "@types/json-schema": "^7.0.9",
-        "ajv": "^8.8.0",
-        "ajv-formats": "^2.1.1",
-        "ajv-keywords": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/webpack-dev-server": {
-      "version": "4.11.1",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz",
-      "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==",
-      "dependencies": {
-        "@types/bonjour": "^3.5.9",
-        "@types/connect-history-api-fallback": "^1.3.5",
-        "@types/express": "^4.17.13",
-        "@types/serve-index": "^1.9.1",
-        "@types/serve-static": "^1.13.10",
-        "@types/sockjs": "^0.3.33",
-        "@types/ws": "^8.5.1",
-        "ansi-html-community": "^0.0.8",
-        "bonjour-service": "^1.0.11",
-        "chokidar": "^3.5.3",
-        "colorette": "^2.0.10",
-        "compression": "^1.7.4",
-        "connect-history-api-fallback": "^2.0.0",
-        "default-gateway": "^6.0.3",
-        "express": "^4.17.3",
-        "graceful-fs": "^4.2.6",
-        "html-entities": "^2.3.2",
-        "http-proxy-middleware": "^2.0.3",
-        "ipaddr.js": "^2.0.1",
-        "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.4.2"
-      },
-      "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-cli": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/ajv": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-      "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-      "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/webpack-dev-server/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==",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3"
-      },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
-      }
-    },
-    "node_modules/webpack-dev-server/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=="
-    },
-    "node_modules/webpack-dev-server/node_modules/schema-utils": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-      "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-      "dependencies": {
-        "@types/json-schema": "^7.0.9",
-        "ajv": "^8.8.0",
-        "ajv-formats": "^2.1.1",
-        "ajv-keywords": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/webpack-dev-server/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==",
-      "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-manifest-plugin": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz",
-      "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==",
-      "dependencies": {
-        "tapable": "^2.0.0",
-        "webpack-sources": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=12.22.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.44.2 || ^5.47.0"
-      }
-    },
-    "node_modules/webpack-manifest-plugin/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==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz",
-      "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==",
-      "dependencies": {
-        "source-list-map": "^2.0.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=10.13.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==",
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/webpack/node_modules/@types/estree": {
-      "version": "0.0.51",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
-      "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ=="
-    },
-    "node_modules/webpack/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==",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/webpack/node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/websocket-driver": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
-      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
-      "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==",
-      "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==",
-      "dependencies": {
-        "iconv-lite": "0.4.24"
-      }
-    },
-    "node_modules/whatwg-encoding/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==",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/whatwg-fetch": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
-      "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
-    },
-    "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=="
-    },
-    "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==",
-      "dependencies": {
-        "lodash": "^4.7.0",
-        "tr46": "^2.1.0",
-        "webidl-conversions": "^6.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/which-boxed-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dependencies": {
-        "is-bigint": "^1.0.1",
-        "is-boolean-object": "^1.1.0",
-        "is-number-object": "^1.0.4",
-        "is-string": "^1.0.5",
-        "is-symbol": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/which-collection": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
-      "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
-      "dependencies": {
-        "is-map": "^2.0.1",
-        "is-set": "^2.0.1",
-        "is-weakmap": "^2.0.1",
-        "is-weakset": "^2.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/which-typed-array": {
-      "version": "1.1.9",
-      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
-      "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
-      "dependencies": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0",
-        "is-typed-array": "^1.1.10"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "string-width": "^1.0.2 || 2 || 3 || 4"
-      }
-    },
-    "node_modules/word-wrap": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/workbox-background-sync": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz",
-      "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==",
-      "dependencies": {
-        "idb": "^7.0.1",
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-broadcast-update": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz",
-      "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==",
-      "dependencies": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-build": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz",
-      "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==",
-      "dependencies": {
-        "@apideck/better-ajv-errors": "^0.3.1",
-        "@babel/core": "^7.11.1",
-        "@babel/preset-env": "^7.11.0",
-        "@babel/runtime": "^7.11.2",
-        "@rollup/plugin-babel": "^5.2.0",
-        "@rollup/plugin-node-resolve": "^11.2.1",
-        "@rollup/plugin-replace": "^2.4.1",
-        "@surma/rollup-plugin-off-main-thread": "^2.2.3",
-        "ajv": "^8.6.0",
-        "common-tags": "^1.8.0",
-        "fast-json-stable-stringify": "^2.1.0",
-        "fs-extra": "^9.0.1",
-        "glob": "^7.1.6",
-        "lodash": "^4.17.20",
-        "pretty-bytes": "^5.3.0",
-        "rollup": "^2.43.1",
-        "rollup-plugin-terser": "^7.0.0",
-        "source-map": "^0.8.0-beta.0",
-        "stringify-object": "^3.3.0",
-        "strip-comments": "^2.0.1",
-        "tempy": "^0.6.0",
-        "upath": "^1.2.0",
-        "workbox-background-sync": "6.5.4",
-        "workbox-broadcast-update": "6.5.4",
-        "workbox-cacheable-response": "6.5.4",
-        "workbox-core": "6.5.4",
-        "workbox-expiration": "6.5.4",
-        "workbox-google-analytics": "6.5.4",
-        "workbox-navigation-preload": "6.5.4",
-        "workbox-precaching": "6.5.4",
-        "workbox-range-requests": "6.5.4",
-        "workbox-recipes": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4",
-        "workbox-streams": "6.5.4",
-        "workbox-sw": "6.5.4",
-        "workbox-window": "6.5.4"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      }
-    },
-    "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
-      "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
-      "dependencies": {
-        "json-schema": "^0.4.0",
-        "jsonpointer": "^5.0.0",
-        "leven": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "peerDependencies": {
-        "ajv": ">=8"
-      }
-    },
-    "node_modules/workbox-build/node_modules/ajv": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-      "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-      "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/workbox-build/node_modules/fs-extra": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-      "dependencies": {
-        "at-least-node": "^1.0.0",
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/workbox-build/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=="
-    },
-    "node_modules/workbox-build/node_modules/source-map": {
-      "version": "0.8.0-beta.0",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
-      "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
-      "dependencies": {
-        "whatwg-url": "^7.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/workbox-build/node_modules/tr46": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
-      "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/workbox-build/node_modules/webidl-conversions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
-      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
-    },
-    "node_modules/workbox-build/node_modules/whatwg-url": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
-      "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
-      "dependencies": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^1.0.1",
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "node_modules/workbox-cacheable-response": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz",
-      "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==",
-      "dependencies": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-core": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz",
-      "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q=="
-    },
-    "node_modules/workbox-expiration": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz",
-      "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==",
-      "dependencies": {
-        "idb": "^7.0.1",
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-google-analytics": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz",
-      "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==",
-      "dependencies": {
-        "workbox-background-sync": "6.5.4",
-        "workbox-core": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4"
-      }
-    },
-    "node_modules/workbox-navigation-preload": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz",
-      "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==",
-      "dependencies": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-precaching": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz",
-      "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==",
-      "dependencies": {
-        "workbox-core": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4"
-      }
-    },
-    "node_modules/workbox-range-requests": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz",
-      "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==",
-      "dependencies": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-recipes": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz",
-      "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==",
-      "dependencies": {
-        "workbox-cacheable-response": "6.5.4",
-        "workbox-core": "6.5.4",
-        "workbox-expiration": "6.5.4",
-        "workbox-precaching": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4"
-      }
-    },
-    "node_modules/workbox-routing": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz",
-      "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==",
-      "dependencies": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-strategies": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz",
-      "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==",
-      "dependencies": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "node_modules/workbox-streams": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz",
-      "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==",
-      "dependencies": {
-        "workbox-core": "6.5.4",
-        "workbox-routing": "6.5.4"
-      }
-    },
-    "node_modules/workbox-sw": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz",
-      "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA=="
-    },
-    "node_modules/workbox-webpack-plugin": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz",
-      "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==",
-      "dependencies": {
-        "fast-json-stable-stringify": "^2.1.0",
-        "pretty-bytes": "^5.4.1",
-        "upath": "^1.2.0",
-        "webpack-sources": "^1.4.3",
-        "workbox-build": "6.5.4"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.4.0 || ^5.9.0"
-      }
-    },
-    "node_modules/workbox-webpack-plugin/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==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-      "dependencies": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
-      }
-    },
-    "node_modules/workbox-window": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz",
-      "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==",
-      "dependencies": {
-        "@types/trusted-types": "^2.0.2",
-        "workbox-core": "6.5.4"
-      }
-    },
-    "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==",
-      "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/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==",
-      "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==",
-      "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=="
-    },
-    "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=="
-    },
-    "node_modules/write-file-atomic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
-      "dependencies": {
-        "imurmurhash": "^0.1.4",
-        "is-typedarray": "^1.0.0",
-        "signal-exit": "^3.0.2",
-        "typedarray-to-buffer": "^3.1.5"
-      }
-    },
-    "node_modules/ws": {
-      "version": "7.5.9",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
-      "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
-      "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=="
-    },
-    "node_modules/xmlchars": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
-      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
-    },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "engines": {
-        "node": ">=0.4"
-      }
-    },
-    "node_modules/y18n": {
-      "version": "5.0.8",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
-      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-    },
-    "node_modules/yaml": {
-      "version": "1.10.2",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
-      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/yargs": {
-      "version": "16.2.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
-      "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/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==",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    }
-  },
-  "dependencies": {
-    "@adobe/css-tools": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz",
-      "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g=="
-    },
-    "@ampproject/remapping": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
-      "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
-      "requires": {
-        "@jridgewell/gen-mapping": "^0.1.0",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      }
-    },
-    "@babel/code-frame": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-      "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-      "requires": {
-        "@babel/highlight": "^7.18.6"
-      }
-    },
-    "@babel/compat-data": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz",
-      "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ=="
-    },
-    "@babel/core": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz",
-      "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==",
-      "requires": {
-        "@ampproject/remapping": "^2.1.0",
-        "@babel/code-frame": "^7.18.6",
-        "@babel/generator": "^7.20.2",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-module-transforms": "^7.20.2",
-        "@babel/helpers": "^7.20.1",
-        "@babel/parser": "^7.20.2",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.1",
-        "@babel/types": "^7.20.2",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.1",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "@babel/eslint-parser": {
-      "version": "7.19.1",
-      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz",
-      "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==",
-      "requires": {
-        "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
-        "eslint-visitor-keys": "^2.1.0",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "eslint-visitor-keys": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-          "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "@babel/generator": {
-      "version": "7.20.4",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz",
-      "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==",
-      "requires": {
-        "@babel/types": "^7.20.2",
-        "@jridgewell/gen-mapping": "^0.3.2",
-        "jsesc": "^2.5.1"
-      },
-      "dependencies": {
-        "@jridgewell/gen-mapping": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-          "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
-          "requires": {
-            "@jridgewell/set-array": "^1.0.1",
-            "@jridgewell/sourcemap-codec": "^1.4.10",
-            "@jridgewell/trace-mapping": "^0.3.9"
-          }
-        }
-      }
-    },
-    "@babel/helper-annotate-as-pure": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
-      "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
-      "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
-      "requires": {
-        "@babel/helper-explode-assignable-expression": "^7.18.6",
-        "@babel/types": "^7.18.9"
-      }
-    },
-    "@babel/helper-compilation-targets": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
-      "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
-      "requires": {
-        "@babel/compat-data": "^7.20.0",
-        "@babel/helper-validator-option": "^7.18.6",
-        "browserslist": "^4.21.3",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "@babel/helper-create-class-features-plugin": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz",
-      "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-member-expression-to-functions": "^7.18.9",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.19.1",
-        "@babel/helper-split-export-declaration": "^7.18.6"
-      }
-    },
-    "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz",
-      "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "regexpu-core": "^5.1.0"
-      }
-    },
-    "@babel/helper-define-polyfill-provider": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
-      "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
-      "requires": {
-        "@babel/helper-compilation-targets": "^7.17.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "debug": "^4.1.1",
-        "lodash.debounce": "^4.0.8",
-        "resolve": "^1.14.2",
-        "semver": "^6.1.2"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "@babel/helper-environment-visitor": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
-      "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
-    },
-    "@babel/helper-explode-assignable-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
-      "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-function-name": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
-      "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
-      "requires": {
-        "@babel/template": "^7.18.10",
-        "@babel/types": "^7.19.0"
-      }
-    },
-    "@babel/helper-hoist-variables": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
-      "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-member-expression-to-functions": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
-      "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
-      "requires": {
-        "@babel/types": "^7.18.9"
-      }
-    },
-    "@babel/helper-module-imports": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
-      "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-module-transforms": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
-      "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-simple-access": "^7.20.2",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/helper-validator-identifier": "^7.19.1",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.1",
-        "@babel/types": "^7.20.2"
-      }
-    },
-    "@babel/helper-optimise-call-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
-      "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-plugin-utils": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
-      "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ=="
-    },
-    "@babel/helper-remap-async-to-generator": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
-      "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-wrap-function": "^7.18.9",
-        "@babel/types": "^7.18.9"
-      }
-    },
-    "@babel/helper-replace-supers": {
-      "version": "7.19.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz",
-      "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==",
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-member-expression-to-functions": "^7.18.9",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/traverse": "^7.19.1",
-        "@babel/types": "^7.19.0"
-      }
-    },
-    "@babel/helper-simple-access": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
-      "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
-      "requires": {
-        "@babel/types": "^7.20.2"
-      }
-    },
-    "@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
-      "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
-      "requires": {
-        "@babel/types": "^7.20.0"
-      }
-    },
-    "@babel/helper-split-export-declaration": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
-      "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-string-parser": {
-      "version": "7.19.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
-      "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
-    },
-    "@babel/helper-validator-identifier": {
-      "version": "7.19.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
-      "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
-    },
-    "@babel/helper-validator-option": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
-      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
-    },
-    "@babel/helper-wrap-function": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz",
-      "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==",
-      "requires": {
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.19.0",
-        "@babel/types": "^7.19.0"
-      }
-    },
-    "@babel/helpers": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz",
-      "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==",
-      "requires": {
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.1",
-        "@babel/types": "^7.20.0"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-      "requires": {
-        "@babel/helper-validator-identifier": "^7.18.6",
-        "chalk": "^2.0.0",
-        "js-tokens": "^4.0.0"
-      }
-    },
-    "@babel/parser": {
-      "version": "7.20.3",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz",
-      "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg=="
-    },
-    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.18.6",
-      "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.18.6.tgz",
-      "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz",
-      "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9",
-        "@babel/plugin-proposal-optional-chaining": "^7.18.9"
-      }
-    },
-    "@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz",
-      "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==",
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-remap-async-to-generator": "^7.18.9",
-        "@babel/plugin-syntax-async-generators": "^7.8.4"
-      }
-    },
-    "@babel/plugin-proposal-class-properties": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
-      "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-proposal-class-static-block": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz",
-      "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-class-static-block": "^7.14.5"
-      }
-    },
-    "@babel/plugin-proposal-decorators": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz",
-      "integrity": "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.20.2",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.19.1",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/plugin-syntax-decorators": "^7.19.0"
-      }
-    },
-    "@babel/plugin-proposal-dynamic-import": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
-      "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-export-namespace-from": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
-      "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-json-strings": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
-      "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-json-strings": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-logical-assignment-operators": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz",
-      "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
-      }
-    },
-    "@babel/plugin-proposal-nullish-coalescing-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
-      "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-numeric-separator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
-      "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
-      }
-    },
-    "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz",
-      "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==",
-      "requires": {
-        "@babel/compat-data": "^7.20.1",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.20.1"
-      }
-    },
-    "@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
-      "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-optional-chaining": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz",
-      "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-private-methods": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
-      "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-proposal-private-property-in-object": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz",
-      "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-bigint": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
-      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-decorators": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz",
-      "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
-      }
-    },
-    "@babel/plugin-syntax-flow": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz",
-      "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-syntax-import-assertions": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
-      "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-jsx": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
-      "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-typescript": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
-      "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      }
-    },
-    "@babel/plugin-transform-arrow-functions": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz",
-      "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-async-to-generator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz",
-      "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==",
-      "requires": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-remap-async-to-generator": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
-      "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-block-scoping": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz",
-      "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-classes": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz",
-      "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.19.1",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/plugin-transform-computed-properties": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz",
-      "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-destructuring": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz",
-      "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-dotall-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
-      "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-duplicate-keys": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
-      "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
-      "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
-      "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-flow-strip-types": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz",
-      "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/plugin-syntax-flow": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-for-of": {
-      "version": "7.18.8",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
-      "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-function-name": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
-      "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
-      "requires": {
-        "@babel/helper-compilation-targets": "^7.18.9",
-        "@babel/helper-function-name": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
-      "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
-      "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-modules-amd": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz",
-      "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==",
-      "requires": {
-        "@babel/helper-module-transforms": "^7.19.6",
-        "@babel/helper-plugin-utils": "^7.19.0"
-      }
-    },
-    "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz",
-      "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==",
-      "requires": {
-        "@babel/helper-module-transforms": "^7.19.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-simple-access": "^7.19.4"
-      }
-    },
-    "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz",
-      "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==",
-      "requires": {
-        "@babel/helper-hoist-variables": "^7.18.6",
-        "@babel/helper-module-transforms": "^7.19.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-validator-identifier": "^7.19.1"
-      }
-    },
-    "@babel/plugin-transform-modules-umd": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
-      "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
-      "requires": {
-        "@babel/helper-module-transforms": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.19.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz",
-      "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.19.0",
-        "@babel/helper-plugin-utils": "^7.19.0"
-      }
-    },
-    "@babel/plugin-transform-new-target": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
-      "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-object-super": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
-      "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-parameters": {
-      "version": "7.20.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz",
-      "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-property-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
-      "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-react-constant-elements": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz",
-      "integrity": "sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-react-display-name": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz",
-      "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-react-jsx": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz",
-      "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/plugin-syntax-jsx": "^7.18.6",
-        "@babel/types": "^7.19.0"
-      }
-    },
-    "@babel/plugin-transform-react-jsx-development": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
-      "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
-      "requires": {
-        "@babel/plugin-transform-react-jsx": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-react-pure-annotations": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz",
-      "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-regenerator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz",
-      "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "regenerator-transform": "^0.15.0"
-      }
-    },
-    "@babel/plugin-transform-reserved-words": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
-      "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-runtime": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz",
-      "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==",
-      "requires": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
-      "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-spread": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz",
-      "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-sticky-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
-      "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-template-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
-      "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-typeof-symbol": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
-      "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-typescript": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz",
-      "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.20.2",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-typescript": "^7.20.0"
-      }
-    },
-    "@babel/plugin-transform-unicode-escapes": {
-      "version": "7.18.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
-      "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-unicode-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
-      "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/preset-env": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz",
-      "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==",
-      "requires": {
-        "@babel/compat-data": "^7.20.1",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-async-generator-functions": "^7.20.1",
-        "@babel/plugin-proposal-class-properties": "^7.18.6",
-        "@babel/plugin-proposal-class-static-block": "^7.18.6",
-        "@babel/plugin-proposal-dynamic-import": "^7.18.6",
-        "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
-        "@babel/plugin-proposal-json-strings": "^7.18.6",
-        "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
-        "@babel/plugin-proposal-numeric-separator": "^7.18.6",
-        "@babel/plugin-proposal-object-rest-spread": "^7.20.2",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
-        "@babel/plugin-proposal-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-private-methods": "^7.18.6",
-        "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
-        "@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.20.0",
-        "@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-transform-arrow-functions": "^7.18.6",
-        "@babel/plugin-transform-async-to-generator": "^7.18.6",
-        "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
-        "@babel/plugin-transform-block-scoping": "^7.20.2",
-        "@babel/plugin-transform-classes": "^7.20.2",
-        "@babel/plugin-transform-computed-properties": "^7.18.9",
-        "@babel/plugin-transform-destructuring": "^7.20.2",
-        "@babel/plugin-transform-dotall-regex": "^7.18.6",
-        "@babel/plugin-transform-duplicate-keys": "^7.18.9",
-        "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
-        "@babel/plugin-transform-for-of": "^7.18.8",
-        "@babel/plugin-transform-function-name": "^7.18.9",
-        "@babel/plugin-transform-literals": "^7.18.9",
-        "@babel/plugin-transform-member-expression-literals": "^7.18.6",
-        "@babel/plugin-transform-modules-amd": "^7.19.6",
-        "@babel/plugin-transform-modules-commonjs": "^7.19.6",
-        "@babel/plugin-transform-modules-systemjs": "^7.19.6",
-        "@babel/plugin-transform-modules-umd": "^7.18.6",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
-        "@babel/plugin-transform-new-target": "^7.18.6",
-        "@babel/plugin-transform-object-super": "^7.18.6",
-        "@babel/plugin-transform-parameters": "^7.20.1",
-        "@babel/plugin-transform-property-literals": "^7.18.6",
-        "@babel/plugin-transform-regenerator": "^7.18.6",
-        "@babel/plugin-transform-reserved-words": "^7.18.6",
-        "@babel/plugin-transform-shorthand-properties": "^7.18.6",
-        "@babel/plugin-transform-spread": "^7.19.0",
-        "@babel/plugin-transform-sticky-regex": "^7.18.6",
-        "@babel/plugin-transform-template-literals": "^7.18.9",
-        "@babel/plugin-transform-typeof-symbol": "^7.18.9",
-        "@babel/plugin-transform-unicode-escapes": "^7.18.10",
-        "@babel/plugin-transform-unicode-regex": "^7.18.6",
-        "@babel/preset-modules": "^0.1.5",
-        "@babel/types": "^7.20.2",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "core-js-compat": "^3.25.1",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "@babel/preset-modules": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
-      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
-      "requires": {
-        "@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"
-      }
-    },
-    "@babel/preset-react": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz",
-      "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-transform-react-display-name": "^7.18.6",
-        "@babel/plugin-transform-react-jsx": "^7.18.6",
-        "@babel/plugin-transform-react-jsx-development": "^7.18.6",
-        "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
-      }
-    },
-    "@babel/preset-typescript": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz",
-      "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-transform-typescript": "^7.18.6"
-      }
-    },
-    "@babel/runtime": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz",
-      "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==",
-      "requires": {
-        "regenerator-runtime": "^0.13.10"
-      }
-    },
-    "@babel/runtime-corejs3": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz",
-      "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==",
-      "requires": {
-        "core-js-pure": "^3.25.1",
-        "regenerator-runtime": "^0.13.10"
-      }
-    },
-    "@babel/template": {
-      "version": "7.18.10",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
-      "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
-      "requires": {
-        "@babel/code-frame": "^7.18.6",
-        "@babel/parser": "^7.18.10",
-        "@babel/types": "^7.18.10"
-      }
-    },
-    "@babel/traverse": {
-      "version": "7.20.1",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz",
-      "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==",
-      "requires": {
-        "@babel/code-frame": "^7.18.6",
-        "@babel/generator": "^7.20.1",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-hoist-variables": "^7.18.6",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/parser": "^7.20.1",
-        "@babel/types": "^7.20.0",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/types": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz",
-      "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==",
-      "requires": {
-        "@babel/helper-string-parser": "^7.19.4",
-        "@babel/helper-validator-identifier": "^7.19.1",
-        "to-fast-properties": "^2.0.0"
-      }
-    },
-    "@bcoe/v8-coverage": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
-      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
-    },
-    "@csstools/normalize.css": {
-      "version": "12.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz",
-      "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg=="
-    },
-    "@csstools/postcss-cascade-layers": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz",
-      "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==",
-      "requires": {
-        "@csstools/selector-specificity": "^2.0.2",
-        "postcss-selector-parser": "^6.0.10"
-      }
-    },
-    "@csstools/postcss-color-function": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz",
-      "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==",
-      "requires": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-font-format-keywords": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz",
-      "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-hwb-function": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz",
-      "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-ic-unit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz",
-      "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==",
-      "requires": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-is-pseudo-class": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz",
-      "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==",
-      "requires": {
-        "@csstools/selector-specificity": "^2.0.0",
-        "postcss-selector-parser": "^6.0.10"
-      }
-    },
-    "@csstools/postcss-nested-calc": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz",
-      "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-normalize-display-values": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz",
-      "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-oklab-function": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz",
-      "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==",
-      "requires": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-progressive-custom-properties": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz",
-      "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-stepped-value-functions": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz",
-      "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-text-decoration-shorthand": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz",
-      "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-trigonometric-functions": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz",
-      "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "@csstools/postcss-unset-value": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz",
-      "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==",
-      "requires": {}
-    },
-    "@csstools/selector-specificity": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
-      "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
-      "requires": {}
-    },
-    "@dynamicss/dynamicss": {
-      "version": "2.2.8",
-      "resolved": "https://registry.npmjs.org/@dynamicss/dynamicss/-/dynamicss-2.2.8.tgz",
-      "integrity": "sha512-e6hrGUydr8f+c9E/9fHFSG5LoSLdq/MdZXXfbzEDWIVuzKF2hcdxZE7nHNqUNF2htw1mZ17Pyoshu3A6kFEeFA=="
-    },
-    "@emotion/babel-plugin": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz",
-      "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==",
-      "requires": {
-        "@babel/helper-module-imports": "^7.16.7",
-        "@babel/plugin-syntax-jsx": "^7.17.12",
-        "@babel/runtime": "^7.18.3",
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/serialize": "^1.1.1",
-        "babel-plugin-macros": "^3.1.0",
-        "convert-source-map": "^1.5.0",
-        "escape-string-regexp": "^4.0.0",
-        "find-root": "^1.1.0",
-        "source-map": "^0.5.7",
-        "stylis": "4.1.3"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
-        }
-      }
-    },
-    "@emotion/cache": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz",
-      "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==",
-      "requires": {
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/sheet": "^1.2.1",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "stylis": "4.1.3"
-      }
-    },
-    "@emotion/hash": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
-      "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
-    },
-    "@emotion/is-prop-valid": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
-      "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
-      "requires": {
-        "@emotion/memoize": "^0.8.0"
-      }
-    },
-    "@emotion/memoize": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
-      "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
-    },
-    "@emotion/react": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz",
-      "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==",
-      "requires": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.5",
-        "@emotion/cache": "^11.10.5",
-        "@emotion/serialize": "^1.1.1",
-        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "hoist-non-react-statics": "^3.3.1"
-      }
-    },
-    "@emotion/serialize": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz",
-      "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==",
-      "requires": {
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/unitless": "^0.8.0",
-        "@emotion/utils": "^1.2.0",
-        "csstype": "^3.0.2"
-      }
-    },
-    "@emotion/sheet": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz",
-      "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA=="
-    },
-    "@emotion/styled": {
-      "version": "11.10.5",
-      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz",
-      "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==",
-      "requires": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.5",
-        "@emotion/is-prop-valid": "^1.2.0",
-        "@emotion/serialize": "^1.1.1",
-        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
-        "@emotion/utils": "^1.2.0"
-      }
-    },
-    "@emotion/unitless": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
-      "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
-    },
-    "@emotion/use-insertion-effect-with-fallbacks": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
-      "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
-      "requires": {}
-    },
-    "@emotion/utils": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
-      "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
-    },
-    "@emotion/weak-memoize": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
-      "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
-    },
-    "@eslint/eslintrc": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
-      "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
-      "requires": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.4.0",
-        "globals": "^13.15.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
-      },
-      "dependencies": {
-        "argparse": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
-        },
-        "globals": {
-          "version": "13.17.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
-          "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
-          "requires": {
-            "type-fest": "^0.20.2"
-          }
-        },
-        "js-yaml": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-          "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-          "requires": {
-            "argparse": "^2.0.1"
-          }
-        },
-        "type-fest": {
-          "version": "0.20.2",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
-        }
-      }
-    },
-    "@gar/promisify": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
-      "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
-    },
-    "@humanwhocodes/config-array": {
-      "version": "0.11.7",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
-      "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
-      "requires": {
-        "@humanwhocodes/object-schema": "^1.2.1",
-        "debug": "^4.1.1",
-        "minimatch": "^3.0.5"
-      }
-    },
-    "@humanwhocodes/module-importer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
-    },
-    "@humanwhocodes/object-schema": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
-      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
-    },
-    "@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==",
-      "requires": {
-        "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"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-        },
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
-        "p-limit": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        }
-      }
-    },
-    "@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=="
-    },
-    "@jest/console": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
-      "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "jest-message-util": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "slash": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@jest/core": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
-      "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
-      "requires": {
-        "@jest/console": "^27.5.1",
-        "@jest/reporters": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.0.0",
-        "emittery": "^0.8.1",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.2.9",
-        "jest-changed-files": "^27.5.1",
-        "jest-config": "^27.5.1",
-        "jest-haste-map": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-resolve-dependencies": "^27.5.1",
-        "jest-runner": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "jest-watcher": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "rimraf": "^3.0.0",
-        "slash": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@jest/environment": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
-      "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
-      "requires": {
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "jest-mock": "^27.5.1"
-      }
-    },
-    "@jest/expect-utils": {
-      "version": "29.3.1",
-      "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz",
-      "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==",
-      "requires": {
-        "jest-get-type": "^29.2.0"
-      },
-      "dependencies": {
-        "jest-get-type": {
-          "version": "29.2.0",
-          "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz",
-          "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA=="
-        }
-      }
-    },
-    "@jest/fake-timers": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
-      "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "@sinonjs/fake-timers": "^8.0.1",
-        "@types/node": "*",
-        "jest-message-util": "^27.5.1",
-        "jest-mock": "^27.5.1",
-        "jest-util": "^27.5.1"
-      }
-    },
-    "@jest/globals": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
-      "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
-      "requires": {
-        "@jest/environment": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "expect": "^27.5.1"
-      }
-    },
-    "@jest/reporters": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
-      "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
-      "requires": {
-        "@bcoe/v8-coverage": "^0.2.3",
-        "@jest/console": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "collect-v8-coverage": "^1.0.0",
-        "exit": "^0.1.2",
-        "glob": "^7.1.2",
-        "graceful-fs": "^4.2.9",
-        "istanbul-lib-coverage": "^3.0.0",
-        "istanbul-lib-instrument": "^5.1.0",
-        "istanbul-lib-report": "^3.0.0",
-        "istanbul-lib-source-maps": "^4.0.0",
-        "istanbul-reports": "^3.1.3",
-        "jest-haste-map": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-worker": "^27.5.1",
-        "slash": "^3.0.0",
-        "source-map": "^0.6.0",
-        "string-length": "^4.0.1",
-        "terminal-link": "^2.0.0",
-        "v8-to-istanbul": "^8.1.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@jest/schemas": {
-      "version": "28.1.3",
-      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz",
-      "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==",
-      "requires": {
-        "@sinclair/typebox": "^0.24.1"
-      }
-    },
-    "@jest/source-map": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
-      "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
-      "requires": {
-        "callsites": "^3.0.0",
-        "graceful-fs": "^4.2.9",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "@jest/test-result": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
-      "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
-      "requires": {
-        "@jest/console": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "collect-v8-coverage": "^1.0.0"
-      }
-    },
-    "@jest/test-sequencer": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
-      "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
-      "requires": {
-        "@jest/test-result": "^27.5.1",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-runtime": "^27.5.1"
-      }
-    },
-    "@jest/transform": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
-      "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
-      "requires": {
-        "@babel/core": "^7.1.0",
-        "@jest/types": "^27.5.1",
-        "babel-plugin-istanbul": "^6.1.1",
-        "chalk": "^4.0.0",
-        "convert-source-map": "^1.4.0",
-        "fast-json-stable-stringify": "^2.0.0",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "pirates": "^4.0.4",
-        "slash": "^3.0.0",
-        "source-map": "^0.6.1",
-        "write-file-atomic": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@jest/types": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
-      "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
-      "requires": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^16.0.0",
-        "chalk": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@jridgewell/gen-mapping": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
-      "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
-      "requires": {
-        "@jridgewell/set-array": "^1.0.0",
-        "@jridgewell/sourcemap-codec": "^1.4.10"
-      }
-    },
-    "@jridgewell/resolve-uri": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
-    },
-    "@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=="
-    },
-    "@jridgewell/source-map": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
-      "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
-      "requires": {
-        "@jridgewell/gen-mapping": "^0.3.0",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      },
-      "dependencies": {
-        "@jridgewell/gen-mapping": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-          "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
-          "requires": {
-            "@jridgewell/set-array": "^1.0.1",
-            "@jridgewell/sourcemap-codec": "^1.4.10",
-            "@jridgewell/trace-mapping": "^0.3.9"
-          }
-        }
-      }
-    },
-    "@jridgewell/sourcemap-codec": {
-      "version": "1.4.14",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
-    },
-    "@jridgewell/trace-mapping": {
-      "version": "0.3.17",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
-      "requires": {
-        "@jridgewell/resolve-uri": "3.1.0",
-        "@jridgewell/sourcemap-codec": "1.4.14"
-      }
-    },
-    "@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=="
-    },
-    "@mui/base": {
-      "version": "5.0.0-alpha.106",
-      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.106.tgz",
-      "integrity": "sha512-xJQQtwPCPwr6hGWTBdvDwHYwExn3Bw7nPQkN8Fuz8kHpZqoMVWQvvaFS557AIkkI2AFLV3DxVIMjbCvrIntBWg==",
-      "requires": {
-        "@babel/runtime": "^7.20.1",
-        "@emotion/is-prop-valid": "^1.2.0",
-        "@mui/types": "^7.2.1",
-        "@mui/utils": "^5.10.14",
-        "@popperjs/core": "^2.11.6",
-        "clsx": "^1.2.1",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        }
-      }
-    },
-    "@mui/core-downloads-tracker": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.14.tgz",
-      "integrity": "sha512-qLgIJNOR9Dre8JiZ/neVzOf4jf88J6YtOkQqugtMrleLjbfRVUSS4LWl9CSOjNq76quYdmYWnSDgfQqOooT2cQ=="
-    },
-    "@mui/icons-material": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.14.tgz",
-      "integrity": "sha512-qtH60slQa+7MZRn6kyui8rKuoGDglPqaHX+pzBKNvd8JCOlrnfY5DmGGDdToTXyXl8xJ8nhANZbrbpg7UVKq/Q==",
-      "requires": {
-        "@babel/runtime": "^7.20.1"
-      }
-    },
-    "@mui/material": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.14.tgz",
-      "integrity": "sha512-HWzKVAykePMx54WtxVwZyL1W4k3xlHYIqwMw0CaXAvgB3UE9yjABZuuGr8vG5Z6CSNWamzd+s1x8u7pQPFl9og==",
-      "requires": {
-        "@babel/runtime": "^7.20.1",
-        "@mui/base": "5.0.0-alpha.106",
-        "@mui/core-downloads-tracker": "^5.10.14",
-        "@mui/system": "^5.10.14",
-        "@mui/types": "^7.2.1",
-        "@mui/utils": "^5.10.14",
-        "@types/react-transition-group": "^4.4.5",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.1",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0",
-        "react-transition-group": "^4.4.5"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        }
-      }
-    },
-    "@mui/private-theming": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.14.tgz",
-      "integrity": "sha512-3aIBe8WK65CwAPDY8nB11hYnzE1CZMymi76UnaFrA/DdGDwl5Y8F6uB+StKrkVmsqF1po7Mp2odqVkHj320gXw==",
-      "requires": {
-        "@babel/runtime": "^7.20.1",
-        "@mui/utils": "^5.10.14",
-        "prop-types": "^15.8.1"
-      }
-    },
-    "@mui/styled-engine": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.14.tgz",
-      "integrity": "sha512-bgKdM57ExogWpIfhL/ngSlzF4FhbH00vYF+Y5VALTob4uslFqje0xzoWmbfcCn4cZt2NXxZJIwhsq4vzo5itlw==",
-      "requires": {
-        "@babel/runtime": "^7.20.1",
-        "@emotion/cache": "^11.10.5",
-        "csstype": "^3.1.1",
-        "prop-types": "^15.8.1"
-      }
-    },
-    "@mui/system": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.14.tgz",
-      "integrity": "sha512-2de7XCjRb1j8Od0Stmo0LwFMLpOMNT4wzfINuExXI1TVSuyxXIXUxiC5FEgJW3GMvf/a7SUR8VOiMoKlKWzukw==",
-      "requires": {
-        "@babel/runtime": "^7.20.1",
-        "@mui/private-theming": "^5.10.14",
-        "@mui/styled-engine": "^5.10.14",
-        "@mui/types": "^7.2.1",
-        "@mui/utils": "^5.10.14",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.1",
-        "prop-types": "^15.8.1"
-      }
-    },
-    "@mui/types": {
-      "version": "7.2.1",
-      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.1.tgz",
-      "integrity": "sha512-c5mSM7ivD8EsqK6HUi9hQPr5V7TJ/IRThUQ9nWNYPdhCGriTSQV4vL6DflT99LkM+wLiIS1rVjphpEWxERep7A==",
-      "requires": {}
-    },
-    "@mui/utils": {
-      "version": "5.10.14",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.14.tgz",
-      "integrity": "sha512-12p59+wDZpA++XVJmKwqsZmrA1nmUQ5d0a1yQWtcDjxNyER1EDzozYN/db+FY2i5ceQh2TynPTEwGms2mXDwFg==",
-      "requires": {
-        "@babel/runtime": "^7.20.1",
-        "@types/prop-types": "^15.7.5",
-        "@types/react-is": "^16.7.1 || ^17.0.0",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        }
-      }
-    },
-    "@nicolo-ribaudo/eslint-scope-5-internals": {
-      "version": "5.1.1-v1",
-      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
-      "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
-      "requires": {
-        "eslint-scope": "5.1.1"
-      },
-      "dependencies": {
-        "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==",
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^4.1.1"
-          }
-        },
-        "estraverse": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-          "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
-        }
-      }
-    },
-    "@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==",
-      "requires": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      }
-    },
-    "@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=="
-    },
-    "@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==",
-      "requires": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      }
-    },
-    "@npmcli/fs": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
-      "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
-      "requires": {
-        "@gar/promisify": "^1.0.1",
-        "semver": "^7.3.5"
-      }
-    },
-    "@npmcli/move-file": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
-      "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
-      "requires": {
-        "mkdirp": "^1.0.4",
-        "rimraf": "^3.0.2"
-      },
-      "dependencies": {
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
-        }
-      }
-    },
-    "@pmmmwh/react-refresh-webpack-plugin": {
-      "version": "0.5.9",
-      "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.9.tgz",
-      "integrity": "sha512-7QV4cqUwhkDIHpMAZ9mestSJ2DMIotVTbOUwbiudhjCRTAWWKIaBecELiEM2LT3AHFeOAaHIcFu4dbXjX+9GBA==",
-      "requires": {
-        "ansi-html-community": "^0.0.8",
-        "common-path-prefix": "^3.0.0",
-        "core-js-pure": "^3.23.3",
-        "error-stack-parser": "^2.0.6",
-        "find-up": "^5.0.0",
-        "html-entities": "^2.1.0",
-        "loader-utils": "^2.0.3",
-        "schema-utils": "^3.0.0",
-        "source-map": "^0.7.3"
-      }
-    },
-    "@popperjs/core": {
-      "version": "2.11.6",
-      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
-      "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
-    },
-    "@remix-run/router": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.3.tgz",
-      "integrity": "sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q=="
-    },
-    "@rollup/plugin-babel": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
-      "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
-      "requires": {
-        "@babel/helper-module-imports": "^7.10.4",
-        "@rollup/pluginutils": "^3.1.0"
-      }
-    },
-    "@rollup/plugin-node-resolve": {
-      "version": "11.2.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
-      "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
-      "requires": {
-        "@rollup/pluginutils": "^3.1.0",
-        "@types/resolve": "1.17.1",
-        "builtin-modules": "^3.1.0",
-        "deepmerge": "^4.2.2",
-        "is-module": "^1.0.0",
-        "resolve": "^1.19.0"
-      }
-    },
-    "@rollup/plugin-replace": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
-      "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
-      "requires": {
-        "@rollup/pluginutils": "^3.1.0",
-        "magic-string": "^0.25.7"
-      }
-    },
-    "@rollup/pluginutils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
-      "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
-      "requires": {
-        "@types/estree": "0.0.39",
-        "estree-walker": "^1.0.1",
-        "picomatch": "^2.2.2"
-      },
-      "dependencies": {
-        "@types/estree": {
-          "version": "0.0.39",
-          "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-          "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
-        }
-      }
-    },
-    "@rushstack/eslint-patch": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz",
-      "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg=="
-    },
-    "@sinclair/typebox": {
-      "version": "0.24.51",
-      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
-      "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA=="
-    },
-    "@sinonjs/commons": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz",
-      "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==",
-      "requires": {
-        "type-detect": "4.0.8"
-      }
-    },
-    "@sinonjs/fake-timers": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
-      "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
-      "requires": {
-        "@sinonjs/commons": "^1.7.0"
-      }
-    },
-    "@surma/rollup-plugin-off-main-thread": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
-      "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==",
-      "requires": {
-        "ejs": "^3.1.6",
-        "json5": "^2.2.0",
-        "magic-string": "^0.25.0",
-        "string.prototype.matchall": "^4.0.6"
-      }
-    },
-    "@svgr/babel-plugin-add-jsx-attribute": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz",
-      "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg=="
-    },
-    "@svgr/babel-plugin-remove-jsx-attribute": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz",
-      "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg=="
-    },
-    "@svgr/babel-plugin-remove-jsx-empty-expression": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz",
-      "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA=="
-    },
-    "@svgr/babel-plugin-replace-jsx-attribute-value": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz",
-      "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ=="
-    },
-    "@svgr/babel-plugin-svg-dynamic-title": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz",
-      "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg=="
-    },
-    "@svgr/babel-plugin-svg-em-dimensions": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz",
-      "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw=="
-    },
-    "@svgr/babel-plugin-transform-react-native-svg": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz",
-      "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q=="
-    },
-    "@svgr/babel-plugin-transform-svg-component": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz",
-      "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ=="
-    },
-    "@svgr/babel-preset": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz",
-      "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==",
-      "requires": {
-        "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0",
-        "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0",
-        "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1",
-        "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1",
-        "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0",
-        "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0",
-        "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0",
-        "@svgr/babel-plugin-transform-svg-component": "^5.5.0"
-      }
-    },
-    "@svgr/core": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz",
-      "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==",
-      "requires": {
-        "@svgr/plugin-jsx": "^5.5.0",
-        "camelcase": "^6.2.0",
-        "cosmiconfig": "^7.0.0"
-      }
-    },
-    "@svgr/hast-util-to-babel-ast": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz",
-      "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==",
-      "requires": {
-        "@babel/types": "^7.12.6"
-      }
-    },
-    "@svgr/plugin-jsx": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz",
-      "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==",
-      "requires": {
-        "@babel/core": "^7.12.3",
-        "@svgr/babel-preset": "^5.5.0",
-        "@svgr/hast-util-to-babel-ast": "^5.5.0",
-        "svg-parser": "^2.0.2"
-      }
-    },
-    "@svgr/plugin-svgo": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz",
-      "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==",
-      "requires": {
-        "cosmiconfig": "^7.0.0",
-        "deepmerge": "^4.2.2",
-        "svgo": "^1.2.2"
-      }
-    },
-    "@svgr/webpack": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz",
-      "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==",
-      "requires": {
-        "@babel/core": "^7.12.3",
-        "@babel/plugin-transform-react-constant-elements": "^7.12.1",
-        "@babel/preset-env": "^7.12.1",
-        "@babel/preset-react": "^7.12.5",
-        "@svgr/core": "^5.5.0",
-        "@svgr/plugin-jsx": "^5.5.0",
-        "@svgr/plugin-svgo": "^5.5.0",
-        "loader-utils": "^2.0.0"
-      }
-    },
-    "@testing-library/dom": {
-      "version": "8.19.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz",
-      "integrity": "sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==",
-      "requires": {
-        "@babel/code-frame": "^7.10.4",
-        "@babel/runtime": "^7.12.5",
-        "@types/aria-query": "^4.2.0",
-        "aria-query": "^5.0.0",
-        "chalk": "^4.1.0",
-        "dom-accessibility-api": "^0.5.9",
-        "lz-string": "^1.4.4",
-        "pretty-format": "^27.0.2"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "aria-query": {
-          "version": "5.1.3",
-          "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
-          "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
-          "requires": {
-            "deep-equal": "^2.0.5"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@testing-library/jest-dom": {
-      "version": "5.16.5",
-      "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz",
-      "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==",
-      "requires": {
-        "@adobe/css-tools": "^4.0.1",
-        "@babel/runtime": "^7.9.2",
-        "@types/testing-library__jest-dom": "^5.9.1",
-        "aria-query": "^5.0.0",
-        "chalk": "^3.0.0",
-        "css.escape": "^1.5.1",
-        "dom-accessibility-api": "^0.5.6",
-        "lodash": "^4.17.15",
-        "redent": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "aria-query": {
-          "version": "5.1.3",
-          "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
-          "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
-          "requires": {
-            "deep-equal": "^2.0.5"
-          }
-        },
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@testing-library/react": {
-      "version": "13.4.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz",
-      "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==",
-      "requires": {
-        "@babel/runtime": "^7.12.5",
-        "@testing-library/dom": "^8.5.0",
-        "@types/react-dom": "^18.0.0"
-      }
-    },
-    "@testing-library/user-event": {
-      "version": "13.5.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
-      "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==",
-      "requires": {
-        "@babel/runtime": "^7.12.5"
-      }
-    },
-    "@tootallnate/once": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
-      "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
-    },
-    "@trysound/sax": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
-      "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
-    },
-    "@types/aria-query": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
-      "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig=="
-    },
-    "@types/babel__core": {
-      "version": "7.1.20",
-      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz",
-      "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==",
-      "requires": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0",
-        "@types/babel__generator": "*",
-        "@types/babel__template": "*",
-        "@types/babel__traverse": "*"
-      }
-    },
-    "@types/babel__generator": {
-      "version": "7.6.4",
-      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
-      "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
-      "requires": {
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "@types/babel__template": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
-      "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
-      "requires": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "@types/babel__traverse": {
-      "version": "7.18.2",
-      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz",
-      "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==",
-      "requires": {
-        "@babel/types": "^7.3.0"
-      }
-    },
-    "@types/body-parser": {
-      "version": "1.19.2",
-      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
-      "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
-      "requires": {
-        "@types/connect": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/bonjour": {
-      "version": "3.5.10",
-      "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz",
-      "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/connect": {
-      "version": "3.4.35",
-      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
-      "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/connect-history-api-fallback": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
-      "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
-      "requires": {
-        "@types/express-serve-static-core": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/eslint": {
-      "version": "8.4.10",
-      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
-      "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
-      "requires": {
-        "@types/estree": "*",
-        "@types/json-schema": "*"
-      }
-    },
-    "@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==",
-      "requires": {
-        "@types/eslint": "*",
-        "@types/estree": "*"
-      }
-    },
-    "@types/estree": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
-      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ=="
-    },
-    "@types/express": {
-      "version": "4.17.14",
-      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz",
-      "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==",
-      "requires": {
-        "@types/body-parser": "*",
-        "@types/express-serve-static-core": "^4.17.18",
-        "@types/qs": "*",
-        "@types/serve-static": "*"
-      }
-    },
-    "@types/express-serve-static-core": {
-      "version": "4.17.31",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz",
-      "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==",
-      "requires": {
-        "@types/node": "*",
-        "@types/qs": "*",
-        "@types/range-parser": "*"
-      }
-    },
-    "@types/graceful-fs": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
-      "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/html-minifier-terser": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
-      "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg=="
-    },
-    "@types/http-proxy": {
-      "version": "1.17.9",
-      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz",
-      "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/istanbul-lib-coverage": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
-      "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g=="
-    },
-    "@types/istanbul-lib-report": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-      "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
-      "requires": {
-        "@types/istanbul-lib-coverage": "*"
-      }
-    },
-    "@types/istanbul-reports": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
-      "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
-      "requires": {
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "@types/jest": {
-      "version": "29.2.3",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz",
-      "integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==",
-      "requires": {
-        "expect": "^29.0.0",
-        "pretty-format": "^29.0.0"
-      },
-      "dependencies": {
-        "@jest/schemas": {
-          "version": "29.0.0",
-          "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz",
-          "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==",
-          "requires": {
-            "@sinclair/typebox": "^0.24.1"
-          }
-        },
-        "@jest/types": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz",
-          "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==",
-          "requires": {
-            "@jest/schemas": "^29.0.0",
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^3.0.0",
-            "@types/node": "*",
-            "@types/yargs": "^17.0.8",
-            "chalk": "^4.0.0"
-          }
-        },
-        "@types/yargs": {
-          "version": "17.0.13",
-          "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz",
-          "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==",
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "diff-sequences": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz",
-          "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ=="
-        },
-        "expect": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz",
-          "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==",
-          "requires": {
-            "@jest/expect-utils": "^29.3.1",
-            "jest-get-type": "^29.2.0",
-            "jest-matcher-utils": "^29.3.1",
-            "jest-message-util": "^29.3.1",
-            "jest-util": "^29.3.1"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "jest-diff": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz",
-          "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==",
-          "requires": {
-            "chalk": "^4.0.0",
-            "diff-sequences": "^29.3.1",
-            "jest-get-type": "^29.2.0",
-            "pretty-format": "^29.3.1"
-          }
-        },
-        "jest-get-type": {
-          "version": "29.2.0",
-          "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz",
-          "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA=="
-        },
-        "jest-matcher-utils": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz",
-          "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==",
-          "requires": {
-            "chalk": "^4.0.0",
-            "jest-diff": "^29.3.1",
-            "jest-get-type": "^29.2.0",
-            "pretty-format": "^29.3.1"
-          }
-        },
-        "jest-message-util": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz",
-          "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==",
-          "requires": {
-            "@babel/code-frame": "^7.12.13",
-            "@jest/types": "^29.3.1",
-            "@types/stack-utils": "^2.0.0",
-            "chalk": "^4.0.0",
-            "graceful-fs": "^4.2.9",
-            "micromatch": "^4.0.4",
-            "pretty-format": "^29.3.1",
-            "slash": "^3.0.0",
-            "stack-utils": "^2.0.3"
-          }
-        },
-        "jest-util": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz",
-          "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==",
-          "requires": {
-            "@jest/types": "^29.3.1",
-            "@types/node": "*",
-            "chalk": "^4.0.0",
-            "ci-info": "^3.2.0",
-            "graceful-fs": "^4.2.9",
-            "picomatch": "^2.2.3"
-          }
-        },
-        "pretty-format": {
-          "version": "29.3.1",
-          "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz",
-          "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==",
-          "requires": {
-            "@jest/schemas": "^29.0.0",
-            "ansi-styles": "^5.0.0",
-            "react-is": "^18.0.0"
-          },
-          "dependencies": {
-            "ansi-styles": {
-              "version": "5.2.0",
-              "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
-              "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="
-            }
-          }
-        },
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@types/json-schema": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
-    },
-    "@types/json5": {
-      "version": "0.0.29",
-      "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
-      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
-    },
-    "@types/mime": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
-      "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
-    },
-    "@types/minimist": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
-      "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ=="
-    },
-    "@types/node": {
-      "version": "18.11.9",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
-      "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
-    },
-    "@types/normalize-package-data": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
-      "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw=="
-    },
-    "@types/parse-json": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
-    },
-    "@types/prettier": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz",
-      "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow=="
-    },
-    "@types/prop-types": {
-      "version": "15.7.5",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
-    },
-    "@types/q": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
-      "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ=="
-    },
-    "@types/qs": {
-      "version": "6.9.7",
-      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
-      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
-    },
-    "@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=="
-    },
-    "@types/react": {
-      "version": "18.0.25",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz",
-      "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==",
-      "requires": {
-        "@types/prop-types": "*",
-        "@types/scheduler": "*",
-        "csstype": "^3.0.2"
-      }
-    },
-    "@types/react-dom": {
-      "version": "18.0.9",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz",
-      "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==",
-      "requires": {
-        "@types/react": "*"
-      }
-    },
-    "@types/react-is": {
-      "version": "17.0.3",
-      "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
-      "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
-      "requires": {
-        "@types/react": "*"
-      }
-    },
-    "@types/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
-      "requires": {
-        "@types/react": "*"
-      }
-    },
-    "@types/resolve": {
-      "version": "1.17.1",
-      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
-      "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
-    },
-    "@types/scheduler": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
-      "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
-    },
-    "@types/semver": {
-      "version": "7.3.13",
-      "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
-      "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw=="
-    },
-    "@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==",
-      "requires": {
-        "@types/express": "*"
-      }
-    },
-    "@types/serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
-      "requires": {
-        "@types/mime": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/sockjs": {
-      "version": "0.3.33",
-      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
-      "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/stack-utils": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
-      "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
-    },
-    "@types/testing-library__jest-dom": {
-      "version": "5.14.5",
-      "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
-      "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==",
-      "requires": {
-        "@types/jest": "*"
-      }
-    },
-    "@types/trusted-types": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz",
-      "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg=="
-    },
-    "@types/ws": {
-      "version": "8.5.3",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
-      "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/yargs": {
-      "version": "16.0.4",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
-      "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
-      "requires": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "@types/yargs-parser": {
-      "version": "21.0.0",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
-      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
-    },
-    "@typescript-eslint/eslint-plugin": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz",
-      "integrity": "sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==",
-      "requires": {
-        "@typescript-eslint/scope-manager": "5.43.0",
-        "@typescript-eslint/type-utils": "5.43.0",
-        "@typescript-eslint/utils": "5.43.0",
-        "debug": "^4.3.4",
-        "ignore": "^5.2.0",
-        "natural-compare-lite": "^1.4.0",
-        "regexpp": "^3.2.0",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      }
-    },
-    "@typescript-eslint/experimental-utils": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.43.0.tgz",
-      "integrity": "sha512-WkT637CumTJbm/hRbFfnHBMgfUYTKr08LitVsD7gQId7bi6rnkx3pu3jac67lmp5ObW4MpJ9SNFZAIOUB/Qbsw==",
-      "requires": {
-        "@typescript-eslint/utils": "5.43.0"
-      }
-    },
-    "@typescript-eslint/parser": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz",
-      "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==",
-      "requires": {
-        "@typescript-eslint/scope-manager": "5.43.0",
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/typescript-estree": "5.43.0",
-        "debug": "^4.3.4"
-      }
-    },
-    "@typescript-eslint/scope-manager": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz",
-      "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==",
-      "requires": {
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/visitor-keys": "5.43.0"
-      }
-    },
-    "@typescript-eslint/type-utils": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz",
-      "integrity": "sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==",
-      "requires": {
-        "@typescript-eslint/typescript-estree": "5.43.0",
-        "@typescript-eslint/utils": "5.43.0",
-        "debug": "^4.3.4",
-        "tsutils": "^3.21.0"
-      }
-    },
-    "@typescript-eslint/types": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz",
-      "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg=="
-    },
-    "@typescript-eslint/typescript-estree": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz",
-      "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==",
-      "requires": {
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/visitor-keys": "5.43.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      }
-    },
-    "@typescript-eslint/utils": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.43.0.tgz",
-      "integrity": "sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==",
-      "requires": {
-        "@types/json-schema": "^7.0.9",
-        "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.43.0",
-        "@typescript-eslint/types": "5.43.0",
-        "@typescript-eslint/typescript-estree": "5.43.0",
-        "eslint-scope": "^5.1.1",
-        "eslint-utils": "^3.0.0",
-        "semver": "^7.3.7"
-      },
-      "dependencies": {
-        "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==",
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^4.1.1"
-          }
-        },
-        "estraverse": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-          "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
-        }
-      }
-    },
-    "@typescript-eslint/visitor-keys": {
-      "version": "5.43.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz",
-      "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==",
-      "requires": {
-        "@typescript-eslint/types": "5.43.0",
-        "eslint-visitor-keys": "^3.3.0"
-      }
-    },
-    "@webassemblyjs/ast": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
-      "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
-      "requires": {
-        "@webassemblyjs/helper-numbers": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
-      }
-    },
-    "@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
-      "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="
-    },
-    "@webassemblyjs/helper-api-error": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
-      "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="
-    },
-    "@webassemblyjs/helper-buffer": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
-      "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="
-    },
-    "@webassemblyjs/helper-numbers": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
-      "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
-      "requires": {
-        "@webassemblyjs/floating-point-hex-parser": "1.11.1",
-        "@webassemblyjs/helper-api-error": "1.11.1",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
-      "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="
-    },
-    "@webassemblyjs/helper-wasm-section": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
-      "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-buffer": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/wasm-gen": "1.11.1"
-      }
-    },
-    "@webassemblyjs/ieee754": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
-      "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
-      "requires": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "@webassemblyjs/leb128": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
-      "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
-      "requires": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@webassemblyjs/utf8": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
-      "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="
-    },
-    "@webassemblyjs/wasm-edit": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
-      "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-buffer": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/helper-wasm-section": "1.11.1",
-        "@webassemblyjs/wasm-gen": "1.11.1",
-        "@webassemblyjs/wasm-opt": "1.11.1",
-        "@webassemblyjs/wasm-parser": "1.11.1",
-        "@webassemblyjs/wast-printer": "1.11.1"
-      }
-    },
-    "@webassemblyjs/wasm-gen": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
-      "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/ieee754": "1.11.1",
-        "@webassemblyjs/leb128": "1.11.1",
-        "@webassemblyjs/utf8": "1.11.1"
-      }
-    },
-    "@webassemblyjs/wasm-opt": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
-      "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-buffer": "1.11.1",
-        "@webassemblyjs/wasm-gen": "1.11.1",
-        "@webassemblyjs/wasm-parser": "1.11.1"
-      }
-    },
-    "@webassemblyjs/wasm-parser": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
-      "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/helper-api-error": "1.11.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-        "@webassemblyjs/ieee754": "1.11.1",
-        "@webassemblyjs/leb128": "1.11.1",
-        "@webassemblyjs/utf8": "1.11.1"
-      }
-    },
-    "@webassemblyjs/wast-printer": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
-      "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
-      "requires": {
-        "@webassemblyjs/ast": "1.11.1",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@xtuc/ieee754": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
-    },
-    "@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=="
-    },
-    "abab": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
-      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
-    },
-    "abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
-    },
-    "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==",
-      "requires": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
-      }
-    },
-    "acorn": {
-      "version": "8.8.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
-      "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA=="
-    },
-    "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==",
-      "requires": {
-        "acorn": "^7.1.1",
-        "acorn-walk": "^7.1.1"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "7.4.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-          "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
-        }
-      }
-    },
-    "acorn-import-assertions": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
-      "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
-      "requires": {}
-    },
-    "acorn-jsx": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "requires": {}
-    },
-    "acorn-node": {
-      "version": "1.8.2",
-      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
-      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
-      "requires": {
-        "acorn": "^7.0.0",
-        "acorn-walk": "^7.0.0",
-        "xtend": "^4.0.2"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "7.4.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-          "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
-        }
-      }
-    },
-    "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=="
-    },
-    "address": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz",
-      "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA=="
-    },
-    "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==",
-      "requires": {
-        "loader-utils": "^2.0.0",
-        "regex-parser": "^2.2.11"
-      }
-    },
-    "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==",
-      "requires": {
-        "debug": "4"
-      }
-    },
-    "agentkeepalive": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
-      "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
-      "requires": {
-        "debug": "^4.1.0",
-        "depd": "^1.1.2",
-        "humanize-ms": "^1.2.1"
-      },
-      "dependencies": {
-        "depd": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-          "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
-        }
-      }
-    },
-    "aggregate-error": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
-      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
-      "requires": {
-        "clean-stack": "^2.0.0",
-        "indent-string": "^4.0.0"
-      }
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "requires": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "ajv-formats": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
-      "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
-      "requires": {
-        "ajv": "^8.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-          "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "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=="
-        }
-      }
-    },
-    "ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "requires": {}
-    },
-    "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==",
-      "requires": {
-        "type-fest": "^0.21.3"
-      }
-    },
-    "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=="
-    },
-    "ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
-    },
-    "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==",
-      "requires": {
-        "color-convert": "^1.9.0"
-      }
-    },
-    "anymatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "requires": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      }
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "delegates": "^1.0.0",
-        "readable-stream": "^3.6.0"
-      }
-    },
-    "arg": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
-      "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "requires": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "aria-query": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
-      "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
-      "requires": {
-        "@babel/runtime": "^7.10.2",
-        "@babel/runtime-corejs3": "^7.10.2"
-      }
-    },
-    "array-flatten": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
-      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
-    },
-    "array-includes": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
-      "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "is-string": "^1.0.7"
-      }
-    },
-    "array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
-    },
-    "array.prototype.flat": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
-      "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0"
-      }
-    },
-    "array.prototype.flatmap": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
-      "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0"
-      }
-    },
-    "array.prototype.reduce": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
-      "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-array-method-boxes-properly": "^1.0.0",
-        "is-string": "^1.0.7"
-      }
-    },
-    "arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA=="
-    },
-    "asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
-    },
-    "asn1": {
-      "version": "0.2.6",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
-      "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
-      "requires": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "assert-plus": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
-    },
-    "ast-types-flow": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
-      "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag=="
-    },
-    "async": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
-      "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
-    },
-    "async-foreach": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
-      "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA=="
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
-    },
-    "at-least-node": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
-      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
-    },
-    "autoprefixer": {
-      "version": "10.4.13",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
-      "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==",
-      "requires": {
-        "browserslist": "^4.21.4",
-        "caniuse-lite": "^1.0.30001426",
-        "fraction.js": "^4.2.0",
-        "normalize-range": "^0.1.2",
-        "picocolors": "^1.0.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "available-typed-arrays": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
-      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
-    },
-    "aws-sign2": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
-    },
-    "aws4": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
-    },
-    "axe-core": {
-      "version": "4.5.2",
-      "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz",
-      "integrity": "sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA=="
-    },
-    "axios": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.1.tgz",
-      "integrity": "sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==",
-      "requires": {
-        "follow-redirects": "^1.15.0",
-        "form-data": "^4.0.0",
-        "proxy-from-env": "^1.1.0"
-      },
-      "dependencies": {
-        "form-data": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-          "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-          "requires": {
-            "asynckit": "^0.4.0",
-            "combined-stream": "^1.0.8",
-            "mime-types": "^2.1.12"
-          }
-        }
-      }
-    },
-    "axobject-query": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
-      "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
-    },
-    "babel-jest": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
-      "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
-      "requires": {
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/babel__core": "^7.1.14",
-        "babel-plugin-istanbul": "^6.1.1",
-        "babel-preset-jest": "^27.5.1",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.9",
-        "slash": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "babel-loader": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz",
-      "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==",
-      "requires": {
-        "find-cache-dir": "^3.3.1",
-        "loader-utils": "^2.0.0",
-        "make-dir": "^3.1.0",
-        "schema-utils": "^2.6.5"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-          "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-          "requires": {
-            "@types/json-schema": "^7.0.5",
-            "ajv": "^6.12.4",
-            "ajv-keywords": "^3.5.2"
-          }
-        }
-      }
-    },
-    "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==",
-      "requires": {
-        "@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"
-      }
-    },
-    "babel-plugin-jest-hoist": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
-      "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
-      "requires": {
-        "@babel/template": "^7.3.3",
-        "@babel/types": "^7.3.3",
-        "@types/babel__core": "^7.0.0",
-        "@types/babel__traverse": "^7.0.6"
-      }
-    },
-    "babel-plugin-macros": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
-      "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
-      "requires": {
-        "@babel/runtime": "^7.12.5",
-        "cosmiconfig": "^7.0.0",
-        "resolve": "^1.19.0"
-      }
-    },
-    "babel-plugin-named-asset-import": {
-      "version": "0.3.8",
-      "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz",
-      "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==",
-      "requires": {}
-    },
-    "babel-plugin-polyfill-corejs2": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
-      "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
-      "requires": {
-        "@babel/compat-data": "^7.17.7",
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "semver": "^6.1.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "babel-plugin-polyfill-corejs3": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
-      "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "core-js-compat": "^3.25.1"
-      }
-    },
-    "babel-plugin-polyfill-regenerator": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
-      "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3"
-      }
-    },
-    "babel-plugin-transform-react-remove-prop-types": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
-      "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA=="
-    },
-    "babel-preset-current-node-syntax": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
-      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
-      "requires": {
-        "@babel/plugin-syntax-async-generators": "^7.8.4",
-        "@babel/plugin-syntax-bigint": "^7.8.3",
-        "@babel/plugin-syntax-class-properties": "^7.8.3",
-        "@babel/plugin-syntax-import-meta": "^7.8.3",
-        "@babel/plugin-syntax-json-strings": "^7.8.3",
-        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
-        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
-        "@babel/plugin-syntax-top-level-await": "^7.8.3"
-      }
-    },
-    "babel-preset-jest": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
-      "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
-      "requires": {
-        "babel-plugin-jest-hoist": "^27.5.1",
-        "babel-preset-current-node-syntax": "^1.0.0"
-      }
-    },
-    "babel-preset-react-app": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz",
-      "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==",
-      "requires": {
-        "@babel/core": "^7.16.0",
-        "@babel/plugin-proposal-class-properties": "^7.16.0",
-        "@babel/plugin-proposal-decorators": "^7.16.4",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
-        "@babel/plugin-proposal-numeric-separator": "^7.16.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.16.0",
-        "@babel/plugin-proposal-private-methods": "^7.16.0",
-        "@babel/plugin-transform-flow-strip-types": "^7.16.0",
-        "@babel/plugin-transform-react-display-name": "^7.16.0",
-        "@babel/plugin-transform-runtime": "^7.16.4",
-        "@babel/preset-env": "^7.16.4",
-        "@babel/preset-react": "^7.16.0",
-        "@babel/preset-typescript": "^7.16.0",
-        "@babel/runtime": "^7.16.3",
-        "babel-plugin-macros": "^3.1.0",
-        "babel-plugin-transform-react-remove-prop-types": "^0.4.24"
-      }
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-    },
-    "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=="
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
-      "requires": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "bfj": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz",
-      "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==",
-      "requires": {
-        "bluebird": "^3.5.5",
-        "check-types": "^11.1.1",
-        "hoopy": "^0.1.4",
-        "tryer": "^1.0.1"
-      }
-    },
-    "big.js": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
-    },
-    "binary-extensions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
-    },
-    "bluebird": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
-    },
-    "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==",
-      "requires": {
-        "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"
-      },
-      "dependencies": {
-        "bytes": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-          "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "iconv-lite": {
-          "version": "0.4.24",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        }
-      }
-    },
-    "bonjour-service": {
-      "version": "1.0.14",
-      "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz",
-      "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==",
-      "requires": {
-        "array-flatten": "^2.1.2",
-        "dns-equal": "^1.0.0",
-        "fast-deep-equal": "^3.1.3",
-        "multicast-dns": "^7.2.5"
-      }
-    },
-    "boolbase": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "requires": {
-        "fill-range": "^7.0.1"
-      }
-    },
-    "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=="
-    },
-    "browserslist": {
-      "version": "4.21.4",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
-      "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
-      "requires": {
-        "caniuse-lite": "^1.0.30001400",
-        "electron-to-chromium": "^1.4.251",
-        "node-releases": "^2.0.6",
-        "update-browserslist-db": "^1.0.9"
-      }
-    },
-    "bser": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
-      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
-      "requires": {
-        "node-int64": "^0.4.0"
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
-    },
-    "builtin-modules": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
-      "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw=="
-    },
-    "bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="
-    },
-    "cacache": {
-      "version": "15.3.0",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
-      "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
-      "requires": {
-        "@npmcli/fs": "^1.0.0",
-        "@npmcli/move-file": "^1.0.1",
-        "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "glob": "^7.1.4",
-        "infer-owner": "^1.0.4",
-        "lru-cache": "^6.0.0",
-        "minipass": "^3.1.1",
-        "minipass-collect": "^1.0.2",
-        "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.2",
-        "mkdirp": "^1.0.3",
-        "p-map": "^4.0.0",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^3.0.2",
-        "ssri": "^8.0.1",
-        "tar": "^6.0.2",
-        "unique-filename": "^1.1.1"
-      },
-      "dependencies": {
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
-        }
-      }
-    },
-    "call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
-    },
-    "camel-case": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
-      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
-      "requires": {
-        "pascal-case": "^3.1.2",
-        "tslib": "^2.0.3"
-      }
-    },
-    "camelcase": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
-      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
-    },
-    "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=="
-    },
-    "camelcase-keys": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
-      "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
-      "requires": {
-        "camelcase": "^5.3.1",
-        "map-obj": "^4.0.0",
-        "quick-lru": "^4.0.1"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-        },
-        "quick-lru": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
-          "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g=="
-        }
-      }
-    },
-    "caniuse-api": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
-      "requires": {
-        "browserslist": "^4.0.0",
-        "caniuse-lite": "^1.0.0",
-        "lodash.memoize": "^4.1.2",
-        "lodash.uniq": "^4.5.0"
-      }
-    },
-    "caniuse-lite": {
-      "version": "1.0.30001431",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz",
-      "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ=="
-    },
-    "case-sensitive-paths-webpack-plugin": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
-      "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw=="
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
-    },
-    "chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      }
-    },
-    "char-regex": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
-      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw=="
-    },
-    "check-types": {
-      "version": "11.1.2",
-      "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz",
-      "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ=="
-    },
-    "chokidar": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
-      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "requires": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "fsevents": "~2.3.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-          "requires": {
-            "is-glob": "^4.0.1"
-          }
-        }
-      }
-    },
-    "chownr": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
-      "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
-    },
-    "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=="
-    },
-    "ci-info": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz",
-      "integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w=="
-    },
-    "cjs-module-lexer": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
-      "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA=="
-    },
-    "clean-css": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
-      "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==",
-      "requires": {
-        "source-map": "~0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "clean-stack": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
-      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
-    },
-    "cliui": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
-      "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
-      "requires": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^7.0.0"
-      }
-    },
-    "clsx": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-      "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg=="
-    },
-    "co": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ=="
-    },
-    "coa": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
-      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
-      "requires": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
-      }
-    },
-    "collect-v8-coverage": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
-      "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg=="
-    },
-    "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==",
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
-    },
-    "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=="
-    },
-    "colord": {
-      "version": "2.9.3",
-      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
-      "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="
-    },
-    "colorette": {
-      "version": "2.0.19",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
-      "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
-    },
-    "combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "commander": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
-      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
-    },
-    "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=="
-    },
-    "common-tags": {
-      "version": "1.8.2",
-      "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
-      "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
-    },
-    "compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
-      "requires": {
-        "mime-db": ">= 1.43.0 < 2"
-      }
-    },
-    "compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-      "requires": {
-        "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"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        },
-        "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=="
-        }
-      }
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
-    },
-    "confusing-browser-globals": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
-      "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA=="
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "safe-buffer": "5.2.1"
-      }
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-    },
-    "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=="
-    },
-    "cookie": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
-    },
-    "core-js": {
-      "version": "3.26.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz",
-      "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA=="
-    },
-    "core-js-compat": {
-      "version": "3.26.1",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz",
-      "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==",
-      "requires": {
-        "browserslist": "^4.21.4"
-      }
-    },
-    "core-js-pure": {
-      "version": "3.26.1",
-      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz",
-      "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ=="
-    },
-    "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=="
-    },
-    "cosmiconfig": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
-      "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
-      "requires": {
-        "@types/parse-json": "^4.0.0",
-        "import-fresh": "^3.2.1",
-        "parse-json": "^5.0.0",
-        "path-type": "^4.0.0",
-        "yaml": "^1.10.0"
-      }
-    },
-    "cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "requires": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      }
-    },
-    "crypto-random-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
-    },
-    "css-blank-pseudo": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz",
-      "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==",
-      "requires": {
-        "postcss-selector-parser": "^6.0.9"
-      }
-    },
-    "css-declaration-sorter": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
-      "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==",
-      "requires": {}
-    },
-    "css-has-pseudo": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz",
-      "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==",
-      "requires": {
-        "postcss-selector-parser": "^6.0.9"
-      }
-    },
-    "css-loader": {
-      "version": "6.7.2",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz",
-      "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==",
-      "requires": {
-        "icss-utils": "^5.1.0",
-        "postcss": "^8.4.18",
-        "postcss-modules-extract-imports": "^3.0.0",
-        "postcss-modules-local-by-default": "^4.0.0",
-        "postcss-modules-scope": "^3.0.0",
-        "postcss-modules-values": "^4.0.0",
-        "postcss-value-parser": "^4.2.0",
-        "semver": "^7.3.8"
-      }
-    },
-    "css-minimizer-webpack-plugin": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz",
-      "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==",
-      "requires": {
-        "cssnano": "^5.0.6",
-        "jest-worker": "^27.0.2",
-        "postcss": "^8.3.5",
-        "schema-utils": "^4.0.0",
-        "serialize-javascript": "^6.0.0",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-          "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "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==",
-          "requires": {
-            "fast-deep-equal": "^3.1.3"
-          }
-        },
-        "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=="
-        },
-        "schema-utils": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-          "requires": {
-            "@types/json-schema": "^7.0.9",
-            "ajv": "^8.8.0",
-            "ajv-formats": "^2.1.1",
-            "ajv-keywords": "^5.0.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "css-prefers-color-scheme": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz",
-      "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==",
-      "requires": {}
-    },
-    "css-select": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
-      "requires": {
-        "boolbase": "^1.0.0",
-        "css-what": "^6.0.1",
-        "domhandler": "^4.3.1",
-        "domutils": "^2.8.0",
-        "nth-check": "^2.0.1"
-      }
-    },
-    "css-select-base-adapter": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
-      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
-    },
-    "css-tree": {
-      "version": "1.0.0-alpha.37",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-      "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
-      "requires": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "css-what": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
-      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
-    },
-    "css.escape": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
-      "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg=="
-    },
-    "cssdb": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz",
-      "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ=="
-    },
-    "cssesc": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
-    },
-    "cssnano": {
-      "version": "5.1.14",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz",
-      "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==",
-      "requires": {
-        "cssnano-preset-default": "^5.2.13",
-        "lilconfig": "^2.0.3",
-        "yaml": "^1.10.2"
-      }
-    },
-    "cssnano-preset-default": {
-      "version": "5.2.13",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz",
-      "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==",
-      "requires": {
-        "css-declaration-sorter": "^6.3.1",
-        "cssnano-utils": "^3.1.0",
-        "postcss-calc": "^8.2.3",
-        "postcss-colormin": "^5.3.0",
-        "postcss-convert-values": "^5.1.3",
-        "postcss-discard-comments": "^5.1.2",
-        "postcss-discard-duplicates": "^5.1.0",
-        "postcss-discard-empty": "^5.1.1",
-        "postcss-discard-overridden": "^5.1.0",
-        "postcss-merge-longhand": "^5.1.7",
-        "postcss-merge-rules": "^5.1.3",
-        "postcss-minify-font-values": "^5.1.0",
-        "postcss-minify-gradients": "^5.1.1",
-        "postcss-minify-params": "^5.1.4",
-        "postcss-minify-selectors": "^5.2.1",
-        "postcss-normalize-charset": "^5.1.0",
-        "postcss-normalize-display-values": "^5.1.0",
-        "postcss-normalize-positions": "^5.1.1",
-        "postcss-normalize-repeat-style": "^5.1.1",
-        "postcss-normalize-string": "^5.1.0",
-        "postcss-normalize-timing-functions": "^5.1.0",
-        "postcss-normalize-unicode": "^5.1.1",
-        "postcss-normalize-url": "^5.1.0",
-        "postcss-normalize-whitespace": "^5.1.1",
-        "postcss-ordered-values": "^5.1.3",
-        "postcss-reduce-initial": "^5.1.1",
-        "postcss-reduce-transforms": "^5.1.0",
-        "postcss-svgo": "^5.1.0",
-        "postcss-unique-selectors": "^5.1.1"
-      }
-    },
-    "cssnano-utils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
-      "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
-      "requires": {}
-    },
-    "csso": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-      "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
-      "requires": {
-        "css-tree": "^1.1.2"
-      },
-      "dependencies": {
-        "css-tree": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-          "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-          "requires": {
-            "mdn-data": "2.0.14",
-            "source-map": "^0.6.1"
-          }
-        },
-        "mdn-data": {
-          "version": "2.0.14",
-          "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-          "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "cssom": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
-      "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
-    },
-    "cssstyle": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
-      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
-      "requires": {
-        "cssom": "~0.3.6"
-      },
-      "dependencies": {
-        "cssom": {
-          "version": "0.3.8",
-          "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
-          "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
-        }
-      }
-    },
-    "csstype": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
-    },
-    "damerau-levenshtein": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
-      "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="
-    },
-    "dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "data-urls": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
-      "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
-      "requires": {
-        "abab": "^2.0.3",
-        "whatwg-mimetype": "^2.3.0",
-        "whatwg-url": "^8.0.0"
-      }
-    },
-    "debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "requires": {
-        "ms": "2.1.2"
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
-    },
-    "decamelize-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
-      "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
-      "requires": {
-        "decamelize": "^1.1.0",
-        "map-obj": "^1.0.0"
-      },
-      "dependencies": {
-        "map-obj": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-          "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg=="
-        }
-      }
-    },
-    "decimal.js": {
-      "version": "10.4.2",
-      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz",
-      "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA=="
-    },
-    "dedent": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
-      "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA=="
-    },
-    "deep-equal": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz",
-      "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "es-get-iterator": "^1.1.2",
-        "get-intrinsic": "^1.1.3",
-        "is-arguments": "^1.1.1",
-        "is-date-object": "^1.0.5",
-        "is-regex": "^1.1.4",
-        "isarray": "^2.0.5",
-        "object-is": "^1.1.5",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "side-channel": "^1.0.4",
-        "which-boxed-primitive": "^1.0.2",
-        "which-collection": "^1.0.1",
-        "which-typed-array": "^1.1.8"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
-        }
-      }
-    },
-    "deep-is": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
-    },
-    "deepmerge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
-    },
-    "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==",
-      "requires": {
-        "execa": "^5.0.0"
-      }
-    },
-    "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=="
-    },
-    "define-properties": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
-      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
-      "requires": {
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "defined": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
-      "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q=="
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
-    },
-    "delegates": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
-    },
-    "depd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
-    },
-    "destroy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
-      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
-    },
-    "detect-newline": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
-      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA=="
-    },
-    "detect-node": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
-      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
-    },
-    "detect-port-alt": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
-      "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
-      "requires": {
-        "address": "^1.0.1",
-        "debug": "^2.6.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        }
-      }
-    },
-    "detective": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
-      "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
-      "requires": {
-        "acorn-node": "^1.8.2",
-        "defined": "^1.0.0",
-        "minimist": "^1.2.6"
-      }
-    },
-    "didyoumean": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
-      "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
-    },
-    "diff-sequences": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
-      "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ=="
-    },
-    "dir-glob": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-      "requires": {
-        "path-type": "^4.0.0"
-      }
-    },
-    "dlv": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
-      "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
-    },
-    "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=="
-    },
-    "dns-packet": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz",
-      "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==",
-      "requires": {
-        "@leichtgewicht/ip-codec": "^2.0.1"
-      }
-    },
-    "doctrine": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-      "requires": {
-        "esutils": "^2.0.2"
-      }
-    },
-    "dom-accessibility-api": {
-      "version": "0.5.14",
-      "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz",
-      "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg=="
-    },
-    "dom-converter": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
-      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
-      "requires": {
-        "utila": "~0.4"
-      }
-    },
-    "dom-helpers": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
-      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
-      "requires": {
-        "@babel/runtime": "^7.8.7",
-        "csstype": "^3.0.2"
-      }
-    },
-    "dom-serializer": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.2.0",
-        "entities": "^2.0.0"
-      }
-    },
-    "domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
-    },
-    "domexception": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
-      "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
-      "requires": {
-        "webidl-conversions": "^5.0.0"
-      },
-      "dependencies": {
-        "webidl-conversions": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
-          "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA=="
-        }
-      }
-    },
-    "domhandler": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
-      "requires": {
-        "domelementtype": "^2.2.0"
-      }
-    },
-    "domutils": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-      "requires": {
-        "dom-serializer": "^1.0.1",
-        "domelementtype": "^2.2.0",
-        "domhandler": "^4.2.0"
-      }
-    },
-    "dot-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
-      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
-      "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "dotenv": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
-      "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q=="
-    },
-    "dotenv-expand": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
-      "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA=="
-    },
-    "duplexer": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
-      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
-    },
-    "ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
-      "requires": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "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=="
-    },
-    "ejs": {
-      "version": "3.1.8",
-      "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
-      "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
-      "requires": {
-        "jake": "^10.8.5"
-      }
-    },
-    "electron-to-chromium": {
-      "version": "1.4.284",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
-      "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
-    },
-    "emittery": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
-      "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg=="
-    },
-    "emoji-regex": {
-      "version": "9.2.2",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
-    },
-    "emojis-list": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
-    },
-    "encoding": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
-      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
-      "optional": true,
-      "requires": {
-        "iconv-lite": "^0.6.2"
-      }
-    },
-    "enhanced-resolve": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
-      "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
-      "requires": {
-        "graceful-fs": "^4.2.4",
-        "tapable": "^2.2.0"
-      }
-    },
-    "entities": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
-    },
-    "env-paths": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
-      "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "error-stack-parser": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
-      "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
-      "requires": {
-        "stackframe": "^1.3.4"
-      }
-    },
-    "es-abstract": {
-      "version": "1.20.4",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
-      "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.1.3",
-        "get-symbol-description": "^1.0.0",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "is-callable": "^1.2.7",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.2",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "safe-regex-test": "^1.0.0",
-        "string.prototype.trimend": "^1.0.5",
-        "string.prototype.trimstart": "^1.0.5",
-        "unbox-primitive": "^1.0.2"
-      }
-    },
-    "es-array-method-boxes-properly": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
-      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="
-    },
-    "es-get-iterator": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
-      "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.0",
-        "has-symbols": "^1.0.1",
-        "is-arguments": "^1.1.0",
-        "is-map": "^2.0.2",
-        "is-set": "^2.0.2",
-        "is-string": "^1.0.5",
-        "isarray": "^2.0.5"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
-        }
-      }
-    },
-    "es-module-lexer": {
-      "version": "0.9.3",
-      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
-      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
-    },
-    "es-shim-unscopables": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
-      "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
-    "es6-object-assign": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
-      "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw=="
-    },
-    "escalade": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "escodegen": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
-      "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
-      "requires": {
-        "esprima": "^4.0.1",
-        "estraverse": "^5.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "levn": {
-          "version": "0.3.0",
-          "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-          "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
-          "requires": {
-            "prelude-ls": "~1.1.2",
-            "type-check": "~0.3.2"
-          }
-        },
-        "optionator": {
-          "version": "0.8.3",
-          "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-          "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-          "requires": {
-            "deep-is": "~0.1.3",
-            "fast-levenshtein": "~2.0.6",
-            "levn": "~0.3.0",
-            "prelude-ls": "~1.1.2",
-            "type-check": "~0.3.2",
-            "word-wrap": "~1.2.3"
-          }
-        },
-        "prelude-ls": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-          "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w=="
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "optional": true
-        },
-        "type-check": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-          "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
-          "requires": {
-            "prelude-ls": "~1.1.2"
-          }
-        }
-      }
-    },
-    "eslint": {
-      "version": "8.27.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz",
-      "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==",
-      "requires": {
-        "@eslint/eslintrc": "^1.3.3",
-        "@humanwhocodes/config-array": "^0.11.6",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
-        "ajv": "^6.10.0",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.1.1",
-        "eslint-utils": "^3.0.0",
-        "eslint-visitor-keys": "^3.3.0",
-        "espree": "^9.4.0",
-        "esquery": "^1.4.0",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "globals": "^13.15.0",
-        "grapheme-splitter": "^1.0.4",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-sdsl": "^4.1.4",
-        "js-yaml": "^4.1.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.1",
-        "regexpp": "^3.2.0",
-        "strip-ansi": "^6.0.1",
-        "strip-json-comments": "^3.1.0",
-        "text-table": "^0.2.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "argparse": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
-        },
-        "globals": {
-          "version": "13.17.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
-          "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
-          "requires": {
-            "type-fest": "^0.20.2"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "js-yaml": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-          "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-          "requires": {
-            "argparse": "^2.0.1"
-          }
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "type-fest": {
-          "version": "0.20.2",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
-        }
-      }
-    },
-    "eslint-config-react-app": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz",
-      "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==",
-      "requires": {
-        "@babel/core": "^7.16.0",
-        "@babel/eslint-parser": "^7.16.3",
-        "@rushstack/eslint-patch": "^1.1.0",
-        "@typescript-eslint/eslint-plugin": "^5.5.0",
-        "@typescript-eslint/parser": "^5.5.0",
-        "babel-preset-react-app": "^10.0.1",
-        "confusing-browser-globals": "^1.0.11",
-        "eslint-plugin-flowtype": "^8.0.3",
-        "eslint-plugin-import": "^2.25.3",
-        "eslint-plugin-jest": "^25.3.0",
-        "eslint-plugin-jsx-a11y": "^6.5.1",
-        "eslint-plugin-react": "^7.27.1",
-        "eslint-plugin-react-hooks": "^4.3.0",
-        "eslint-plugin-testing-library": "^5.0.1"
-      }
-    },
-    "eslint-import-resolver-node": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
-      "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
-      "requires": {
-        "debug": "^3.2.7",
-        "resolve": "^1.20.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
-    "eslint-module-utils": {
-      "version": "2.7.4",
-      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
-      "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
-      "requires": {
-        "debug": "^3.2.7"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
-    "eslint-plugin-flowtype": {
-      "version": "8.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz",
-      "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==",
-      "requires": {
-        "lodash": "^4.17.21",
-        "string-natural-compare": "^3.0.1"
-      }
-    },
-    "eslint-plugin-import": {
-      "version": "2.26.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
-      "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
-      "requires": {
-        "array-includes": "^3.1.4",
-        "array.prototype.flat": "^1.2.5",
-        "debug": "^2.6.9",
-        "doctrine": "^2.1.0",
-        "eslint-import-resolver-node": "^0.3.6",
-        "eslint-module-utils": "^2.7.3",
-        "has": "^1.0.3",
-        "is-core-module": "^2.8.1",
-        "is-glob": "^4.0.3",
-        "minimatch": "^3.1.2",
-        "object.values": "^1.1.5",
-        "resolve": "^1.22.0",
-        "tsconfig-paths": "^3.14.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "doctrine": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-          "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-          "requires": {
-            "esutils": "^2.0.2"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        }
-      }
-    },
-    "eslint-plugin-jest": {
-      "version": "25.7.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz",
-      "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==",
-      "requires": {
-        "@typescript-eslint/experimental-utils": "^5.0.0"
-      }
-    },
-    "eslint-plugin-jsx-a11y": {
-      "version": "6.6.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz",
-      "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==",
-      "requires": {
-        "@babel/runtime": "^7.18.9",
-        "aria-query": "^4.2.2",
-        "array-includes": "^3.1.5",
-        "ast-types-flow": "^0.0.7",
-        "axe-core": "^4.4.3",
-        "axobject-query": "^2.2.0",
-        "damerau-levenshtein": "^1.0.8",
-        "emoji-regex": "^9.2.2",
-        "has": "^1.0.3",
-        "jsx-ast-utils": "^3.3.2",
-        "language-tags": "^1.0.5",
-        "minimatch": "^3.1.2",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "eslint-plugin-react": {
-      "version": "7.31.10",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz",
-      "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==",
-      "requires": {
-        "array-includes": "^3.1.5",
-        "array.prototype.flatmap": "^1.3.0",
-        "doctrine": "^2.1.0",
-        "estraverse": "^5.3.0",
-        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
-        "minimatch": "^3.1.2",
-        "object.entries": "^1.1.5",
-        "object.fromentries": "^2.0.5",
-        "object.hasown": "^1.1.1",
-        "object.values": "^1.1.5",
-        "prop-types": "^15.8.1",
-        "resolve": "^2.0.0-next.3",
-        "semver": "^6.3.0",
-        "string.prototype.matchall": "^4.0.7"
-      },
-      "dependencies": {
-        "doctrine": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-          "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-          "requires": {
-            "esutils": "^2.0.2"
-          }
-        },
-        "resolve": {
-          "version": "2.0.0-next.4",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
-          "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
-          "requires": {
-            "is-core-module": "^2.9.0",
-            "path-parse": "^1.0.7",
-            "supports-preserve-symlinks-flag": "^1.0.0"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "eslint-plugin-react-hooks": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
-      "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
-      "requires": {}
-    },
-    "eslint-plugin-testing-library": {
-      "version": "5.9.1",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz",
-      "integrity": "sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==",
-      "requires": {
-        "@typescript-eslint/utils": "^5.13.0"
-      }
-    },
-    "eslint-scope": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
-      "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
-      "requires": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      }
-    },
-    "eslint-utils": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
-      "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
-      "requires": {
-        "eslint-visitor-keys": "^2.0.0"
-      },
-      "dependencies": {
-        "eslint-visitor-keys": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-          "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="
-        }
-      }
-    },
-    "eslint-visitor-keys": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
-      "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA=="
-    },
-    "eslint-webpack-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz",
-      "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==",
-      "requires": {
-        "@types/eslint": "^7.29.0 || ^8.4.1",
-        "jest-worker": "^28.0.2",
-        "micromatch": "^4.0.5",
-        "normalize-path": "^3.0.0",
-        "schema-utils": "^4.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-          "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "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==",
-          "requires": {
-            "fast-deep-equal": "^3.1.3"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "jest-worker": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz",
-          "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==",
-          "requires": {
-            "@types/node": "*",
-            "merge-stream": "^2.0.0",
-            "supports-color": "^8.0.0"
-          }
-        },
-        "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=="
-        },
-        "schema-utils": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-          "requires": {
-            "@types/json-schema": "^7.0.9",
-            "ajv": "^8.8.0",
-            "ajv-formats": "^2.1.1",
-            "ajv-keywords": "^5.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "8.1.1",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
-          "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "espree": {
-      "version": "9.4.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
-      "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
-      "requires": {
-        "acorn": "^8.8.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.3.0"
-      }
-    },
-    "esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
-    },
-    "esquery": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
-      "requires": {
-        "estraverse": "^5.1.0"
-      }
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "requires": {
-        "estraverse": "^5.2.0"
-      }
-    },
-    "estraverse": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
-    },
-    "estree-walker": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
-      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="
-    },
-    "esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
-    },
-    "eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
-    },
-    "events": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
-      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
-    },
-    "execa": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
-      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
-      "requires": {
-        "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"
-      }
-    },
-    "exit": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ=="
-    },
-    "expect": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
-      "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1"
-      }
-    },
-    "express": {
-      "version": "4.18.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
-      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
-      "requires": {
-        "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"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        }
-      }
-    },
-    "extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
-    },
-    "extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
-    },
-    "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=="
-    },
-    "fast-glob": {
-      "version": "3.2.12",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
-      "requires": {
-        "@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"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-          "requires": {
-            "is-glob": "^4.0.1"
-          }
-        }
-      }
-    },
-    "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=="
-    },
-    "fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
-    },
-    "fastq": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
-      "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
-      "requires": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "faye-websocket": {
-      "version": "0.11.4",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
-      "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
-      "requires": {
-        "websocket-driver": ">=0.5.1"
-      }
-    },
-    "fb-watchman": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
-      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
-      "requires": {
-        "bser": "2.1.1"
-      }
-    },
-    "file-entry-cache": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-      "requires": {
-        "flat-cache": "^3.0.4"
-      }
-    },
-    "file-loader": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
-      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
-      "requires": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
-      }
-    },
-    "filelist": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
-      "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
-      "requires": {
-        "minimatch": "^5.0.1"
-      },
-      "dependencies": {
-        "brace-expansion": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-          "requires": {
-            "balanced-match": "^1.0.0"
-          }
-        },
-        "minimatch": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
-          "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        }
-      }
-    },
-    "filesize": {
-      "version": "8.0.7",
-      "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
-      "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ=="
-    },
-    "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==",
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
-    },
-    "finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
-      "requires": {
-        "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"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        }
-      }
-    },
-    "find-cache-dir": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
-      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
-      "requires": {
-        "commondir": "^1.0.1",
-        "make-dir": "^3.0.2",
-        "pkg-dir": "^4.1.0"
-      }
-    },
-    "find-root": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
-      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
-    },
-    "find-up": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-      "requires": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      }
-    },
-    "flat-cache": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
-      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
-      "requires": {
-        "flatted": "^3.1.0",
-        "rimraf": "^3.0.2"
-      }
-    },
-    "flatted": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
-      "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
-    },
-    "follow-redirects": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
-      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
-    },
-    "for-each": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
-      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
-      "requires": {
-        "is-callable": "^1.1.3"
-      }
-    },
-    "forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw=="
-    },
-    "fork-ts-checker-webpack-plugin": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz",
-      "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==",
-      "requires": {
-        "@babel/code-frame": "^7.8.3",
-        "@types/json-schema": "^7.0.5",
-        "chalk": "^4.1.0",
-        "chokidar": "^3.4.2",
-        "cosmiconfig": "^6.0.0",
-        "deepmerge": "^4.2.2",
-        "fs-extra": "^9.0.0",
-        "glob": "^7.1.6",
-        "memfs": "^3.1.2",
-        "minimatch": "^3.0.4",
-        "schema-utils": "2.7.0",
-        "semver": "^7.3.2",
-        "tapable": "^1.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "cosmiconfig": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
-          "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
-          "requires": {
-            "@types/parse-json": "^4.0.0",
-            "import-fresh": "^3.1.0",
-            "parse-json": "^5.0.0",
-            "path-type": "^4.0.0",
-            "yaml": "^1.7.2"
-          }
-        },
-        "fs-extra": {
-          "version": "9.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-          "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-          "requires": {
-            "at-least-node": "^1.0.0",
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^6.0.1",
-            "universalify": "^2.0.0"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "schema-utils": {
-          "version": "2.7.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
-          "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
-          "requires": {
-            "@types/json-schema": "^7.0.4",
-            "ajv": "^6.12.2",
-            "ajv-keywords": "^3.4.1"
-          }
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "tapable": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
-        }
-      }
-    },
-    "form-data": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
-      "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
-      "requires": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "mime-types": "^2.1.12"
-      }
-    },
-    "forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
-    },
-    "fraction.js": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
-      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
-    },
-    "fs-extra": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
-      "requires": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      }
-    },
-    "fs-minipass": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
-      "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
-    "fs-monkey": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
-      "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "optional": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
-    },
-    "function.prototype.name": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      }
-    },
-    "functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
-    },
-    "gauge": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
-      "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
-      "requires": {
-        "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"
-      }
-    },
-    "gaze": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
-      "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
-      "requires": {
-        "globule": "^1.0.0"
-      }
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "get-intrinsic": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
-      "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      }
-    },
-    "get-own-enumerable-property-symbols": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
-      "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="
-    },
-    "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=="
-    },
-    "get-stdin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-      "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw=="
-    },
-    "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=="
-    },
-    "get-symbol-description": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "requires": {
-        "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"
-      }
-    },
-    "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==",
-      "requires": {
-        "is-glob": "^4.0.3"
-      }
-    },
-    "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=="
-    },
-    "global-modules": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
-      "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
-      "requires": {
-        "global-prefix": "^3.0.0"
-      }
-    },
-    "global-prefix": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
-      "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
-      "requires": {
-        "ini": "^1.3.5",
-        "kind-of": "^6.0.2",
-        "which": "^1.3.1"
-      },
-      "dependencies": {
-        "which": {
-          "version": "1.3.1",
-          "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-          "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
-    "globals": {
-      "version": "11.12.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
-    },
-    "globby": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-      "requires": {
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.2.9",
-        "ignore": "^5.2.0",
-        "merge2": "^1.4.1",
-        "slash": "^3.0.0"
-      }
-    },
-    "globule": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz",
-      "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
-      "requires": {
-        "glob": "~7.1.1",
-        "lodash": "^4.17.21",
-        "minimatch": "~3.0.2"
-      },
-      "dependencies": {
-        "glob": {
-          "version": "7.1.7",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "minimatch": {
-          "version": "3.0.8",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
-          "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        }
-      }
-    },
-    "gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "requires": {
-        "get-intrinsic": "^1.1.3"
-      }
-    },
-    "graceful-fs": {
-      "version": "4.2.10",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
-    },
-    "grapheme-splitter": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
-    },
-    "gzip-size": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
-      "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
-      "requires": {
-        "duplexer": "^0.1.2"
-      }
-    },
-    "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=="
-    },
-    "har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q=="
-    },
-    "har-validator": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-      "requires": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      }
-    },
-    "hard-rejection": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
-      "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA=="
-    },
-    "harmony-reflect": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
-      "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g=="
-    },
-    "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-bigints": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
-    },
-    "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=="
-    },
-    "has-property-descriptors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
-      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
-      "requires": {
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
-    },
-    "has-tostringtag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "has-unicode": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
-    },
-    "he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
-    },
-    "hoist-non-react-statics": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
-      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
-      "requires": {
-        "react-is": "^16.7.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "16.13.1",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-          "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-        }
-      }
-    },
-    "hoopy": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
-      "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ=="
-    },
-    "hosted-git-info": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
-      "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
-      "requires": {
-        "lru-cache": "^6.0.0"
-      }
-    },
-    "hpack.js": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
-      "requires": {
-        "inherits": "^2.0.1",
-        "obuf": "^1.0.0",
-        "readable-stream": "^2.0.1",
-        "wbuf": "^1.1.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.7",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-          "requires": {
-            "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"
-          }
-        },
-        "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=="
-        },
-        "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==",
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        }
-      }
-    },
-    "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==",
-      "requires": {
-        "whatwg-encoding": "^1.0.5"
-      }
-    },
-    "html-entities": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
-      "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="
-    },
-    "html-escaper": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
-      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="
-    },
-    "html-minifier-terser": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
-      "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
-      "requires": {
-        "camel-case": "^4.1.2",
-        "clean-css": "^5.2.2",
-        "commander": "^8.3.0",
-        "he": "^1.2.0",
-        "param-case": "^3.0.4",
-        "relateurl": "^0.2.7",
-        "terser": "^5.10.0"
-      }
-    },
-    "html-webpack-plugin": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
-      "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==",
-      "requires": {
-        "@types/html-minifier-terser": "^6.0.0",
-        "html-minifier-terser": "^6.0.2",
-        "lodash": "^4.17.21",
-        "pretty-error": "^4.0.0",
-        "tapable": "^2.0.0"
-      }
-    },
-    "htmlparser2": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
-      }
-    },
-    "http-cache-semantics": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
-      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
-    },
-    "http-deceiver": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="
-    },
-    "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==",
-      "requires": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      }
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "eventemitter3": "^4.0.0",
-        "follow-redirects": "^1.0.0",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "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==",
-      "requires": {
-        "@tootallnate/once": "1",
-        "agent-base": "6",
-        "debug": "4"
-      }
-    },
-    "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==",
-      "requires": {
-        "@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"
-      }
-    },
-    "http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      }
-    },
-    "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==",
-      "requires": {
-        "agent-base": "6",
-        "debug": "4"
-      }
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "ms": "^2.0.0"
-      }
-    },
-    "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==",
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-      }
-    },
-    "icss-utils": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
-      "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
-      "requires": {}
-    },
-    "idb": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
-      "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="
-    },
-    "identity-obj-proxy": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
-      "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==",
-      "requires": {
-        "harmony-reflect": "^1.4.6"
-      }
-    },
-    "ignore": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
-      "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ=="
-    },
-    "immer": {
-      "version": "9.0.16",
-      "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz",
-      "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ=="
-    },
-    "import-fresh": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "requires": {
-        "parent-module": "^1.0.0",
-        "resolve-from": "^4.0.0"
-      },
-      "dependencies": {
-        "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=="
-        }
-      }
-    },
-    "import-local": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
-      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
-      "requires": {
-        "pkg-dir": "^4.2.0",
-        "resolve-cwd": "^3.0.0"
-      }
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
-    },
-    "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=="
-    },
-    "infer-owner": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-    },
-    "ini": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
-      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
-    },
-    "internal-slot": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
-      "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
-      "requires": {
-        "get-intrinsic": "^1.1.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "ip": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
-      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
-    },
-    "ipaddr.js": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
-      "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng=="
-    },
-    "is-arguments": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
-      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
-    },
-    "is-bigint": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "requires": {
-        "has-bigints": "^1.0.1"
-      }
-    },
-    "is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "requires": {
-        "binary-extensions": "^2.0.0"
-      }
-    },
-    "is-boolean-object": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-callable": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
-      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
-    },
-    "is-core-module": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-docker": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
-      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
-    },
-    "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=="
-    },
-    "is-generator-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
-      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ=="
-    },
-    "is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-lambda": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
-      "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
-    },
-    "is-map": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
-      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg=="
-    },
-    "is-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
-      "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
-    },
-    "is-negative-zero": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
-    },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
-    },
-    "is-number-object": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
-      "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="
-    },
-    "is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-regexp": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
-      "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA=="
-    },
-    "is-root": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
-      "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg=="
-    },
-    "is-set": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
-      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g=="
-    },
-    "is-shared-array-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "is-stream": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
-    },
-    "is-string": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "is-typed-array": {
-      "version": "1.1.10",
-      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
-      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
-      "requires": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
-    },
-    "is-weakmap": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
-      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA=="
-    },
-    "is-weakref": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "is-weakset": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
-      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "is-wsl": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-      "requires": {
-        "is-docker": "^2.0.0"
-      }
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "@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"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "istanbul-lib-report": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
-      "requires": {
-        "istanbul-lib-coverage": "^3.0.0",
-        "make-dir": "^3.0.0",
-        "supports-color": "^7.1.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "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==",
-      "requires": {
-        "debug": "^4.1.1",
-        "istanbul-lib-coverage": "^3.0.0",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "istanbul-reports": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
-      "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
-      "requires": {
-        "html-escaper": "^2.0.0",
-        "istanbul-lib-report": "^3.0.0"
-      }
-    },
-    "jake": {
-      "version": "10.8.5",
-      "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
-      "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
-      "requires": {
-        "async": "^3.2.3",
-        "chalk": "^4.0.2",
-        "filelist": "^1.0.1",
-        "minimatch": "^3.0.4"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
-      "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
-      "requires": {
-        "@jest/core": "^27.5.1",
-        "import-local": "^3.0.2",
-        "jest-cli": "^27.5.1"
-      }
-    },
-    "jest-changed-files": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
-      "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "execa": "^5.0.0",
-        "throat": "^6.0.1"
-      }
-    },
-    "jest-circus": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
-      "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
-      "requires": {
-        "@jest/environment": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "co": "^4.6.0",
-        "dedent": "^0.7.0",
-        "expect": "^27.5.1",
-        "is-generator-fn": "^2.0.0",
-        "jest-each": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "pretty-format": "^27.5.1",
-        "slash": "^3.0.0",
-        "stack-utils": "^2.0.3",
-        "throat": "^6.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-cli": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
-      "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
-      "requires": {
-        "@jest/core": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.2.9",
-        "import-local": "^3.0.2",
-        "jest-config": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "prompts": "^2.0.1",
-        "yargs": "^16.2.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-config": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
-      "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
-      "requires": {
-        "@babel/core": "^7.8.0",
-        "@jest/test-sequencer": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "babel-jest": "^27.5.1",
-        "chalk": "^4.0.0",
-        "ci-info": "^3.2.0",
-        "deepmerge": "^4.2.2",
-        "glob": "^7.1.1",
-        "graceful-fs": "^4.2.9",
-        "jest-circus": "^27.5.1",
-        "jest-environment-jsdom": "^27.5.1",
-        "jest-environment-node": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "jest-jasmine2": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-runner": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "parse-json": "^5.2.0",
-        "pretty-format": "^27.5.1",
-        "slash": "^3.0.0",
-        "strip-json-comments": "^3.1.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-diff": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
-      "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
-      "requires": {
-        "chalk": "^4.0.0",
-        "diff-sequences": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-docblock": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
-      "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
-      "requires": {
-        "detect-newline": "^3.0.0"
-      }
-    },
-    "jest-each": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
-      "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "jest-get-type": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-environment-jsdom": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
-      "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
-      "requires": {
-        "@jest/environment": "^27.5.1",
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "jest-mock": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jsdom": "^16.6.0"
-      }
-    },
-    "jest-environment-node": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
-      "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
-      "requires": {
-        "@jest/environment": "^27.5.1",
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "jest-mock": "^27.5.1",
-        "jest-util": "^27.5.1"
-      }
-    },
-    "jest-get-type": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
-      "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw=="
-    },
-    "jest-haste-map": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
-      "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "@types/graceful-fs": "^4.1.2",
-        "@types/node": "*",
-        "anymatch": "^3.0.3",
-        "fb-watchman": "^2.0.0",
-        "fsevents": "^2.3.2",
-        "graceful-fs": "^4.2.9",
-        "jest-regex-util": "^27.5.1",
-        "jest-serializer": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-worker": "^27.5.1",
-        "micromatch": "^4.0.4",
-        "walker": "^1.0.7"
-      }
-    },
-    "jest-jasmine2": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
-      "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
-      "requires": {
-        "@jest/environment": "^27.5.1",
-        "@jest/source-map": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "co": "^4.6.0",
-        "expect": "^27.5.1",
-        "is-generator-fn": "^2.0.0",
-        "jest-each": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "pretty-format": "^27.5.1",
-        "throat": "^6.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-leak-detector": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
-      "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
-      "requires": {
-        "jest-get-type": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      }
-    },
-    "jest-matcher-utils": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
-      "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
-      "requires": {
-        "chalk": "^4.0.0",
-        "jest-diff": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "pretty-format": "^27.5.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-message-util": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
-      "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
-      "requires": {
-        "@babel/code-frame": "^7.12.13",
-        "@jest/types": "^27.5.1",
-        "@types/stack-utils": "^2.0.0",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.9",
-        "micromatch": "^4.0.4",
-        "pretty-format": "^27.5.1",
-        "slash": "^3.0.0",
-        "stack-utils": "^2.0.3"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-mock": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
-      "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "@types/node": "*"
-      }
-    },
-    "jest-pnp-resolver": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
-      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
-      "requires": {}
-    },
-    "jest-regex-util": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
-      "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg=="
-    },
-    "jest-resolve": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
-      "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-pnp-resolver": "^1.2.2",
-        "jest-util": "^27.5.1",
-        "jest-validate": "^27.5.1",
-        "resolve": "^1.20.0",
-        "resolve.exports": "^1.1.0",
-        "slash": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-resolve-dependencies": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
-      "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-snapshot": "^27.5.1"
-      }
-    },
-    "jest-runner": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
-      "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
-      "requires": {
-        "@jest/console": "^27.5.1",
-        "@jest/environment": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "emittery": "^0.8.1",
-        "graceful-fs": "^4.2.9",
-        "jest-docblock": "^27.5.1",
-        "jest-environment-jsdom": "^27.5.1",
-        "jest-environment-node": "^27.5.1",
-        "jest-haste-map": "^27.5.1",
-        "jest-leak-detector": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-runtime": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "jest-worker": "^27.5.1",
-        "source-map-support": "^0.5.6",
-        "throat": "^6.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-runtime": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
-      "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
-      "requires": {
-        "@jest/environment": "^27.5.1",
-        "@jest/fake-timers": "^27.5.1",
-        "@jest/globals": "^27.5.1",
-        "@jest/source-map": "^27.5.1",
-        "@jest/test-result": "^27.5.1",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "chalk": "^4.0.0",
-        "cjs-module-lexer": "^1.0.0",
-        "collect-v8-coverage": "^1.0.0",
-        "execa": "^5.0.0",
-        "glob": "^7.1.3",
-        "graceful-fs": "^4.2.9",
-        "jest-haste-map": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-mock": "^27.5.1",
-        "jest-regex-util": "^27.5.1",
-        "jest-resolve": "^27.5.1",
-        "jest-snapshot": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "slash": "^3.0.0",
-        "strip-bom": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-serializer": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
-      "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
-      "requires": {
-        "@types/node": "*",
-        "graceful-fs": "^4.2.9"
-      }
-    },
-    "jest-snapshot": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
-      "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
-      "requires": {
-        "@babel/core": "^7.7.2",
-        "@babel/generator": "^7.7.2",
-        "@babel/plugin-syntax-typescript": "^7.7.2",
-        "@babel/traverse": "^7.7.2",
-        "@babel/types": "^7.0.0",
-        "@jest/transform": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/babel__traverse": "^7.0.4",
-        "@types/prettier": "^2.1.5",
-        "babel-preset-current-node-syntax": "^1.0.0",
-        "chalk": "^4.0.0",
-        "expect": "^27.5.1",
-        "graceful-fs": "^4.2.9",
-        "jest-diff": "^27.5.1",
-        "jest-get-type": "^27.5.1",
-        "jest-haste-map": "^27.5.1",
-        "jest-matcher-utils": "^27.5.1",
-        "jest-message-util": "^27.5.1",
-        "jest-util": "^27.5.1",
-        "natural-compare": "^1.4.0",
-        "pretty-format": "^27.5.1",
-        "semver": "^7.3.2"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-util": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
-      "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "ci-info": "^3.2.0",
-        "graceful-fs": "^4.2.9",
-        "picomatch": "^2.2.3"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-validate": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
-      "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
-      "requires": {
-        "@jest/types": "^27.5.1",
-        "camelcase": "^6.2.0",
-        "chalk": "^4.0.0",
-        "jest-get-type": "^27.5.1",
-        "leven": "^3.1.0",
-        "pretty-format": "^27.5.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-watch-typeahead": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz",
-      "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==",
-      "requires": {
-        "ansi-escapes": "^4.3.1",
-        "chalk": "^4.0.0",
-        "jest-regex-util": "^28.0.0",
-        "jest-watcher": "^28.0.0",
-        "slash": "^4.0.0",
-        "string-length": "^5.0.1",
-        "strip-ansi": "^7.0.1"
-      },
-      "dependencies": {
-        "@jest/console": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz",
-          "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==",
-          "requires": {
-            "@jest/types": "^28.1.3",
-            "@types/node": "*",
-            "chalk": "^4.0.0",
-            "jest-message-util": "^28.1.3",
-            "jest-util": "^28.1.3",
-            "slash": "^3.0.0"
-          },
-          "dependencies": {
-            "slash": {
-              "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-              "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-            }
-          }
-        },
-        "@jest/test-result": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz",
-          "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==",
-          "requires": {
-            "@jest/console": "^28.1.3",
-            "@jest/types": "^28.1.3",
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "collect-v8-coverage": "^1.0.0"
-          }
-        },
-        "@jest/types": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz",
-          "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==",
-          "requires": {
-            "@jest/schemas": "^28.1.3",
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^3.0.0",
-            "@types/node": "*",
-            "@types/yargs": "^17.0.8",
-            "chalk": "^4.0.0"
-          }
-        },
-        "@types/yargs": {
-          "version": "17.0.13",
-          "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz",
-          "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==",
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "emittery": {
-          "version": "0.10.2",
-          "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz",
-          "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "jest-message-util": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz",
-          "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==",
-          "requires": {
-            "@babel/code-frame": "^7.12.13",
-            "@jest/types": "^28.1.3",
-            "@types/stack-utils": "^2.0.0",
-            "chalk": "^4.0.0",
-            "graceful-fs": "^4.2.9",
-            "micromatch": "^4.0.4",
-            "pretty-format": "^28.1.3",
-            "slash": "^3.0.0",
-            "stack-utils": "^2.0.3"
-          },
-          "dependencies": {
-            "slash": {
-              "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-              "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-            }
-          }
-        },
-        "jest-regex-util": {
-          "version": "28.0.2",
-          "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz",
-          "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw=="
-        },
-        "jest-util": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz",
-          "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==",
-          "requires": {
-            "@jest/types": "^28.1.3",
-            "@types/node": "*",
-            "chalk": "^4.0.0",
-            "ci-info": "^3.2.0",
-            "graceful-fs": "^4.2.9",
-            "picomatch": "^2.2.3"
-          }
-        },
-        "jest-watcher": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz",
-          "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==",
-          "requires": {
-            "@jest/test-result": "^28.1.3",
-            "@jest/types": "^28.1.3",
-            "@types/node": "*",
-            "ansi-escapes": "^4.2.1",
-            "chalk": "^4.0.0",
-            "emittery": "^0.10.2",
-            "jest-util": "^28.1.3",
-            "string-length": "^4.0.1"
-          },
-          "dependencies": {
-            "string-length": {
-              "version": "4.0.2",
-              "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
-              "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
-              "requires": {
-                "char-regex": "^1.0.2",
-                "strip-ansi": "^6.0.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "6.0.1",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-              "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-              "requires": {
-                "ansi-regex": "^5.0.1"
-              }
-            }
-          }
-        },
-        "pretty-format": {
-          "version": "28.1.3",
-          "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz",
-          "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==",
-          "requires": {
-            "@jest/schemas": "^28.1.3",
-            "ansi-regex": "^5.0.1",
-            "ansi-styles": "^5.0.0",
-            "react-is": "^18.0.0"
-          },
-          "dependencies": {
-            "ansi-styles": {
-              "version": "5.2.0",
-              "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
-              "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="
-            }
-          }
-        },
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        },
-        "slash": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
-          "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew=="
-        },
-        "string-length": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz",
-          "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==",
-          "requires": {
-            "char-regex": "^2.0.0",
-            "strip-ansi": "^7.0.1"
-          },
-          "dependencies": {
-            "char-regex": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz",
-              "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw=="
-            }
-          }
-        },
-        "strip-ansi": {
-          "version": "7.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
-          "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          },
-          "dependencies": {
-            "ansi-regex": {
-              "version": "6.0.1",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-              "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
-            }
-          }
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-watcher": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
-      "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
-      "requires": {
-        "@jest/test-result": "^27.5.1",
-        "@jest/types": "^27.5.1",
-        "@types/node": "*",
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.0.0",
-        "jest-util": "^27.5.1",
-        "string-length": "^4.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
+    "chalk": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       }
     },
-    "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==",
+    "char-regex": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+      "dev": true
+    },
+    "chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
       "requires": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^8.0.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "supports-color": {
-          "version": "8.1.1",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
-          "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
       }
     },
-    "js-base64": {
-      "version": "2.6.4",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
-      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
-    },
-    "js-sdsl": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz",
-      "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q=="
+    "ci-info": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+      "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+      "dev": true
     },
-    "js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+    "cjs-module-lexer": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
+      "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+      "dev": true
     },
-    "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==",
+    "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,
       "requires": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.1",
+        "wrap-ansi": "^7.0.0"
       }
     },
-    "jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
+    "co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+      "dev": true
     },
-    "jsdom": {
-      "version": "16.7.0",
-      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
-      "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+    "collect-v8-coverage": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
+      "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+      "dev": true
+    },
+    "color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
       "requires": {
-        "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"
+        "color-name": "~1.1.4"
       }
     },
-    "jsesc": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
-    },
-    "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=="
+    "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
     },
-    "json-schema": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
-      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
+    "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,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
     },
-    "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=="
+    "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
     },
-    "json-stable-stringify-without-jsonify": {
+    "commondir": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+      "dev": true
     },
-    "json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
     },
-    "json5": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
-      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
+    "convert-source-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+      "dev": true
     },
-    "jsonfile": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+    "cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
       "requires": {
-        "graceful-fs": "^4.1.6",
-        "universalify": "^2.0.0"
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
       }
     },
-    "jsonpointer": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
-      "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="
+    "css.escape": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+      "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
+      "dev": true
+    },
+    "cssom": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+      "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
+      "dev": true
+    },
+    "cssstyle": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+      "dev": true,
+      "requires": {
+        "cssom": "~0.3.6"
+      },
+      "dependencies": {
+        "cssom": {
+          "version": "0.3.8",
+          "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+          "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+          "dev": true
+        }
+      }
     },
-    "jsprim": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
-      "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+    "data-urls": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+      "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
+      "dev": true,
       "requires": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.4.0",
-        "verror": "1.10.0"
+        "abab": "^2.0.6",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^11.0.0"
       }
     },
-    "jsx-ast-utils": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
-      "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
       "requires": {
-        "array-includes": "^3.1.5",
-        "object.assign": "^4.1.3"
+        "ms": "2.1.2"
       }
     },
-    "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=="
+    "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
     },
-    "kleur": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
+    "dedent": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+      "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+      "dev": true
     },
-    "klona": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz",
-      "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ=="
+    "deep-equal": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz",
+      "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "es-get-iterator": "^1.1.2",
+        "get-intrinsic": "^1.1.3",
+        "is-arguments": "^1.1.1",
+        "is-array-buffer": "^3.0.1",
+        "is-date-object": "^1.0.5",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.2",
+        "isarray": "^2.0.5",
+        "object-is": "^1.1.5",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.4",
+        "regexp.prototype.flags": "^1.4.3",
+        "side-channel": "^1.0.4",
+        "which-boxed-primitive": "^1.0.2",
+        "which-collection": "^1.0.1",
+        "which-typed-array": "^1.1.9"
+      }
     },
-    "language-subtag-registry": {
-      "version": "0.3.22",
-      "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
-      "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w=="
+    "deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
     },
-    "language-tags": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
-      "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==",
+    "deepmerge": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+      "dev": true
+    },
+    "define-properties": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+      "dev": true,
       "requires": {
-        "language-subtag-registry": "~0.3.2"
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
       }
     },
-    "leven": {
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "dev": true
+    },
+    "detect-newline": {
       "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
-      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
+      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+      "dev": true
     },
-    "levn": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+    "diff-sequences": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
+      "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+      "dev": true
+    },
+    "dom-accessibility-api": {
+      "version": "0.5.16",
+      "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+      "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+      "dev": true
+    },
+    "domexception": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+      "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+      "dev": true,
       "requires": {
-        "prelude-ls": "^1.2.1",
-        "type-check": "~0.4.0"
+        "webidl-conversions": "^7.0.0"
       }
     },
-    "lilconfig": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
-      "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg=="
+    "electron-to-chromium": {
+      "version": "1.4.339",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.339.tgz",
+      "integrity": "sha512-MSXHBJGcbBydq/DQDlpBeUKnJ6C7aTiNCTRpfDV5Iz0sNr/Ng6RJFloq82AAicp/SrmDq4zF6XsKG0B8Xwn1UQ==",
+      "dev": true
     },
-    "lines-and-columns": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
-      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+    "emittery": {
+      "version": "0.13.1",
+      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+      "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+      "dev": true
     },
-    "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=="
+    "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
     },
-    "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==",
+    "entities": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
+      "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
+      "dev": true
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
       "requires": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^2.1.2"
+        "is-arrayish": "^0.2.1"
       }
     },
-    "locate-path": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+    "es-get-iterator": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+      "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.3",
+        "has-symbols": "^1.0.3",
+        "is-arguments": "^1.1.1",
+        "is-map": "^2.0.2",
+        "is-set": "^2.0.2",
+        "is-string": "^1.0.7",
+        "isarray": "^2.0.5",
+        "stop-iteration-iterator": "^1.0.0"
+      }
+    },
+    "escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+      "dev": true
+    },
+    "escodegen": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+      "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+      "dev": true,
       "requires": {
-        "p-locate": "^5.0.0"
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
       }
     },
-    "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    "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
     },
-    "lodash.debounce": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+    "estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true
     },
-    "lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "dev": true
     },
-    "lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
     },
-    "lodash.sortby": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-      "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="
+    "execa": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+      "dev": true,
+      "requires": {
+        "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"
+      }
     },
-    "lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
+    "exit": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+      "dev": true
     },
-    "loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+    "expect": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
+      "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
+      "dev": true,
       "requires": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
+        "@jest/expect-utils": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "jest-matcher-utils": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0"
       }
     },
-    "lower-case": {
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "fb-watchman": {
       "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
-      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+      "dev": true,
       "requires": {
-        "tslib": "^2.0.3"
+        "bser": "2.1.1"
       }
     },
-    "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==",
+    "fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
       "requires": {
-        "yallist": "^4.0.0"
+        "to-regex-range": "^5.0.1"
       }
     },
-    "lz-string": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
-      "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ=="
-    },
-    "magic-string": {
-      "version": "0.25.9",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
-      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+    "find-cache-dir": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+      "dev": true,
       "requires": {
-        "sourcemap-codec": "^1.4.8"
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
       }
     },
-    "make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+    "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,
       "requires": {
-        "semver": "^6.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
       }
     },
-    "makeerror": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
-      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+    "for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "dev": true,
       "requires": {
-        "tmpl": "1.0.5"
+        "is-callable": "^1.1.3"
       }
     },
-    "map-obj": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
-      "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ=="
-    },
-    "mdn-data": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
-      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA=="
-    },
-    "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=="
-    },
-    "memfs": {
-      "version": "3.4.11",
-      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz",
-      "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==",
+    "form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dev": true,
       "requires": {
-        "fs-monkey": "^1.0.3"
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
       }
     },
-    "meow": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
-      "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
+    "fs-extra": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+      "dev": true,
       "requires": {
-        "@types/minimist": "^1.2.0",
-        "camelcase-keys": "^6.2.2",
-        "decamelize": "^1.2.0",
-        "decamelize-keys": "^1.1.0",
-        "hard-rejection": "^2.1.0",
-        "minimist-options": "4.1.0",
-        "normalize-package-data": "^3.0.0",
-        "read-pkg-up": "^7.0.1",
-        "redent": "^3.0.0",
-        "trim-newlines": "^3.0.0",
-        "type-fest": "^0.18.0",
-        "yargs-parser": "^20.2.3"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.18.1",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
-          "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw=="
-        }
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
       }
     },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
-    },
-    "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=="
+    "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
     },
-    "merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+    "fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "optional": true
     },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
     },
-    "micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
-      "requires": {
-        "braces": "^3.0.2",
-        "picomatch": "^2.3.1"
-      }
+    "functions-have-names": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+      "dev": true
     },
-    "mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+    "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
     },
-    "mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+    "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
     },
-    "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==",
+    "get-intrinsic": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
+      "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
+      "dev": true,
       "requires": {
-        "mime-db": "1.52.0"
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.3"
       }
     },
-    "mimic-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+    "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
     },
-    "min-indent": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
-      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
+    "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
     },
-    "mini-css-extract-plugin": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz",
-      "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==",
+    "glob": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "dev": true,
       "requires": {
-        "schema-utils": "^4.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-          "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "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==",
-          "requires": {
-            "fast-deep-equal": "^3.1.3"
-          }
-        },
-        "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=="
-        },
-        "schema-utils": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-          "requires": {
-            "@types/json-schema": "^7.0.9",
-            "ajv": "^8.8.0",
-            "ajv-formats": "^2.1.1",
-            "ajv-keywords": "^5.0.0"
-          }
-        }
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
       }
     },
-    "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=="
-    },
-    "minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
       "requires": {
-        "brace-expansion": "^1.1.7"
+        "is-glob": "^4.0.1"
       }
     },
-    "minimist": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
+    "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
     },
-    "minimist-options": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
-      "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+    "gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dev": true,
       "requires": {
-        "arrify": "^1.0.1",
-        "is-plain-obj": "^1.1.0",
-        "kind-of": "^6.0.3"
-      },
-      "dependencies": {
-        "is-plain-obj": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-          "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg=="
-        }
+        "get-intrinsic": "^1.1.3"
       }
     },
-    "minipass": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
-      "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
+    "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
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
       "requires": {
-        "yallist": "^4.0.0"
+        "function-bind": "^1.1.1"
       }
     },
-    "minipass-collect": {
+    "has-bigints": {
       "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
-      "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+      "dev": true
+    },
+    "has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true
+    },
+    "has-property-descriptors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+      "dev": true,
       "requires": {
-        "minipass": "^3.0.0"
+        "get-intrinsic": "^1.1.1"
       }
     },
-    "minipass-fetch": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
-      "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
-      "requires": {
-        "encoding": "^0.1.12",
-        "minipass": "^3.1.0",
-        "minipass-sized": "^1.0.3",
-        "minizlib": "^2.0.0"
-      }
+    "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
     },
-    "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==",
+    "has-tostringtag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+      "dev": true,
       "requires": {
-        "minipass": "^3.0.0"
+        "has-symbols": "^1.0.2"
       }
     },
-    "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==",
+    "html-encoding-sniffer": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+      "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+      "dev": true,
       "requires": {
-        "minipass": "^3.0.0"
+        "whatwg-encoding": "^2.0.0"
       }
     },
-    "minipass-sized": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
-      "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+    "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
+    },
+    "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,
       "requires": {
-        "minipass": "^3.0.0"
+        "@tootallnate/once": "2",
+        "agent-base": "6",
+        "debug": "4"
       }
     },
-    "minizlib": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-      "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+    "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,
       "requires": {
-        "minipass": "^3.0.0",
-        "yallist": "^4.0.0"
+        "agent-base": "6",
+        "debug": "4"
       }
     },
-    "mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+    "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
+    },
+    "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,
       "requires": {
-        "minimist": "^1.2.6"
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
       }
     },
-    "ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+    "immutable": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
+      "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
+      "dev": true
     },
-    "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==",
+    "import-local": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+      "dev": true,
       "requires": {
-        "dns-packet": "^5.2.2",
-        "thunky": "^1.0.2"
+        "pkg-dir": "^4.2.0",
+        "resolve-cwd": "^3.0.0"
       }
     },
-    "nan": {
-      "version": "2.17.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
-      "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true
     },
-    "nanoid": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
-      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+    "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
     },
-    "natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
+    "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,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
     },
-    "natural-compare-lite": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
-      "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g=="
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
     },
-    "negotiator": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
-    },
-    "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=="
-    },
-    "no-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
-      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+    "internal-slot": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+      "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
+      "dev": true,
       "requires": {
-        "lower-case": "^2.0.2",
-        "tslib": "^2.0.3"
+        "get-intrinsic": "^1.2.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
       }
     },
-    "node-forge": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
-      "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
-    },
-    "node-gyp": {
-      "version": "8.4.1",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz",
-      "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==",
+    "is-arguments": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+      "dev": true,
       "requires": {
-        "env-paths": "^2.2.0",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.6",
-        "make-fetch-happen": "^9.1.0",
-        "nopt": "^5.0.0",
-        "npmlog": "^6.0.0",
-        "rimraf": "^3.0.2",
-        "semver": "^7.3.5",
-        "tar": "^6.1.2",
-        "which": "^2.0.2"
-      },
-      "dependencies": {
-        "make-fetch-happen": {
-          "version": "9.1.0",
-          "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
-          "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
-          "requires": {
-            "agentkeepalive": "^4.1.3",
-            "cacache": "^15.2.0",
-            "http-cache-semantics": "^4.1.0",
-            "http-proxy-agent": "^4.0.1",
-            "https-proxy-agent": "^5.0.0",
-            "is-lambda": "^1.0.1",
-            "lru-cache": "^6.0.0",
-            "minipass": "^3.1.3",
-            "minipass-collect": "^1.0.2",
-            "minipass-fetch": "^1.3.2",
-            "minipass-flush": "^1.0.5",
-            "minipass-pipeline": "^1.2.4",
-            "negotiator": "^0.6.2",
-            "promise-retry": "^2.0.1",
-            "socks-proxy-agent": "^6.0.0",
-            "ssri": "^8.0.0"
-          }
-        }
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "node-int64": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
-      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
+    "is-array-buffer": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.0",
+        "is-typed-array": "^1.1.10"
+      }
     },
-    "node-releases": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
-      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
+    "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-sass": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.3.tgz",
-      "integrity": "sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==",
+    "is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "dev": true,
       "requires": {
-        "async-foreach": "^0.1.3",
-        "chalk": "^4.1.2",
-        "cross-spawn": "^7.0.3",
-        "gaze": "^1.0.0",
-        "get-stdin": "^4.0.1",
-        "glob": "^7.0.3",
-        "lodash": "^4.17.15",
-        "meow": "^9.0.0",
-        "nan": "^2.13.2",
-        "node-gyp": "^8.4.1",
-        "npmlog": "^5.0.0",
-        "request": "^2.88.0",
-        "sass-graph": "^4.0.1",
-        "stdout-stream": "^1.4.0",
-        "true-case-path": "^1.0.2"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "are-we-there-yet": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
-          "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
-          "requires": {
-            "delegates": "^1.0.0",
-            "readable-stream": "^3.6.0"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "gauge": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
-          "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
-          "requires": {
-            "aproba": "^1.0.3 || ^2.0.0",
-            "color-support": "^1.1.2",
-            "console-control-strings": "^1.0.0",
-            "has-unicode": "^2.0.1",
-            "object-assign": "^4.1.1",
-            "signal-exit": "^3.0.0",
-            "string-width": "^4.2.3",
-            "strip-ansi": "^6.0.1",
-            "wide-align": "^1.1.2"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "npmlog": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
-          "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
-          "requires": {
-            "are-we-there-yet": "^2.0.0",
-            "console-control-strings": "^1.1.0",
-            "gauge": "^3.0.0",
-            "set-blocking": "^2.0.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
+        "has-bigints": "^1.0.1"
       }
     },
-    "nopt": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
-      "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
       "requires": {
-        "abbrev": "1"
+        "binary-extensions": "^2.0.0"
       }
     },
-    "normalize-package-data": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
-      "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+    "is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "dev": true,
       "requires": {
-        "hosted-git-info": "^4.0.1",
-        "is-core-module": "^2.5.0",
-        "semver": "^7.3.4",
-        "validate-npm-package-license": "^3.0.1"
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
-    },
-    "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=="
-    },
-    "normalize-url": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
-      "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
-    },
-    "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==",
+    "is-builtin-module": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+      "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+      "dev": true,
       "requires": {
-        "path-key": "^3.0.0"
+        "builtin-modules": "^3.3.0"
       }
     },
-    "npmlog": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
-      "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+    "is-callable": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+      "dev": true
+    },
+    "is-core-module": {
+      "version": "2.11.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+      "dev": true,
       "requires": {
-        "are-we-there-yet": "^3.0.0",
-        "console-control-strings": "^1.1.0",
-        "gauge": "^4.0.3",
-        "set-blocking": "^2.0.0"
+        "has": "^1.0.3"
       }
     },
-    "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==",
+    "is-date-object": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+      "dev": true,
       "requires": {
-        "boolbase": "^1.0.0"
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "nwsapi": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz",
-      "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw=="
-    },
-    "oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
-    },
-    "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=="
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true
     },
-    "object-hash": {
+    "is-fullwidth-code-point": {
       "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
-      "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="
+      "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
     },
-    "object-inspect": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
+    "is-generator-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+      "dev": true
     },
-    "object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
       "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
+        "is-extglob": "^2.1.1"
       }
     },
-    "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
-    },
-    "object.assign": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      }
+    "is-map": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+      "dev": true
     },
-    "object.entries": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
-      "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
+    "is-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+      "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
+      "dev": true
     },
-    "object.fromentries": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
-      "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
+    "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
     },
-    "object.getownpropertydescriptors": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz",
-      "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==",
+    "is-number-object": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+      "dev": true,
       "requires": {
-        "array.prototype.reduce": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "object.hasown": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
-      "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
+    "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
+    },
+    "is-reference": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
+      "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+      "dev": true,
       "requires": {
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
+        "@types/estree": "*"
       }
     },
-    "object.values": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
-      "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
+    "is-regex": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "obuf": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
-      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+    "is-set": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+      "dev": true
     },
-    "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==",
+    "is-shared-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+      "dev": true,
       "requires": {
-        "ee-first": "1.1.1"
+        "call-bind": "^1.0.2"
       }
     },
-    "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=="
+    "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
     },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+    "is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+      "dev": true,
       "requires": {
-        "wrappy": "1"
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "onetime": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+    "is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+      "dev": true,
       "requires": {
-        "mimic-fn": "^2.1.0"
+        "has-symbols": "^1.0.2"
       }
     },
-    "open": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
-      "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+    "is-typed-array": {
+      "version": "1.1.10",
+      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+      "dev": true,
       "requires": {
-        "define-lazy-prop": "^2.0.0",
-        "is-docker": "^2.1.1",
-        "is-wsl": "^2.2.0"
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.2",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "optionator": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
-      "requires": {
-        "deep-is": "^0.1.3",
-        "fast-levenshtein": "^2.0.6",
-        "levn": "^0.4.1",
-        "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0",
-        "word-wrap": "^1.2.3"
-      }
+    "is-weakmap": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+      "dev": true
     },
-    "p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+    "is-weakset": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+      "dev": true,
       "requires": {
-        "yocto-queue": "^0.1.0"
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
       }
     },
-    "p-locate": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-      "requires": {
-        "p-limit": "^3.0.2"
-      }
+    "isarray": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+      "dev": true
     },
-    "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==",
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "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
+    },
+    "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,
       "requires": {
-        "aggregate-error": "^3.0.0"
+        "@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"
       }
     },
-    "p-retry": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
-      "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
+    "istanbul-lib-report": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+      "dev": true,
       "requires": {
-        "@types/retry": "0.12.0",
-        "retry": "^0.13.1"
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^3.0.0",
+        "supports-color": "^7.1.0"
       }
     },
-    "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=="
-    },
-    "param-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
-      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+    "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,
       "requires": {
-        "dot-case": "^3.0.4",
-        "tslib": "^2.0.3"
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
       }
     },
-    "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==",
+    "istanbul-reports": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+      "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+      "dev": true,
       "requires": {
-        "callsites": "^3.0.0"
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
       }
     },
-    "parse-json": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
-      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+    "jest": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
+      "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
+      "dev": true,
       "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "error-ex": "^1.3.1",
-        "json-parse-even-better-errors": "^2.3.0",
-        "lines-and-columns": "^1.1.6"
+        "@jest/core": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "import-local": "^3.0.2",
+        "jest-cli": "^29.5.0"
       }
     },
-    "parse5": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
-      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
-    },
-    "parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
-    },
-    "pascal-case": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
-      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+    "jest-changed-files": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
+      "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
+      "dev": true,
       "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
+        "execa": "^5.0.0",
+        "p-limit": "^3.1.0"
       }
     },
-    "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=="
-    },
-    "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=="
-    },
-    "path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
-    },
-    "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=="
-    },
-    "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=="
-    },
-    "path-type": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
-    },
-    "performance-now": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
-    },
-    "picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
-    },
-    "picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
-    },
-    "pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
+    "jest-circus": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
+      "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
+      "dev": true,
+      "requires": {
+        "@jest/environment": "^29.5.0",
+        "@jest/expect": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "dedent": "^0.7.0",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^29.5.0",
+        "jest-matcher-utils": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-runtime": "^29.5.0",
+        "jest-snapshot": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "p-limit": "^3.1.0",
+        "pretty-format": "^29.5.0",
+        "pure-rand": "^6.0.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
+      }
     },
-    "pirates": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
-      "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ=="
+    "jest-cli": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
+      "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
+      "dev": true,
+      "requires": {
+        "@jest/core": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "import-local": "^3.0.2",
+        "jest-config": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "prompts": "^2.0.1",
+        "yargs": "^17.3.1"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
+      }
     },
-    "pkg-dir": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-      "requires": {
-        "find-up": "^4.0.0"
+    "jest-config": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
+      "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.11.6",
+        "@jest/test-sequencer": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "babel-jest": "^29.5.0",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "deepmerge": "^4.2.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-circus": "^29.5.0",
+        "jest-environment-node": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "jest-regex-util": "^29.4.3",
+        "jest-resolve": "^29.5.0",
+        "jest-runner": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "parse-json": "^5.2.0",
+        "pretty-format": "^29.5.0",
+        "slash": "^3.0.0",
+        "strip-json-comments": "^3.1.1"
       },
       "dependencies": {
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+        "brace-expansion": {
+          "version": "1.1.11",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+          "dev": true,
           "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
           }
         },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
           "requires": {
-            "p-locate": "^4.1.0"
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
           }
         },
-        "p-limit": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
           "requires": {
-            "p-try": "^2.0.0"
+            "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"
           }
         },
-        "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==",
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
           "requires": {
-            "p-limit": "^2.2.0"
+            "brace-expansion": "^1.1.7"
           }
         }
       }
     },
-    "pkg-up": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
-      "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+    "jest-diff": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
+      "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
+      "dev": true,
       "requires": {
-        "find-up": "^3.0.0"
+        "chalk": "^4.0.0",
+        "diff-sequences": "^29.4.3",
+        "jest-get-type": "^29.4.3",
+        "pretty-format": "^29.5.0"
       },
       "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-limit": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
           "requires": {
-            "p-limit": "^2.0.0"
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
           }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="
         }
       }
     },
-    "postcss": {
-      "version": "8.4.19",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
-      "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
+    "jest-docblock": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
+      "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
+      "dev": true,
       "requires": {
-        "nanoid": "^3.3.4",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
+        "detect-newline": "^3.0.0"
       }
     },
-    "postcss-attribute-case-insensitive": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz",
-      "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==",
+    "jest-each": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
+      "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.10"
+        "@jest/types": "^29.5.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.4.3",
+        "jest-util": "^29.5.0",
+        "pretty-format": "^29.5.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "postcss-browser-comments": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz",
-      "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==",
-      "requires": {}
+    "jest-environment-jsdom": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.5.0.tgz",
+      "integrity": "sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==",
+      "dev": true,
+      "requires": {
+        "@jest/environment": "^29.5.0",
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/jsdom": "^20.0.0",
+        "@types/node": "*",
+        "jest-mock": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jsdom": "^20.0.0"
+      }
     },
-    "postcss-calc": {
-      "version": "8.2.4",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
-      "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
-      "requires": {
-        "postcss-selector-parser": "^6.0.9",
-        "postcss-value-parser": "^4.2.0"
+    "jest-environment-node": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
+      "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+      "dev": true,
+      "requires": {
+        "@jest/environment": "^29.5.0",
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "jest-mock": "^29.5.0",
+        "jest-util": "^29.5.0"
       }
     },
-    "postcss-clamp": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
-      "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
+    "jest-get-type": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
+      "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
+      "dev": true
+    },
+    "jest-haste-map": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
+      "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "@jest/types": "^29.5.0",
+        "@types/graceful-fs": "^4.1.3",
+        "@types/node": "*",
+        "anymatch": "^3.0.3",
+        "fb-watchman": "^2.0.0",
+        "fsevents": "^2.3.2",
+        "graceful-fs": "^4.2.9",
+        "jest-regex-util": "^29.4.3",
+        "jest-util": "^29.5.0",
+        "jest-worker": "^29.5.0",
+        "micromatch": "^4.0.4",
+        "walker": "^1.0.8"
       }
     },
-    "postcss-color-functional-notation": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz",
-      "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==",
+    "jest-leak-detector": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
+      "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "jest-get-type": "^29.4.3",
+        "pretty-format": "^29.5.0"
       }
     },
-    "postcss-color-hex-alpha": {
-      "version": "8.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz",
-      "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==",
+    "jest-matcher-utils": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
+      "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "chalk": "^4.0.0",
+        "jest-diff": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "pretty-format": "^29.5.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "postcss-color-rebeccapurple": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz",
-      "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==",
+    "jest-message-util": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
+      "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "@babel/code-frame": "^7.12.13",
+        "@jest/types": "^29.5.0",
+        "@types/stack-utils": "^2.0.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.5.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "postcss-colormin": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz",
-      "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==",
+    "jest-mock": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
+      "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
+      "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0",
-        "colord": "^2.9.1",
-        "postcss-value-parser": "^4.2.0"
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "jest-util": "^29.5.0"
       }
     },
-    "postcss-convert-values": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz",
-      "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==",
+    "jest-pnp-resolver": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+      "dev": true,
+      "requires": {}
+    },
+    "jest-regex-util": {
+      "version": "29.4.3",
+      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
+      "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
+      "dev": true
+    },
+    "jest-resolve": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
+      "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
+      "dev": true,
       "requires": {
-        "browserslist": "^4.21.4",
-        "postcss-value-parser": "^4.2.0"
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.5.0",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^29.5.0",
+        "jest-validate": "^29.5.0",
+        "resolve": "^1.20.0",
+        "resolve.exports": "^2.0.0",
+        "slash": "^3.0.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "postcss-custom-media": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz",
-      "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==",
+    "jest-resolve-dependencies": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
+      "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "jest-regex-util": "^29.4.3",
+        "jest-snapshot": "^29.5.0"
       }
     },
-    "postcss-custom-properties": {
-      "version": "12.1.10",
-      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz",
-      "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
+    "jest-runner": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
+      "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
+      "dev": true,
+      "requires": {
+        "@jest/console": "^29.5.0",
+        "@jest/environment": "^29.5.0",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
+        "graceful-fs": "^4.2.9",
+        "jest-docblock": "^29.4.3",
+        "jest-environment-node": "^29.5.0",
+        "jest-haste-map": "^29.5.0",
+        "jest-leak-detector": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-resolve": "^29.5.0",
+        "jest-runtime": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "jest-watcher": "^29.5.0",
+        "jest-worker": "^29.5.0",
+        "p-limit": "^3.1.0",
+        "source-map-support": "0.5.13"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "postcss-custom-selectors": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz",
-      "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==",
-      "requires": {
-        "postcss-selector-parser": "^6.0.4"
+    "jest-runtime": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
+      "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
+      "dev": true,
+      "requires": {
+        "@jest/environment": "^29.5.0",
+        "@jest/fake-timers": "^29.5.0",
+        "@jest/globals": "^29.5.0",
+        "@jest/source-map": "^29.4.3",
+        "@jest/test-result": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "cjs-module-lexer": "^1.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-mock": "^29.5.0",
+        "jest-regex-util": "^29.4.3",
+        "jest-resolve": "^29.5.0",
+        "jest-snapshot": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "slash": "^3.0.0",
+        "strip-bom": "^4.0.0"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "1.1.11",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
+          "requires": {
+            "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"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        }
       }
     },
-    "postcss-dir-pseudo-class": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz",
-      "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==",
+    "jest-snapshot": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
+      "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.10"
+        "@babel/core": "^7.11.6",
+        "@babel/generator": "^7.7.2",
+        "@babel/plugin-syntax-jsx": "^7.7.2",
+        "@babel/plugin-syntax-typescript": "^7.7.2",
+        "@babel/traverse": "^7.7.2",
+        "@babel/types": "^7.3.3",
+        "@jest/expect-utils": "^29.5.0",
+        "@jest/transform": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/babel__traverse": "^7.0.6",
+        "@types/prettier": "^2.1.5",
+        "babel-preset-current-node-syntax": "^1.0.0",
+        "chalk": "^4.0.0",
+        "expect": "^29.5.0",
+        "graceful-fs": "^4.2.9",
+        "jest-diff": "^29.5.0",
+        "jest-get-type": "^29.4.3",
+        "jest-matcher-utils": "^29.5.0",
+        "jest-message-util": "^29.5.0",
+        "jest-util": "^29.5.0",
+        "natural-compare": "^1.4.0",
+        "pretty-format": "^29.5.0",
+        "semver": "^7.3.5"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "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,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.8",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
       }
     },
-    "postcss-discard-comments": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
-      "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
-      "requires": {}
-    },
-    "postcss-discard-duplicates": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
-      "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
-      "requires": {}
-    },
-    "postcss-discard-empty": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
-      "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
-      "requires": {}
+    "jest-util": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
+      "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+      "dev": true,
+      "requires": {
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "graceful-fs": "^4.2.9",
+        "picomatch": "^2.2.3"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
+      }
     },
-    "postcss-discard-overridden": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
-      "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
-      "requires": {}
+    "jest-validate": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
+      "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
+      "dev": true,
+      "requires": {
+        "@jest/types": "^29.5.0",
+        "camelcase": "^6.2.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.4.3",
+        "leven": "^3.1.0",
+        "pretty-format": "^29.5.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+          "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+          "dev": true
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
+      }
     },
-    "postcss-double-position-gradients": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz",
-      "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==",
+    "jest-watcher": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
+      "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
+      "dev": true,
       "requires": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
+        "@jest/test-result": "^29.5.0",
+        "@jest/types": "^29.5.0",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
+        "jest-util": "^29.5.0",
+        "string-length": "^4.0.1"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        }
       }
     },
-    "postcss-env-function": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz",
-      "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==",
+    "jest-worker": {
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
+      "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "@types/node": "*",
+        "jest-util": "^29.5.0",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
+      },
+      "dependencies": {
+        "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,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
       }
     },
-    "postcss-flexbugs-fixes": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz",
-      "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==",
-      "requires": {}
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
     },
-    "postcss-focus-visible": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz",
-      "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==",
+    "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,
       "requires": {
-        "postcss-selector-parser": "^6.0.9"
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
       }
     },
-    "postcss-focus-within": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz",
-      "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==",
-      "requires": {
-        "postcss-selector-parser": "^6.0.9"
+    "jsdom": {
+      "version": "20.0.3",
+      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
+      "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
+      "dev": true,
+      "requires": {
+        "abab": "^2.0.6",
+        "acorn": "^8.8.1",
+        "acorn-globals": "^7.0.0",
+        "cssom": "^0.5.0",
+        "cssstyle": "^2.3.0",
+        "data-urls": "^3.0.2",
+        "decimal.js": "^10.4.2",
+        "domexception": "^4.0.0",
+        "escodegen": "^2.0.0",
+        "form-data": "^4.0.0",
+        "html-encoding-sniffer": "^3.0.0",
+        "http-proxy-agent": "^5.0.0",
+        "https-proxy-agent": "^5.0.1",
+        "is-potential-custom-element-name": "^1.0.1",
+        "nwsapi": "^2.2.2",
+        "parse5": "^7.1.1",
+        "saxes": "^6.0.0",
+        "symbol-tree": "^3.2.4",
+        "tough-cookie": "^4.1.2",
+        "w3c-xmlserializer": "^4.0.0",
+        "webidl-conversions": "^7.0.0",
+        "whatwg-encoding": "^2.0.0",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^11.0.0",
+        "ws": "^8.11.0",
+        "xml-name-validator": "^4.0.0"
       }
     },
-    "postcss-font-variant": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
-      "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
-      "requires": {}
-    },
-    "postcss-gap-properties": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz",
-      "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==",
-      "requires": {}
-    },
-    "postcss-image-set-function": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz",
-      "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true
     },
-    "postcss-import": {
-      "version": "14.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
-      "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
-      "requires": {
-        "postcss-value-parser": "^4.0.0",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
-      }
+    "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
     },
-    "postcss-initial": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz",
-      "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==",
-      "requires": {}
+    "json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true
     },
-    "postcss-js": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
-      "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
+    "jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dev": true,
       "requires": {
-        "camelcase-css": "^2.0.1"
+        "graceful-fs": "^4.1.6",
+        "universalify": "^2.0.0"
       }
     },
-    "postcss-lab-function": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz",
-      "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==",
-      "requires": {
-        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
+    "kleur": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+      "dev": true
     },
-    "postcss-load-config": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
-      "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
-      "requires": {
-        "lilconfig": "^2.0.5",
-        "yaml": "^1.10.2"
-      }
+    "leven": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+      "dev": true
     },
-    "postcss-loader": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz",
-      "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==",
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+      "dev": true,
       "requires": {
-        "cosmiconfig": "^7.0.0",
-        "klona": "^2.0.5",
-        "semver": "^7.3.5"
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
       }
     },
-    "postcss-logical": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz",
-      "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==",
-      "requires": {}
+    "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
     },
-    "postcss-media-minmax": {
+    "locate-path": {
       "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz",
-      "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==",
-      "requires": {}
-    },
-    "postcss-merge-longhand": {
-      "version": "5.1.7",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz",
-      "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0",
-        "stylehacks": "^5.1.1"
+        "p-locate": "^4.1.0"
       }
     },
-    "postcss-merge-rules": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz",
-      "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==",
-      "requires": {
-        "browserslist": "^4.21.4",
-        "caniuse-api": "^3.0.0",
-        "cssnano-utils": "^3.1.0",
-        "postcss-selector-parser": "^6.0.5"
-      }
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "dev": true
+    },
+    "lodash.memoize": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+      "dev": true
     },
-    "postcss-minify-font-values": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
-      "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
+    "loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "js-tokens": "^3.0.0 || ^4.0.0"
       }
     },
-    "postcss-minify-gradients": {
+    "lru-cache": {
       "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
-      "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
       "requires": {
-        "colord": "^2.9.1",
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
+        "yallist": "^3.0.2"
       }
     },
-    "postcss-minify-params": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz",
-      "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==",
+    "magic-string": {
+      "version": "0.27.0",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
+      "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+      "dev": true,
       "requires": {
-        "browserslist": "^4.21.4",
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
+        "@jridgewell/sourcemap-codec": "^1.4.13"
       }
     },
-    "postcss-minify-selectors": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
-      "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
+    "make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.5"
+        "semver": "^6.0.0"
       }
     },
-    "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==",
-      "requires": {}
-    },
-    "postcss-modules-local-by-default": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
-      "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
-      "requires": {
-        "icss-utils": "^5.0.0",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.1.0"
-      }
+    "make-error": {
+      "version": "1.3.6",
+      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+      "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+      "dev": true
     },
-    "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==",
+    "makeerror": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.4"
+        "tmpl": "1.0.5"
       }
     },
-    "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==",
-      "requires": {
-        "icss-utils": "^5.0.0"
-      }
+    "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
     },
-    "postcss-nested": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
-      "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
+    "micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.10"
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
       }
     },
-    "postcss-nesting": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz",
-      "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==",
-      "requires": {
-        "@csstools/selector-specificity": "^2.0.0",
-        "postcss-selector-parser": "^6.0.10"
-      }
+    "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
     },
-    "postcss-normalize": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz",
-      "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==",
+    "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,
       "requires": {
-        "@csstools/normalize.css": "*",
-        "postcss-browser-comments": "^4",
-        "sanitize.css": "*"
+        "mime-db": "1.52.0"
       }
     },
-    "postcss-normalize-charset": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
-      "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
-      "requires": {}
+    "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
     },
-    "postcss-normalize-display-values": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
-      "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+    "min-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+      "dev": true
     },
-    "postcss-normalize-positions": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
-      "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
+    "minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "brace-expansion": "^2.0.1"
       }
     },
-    "postcss-normalize-repeat-style": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
-      "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+    "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
     },
-    "postcss-normalize-string": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
-      "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
     },
-    "postcss-normalize-timing-functions": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
-      "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+    "node-int64": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+      "dev": true
     },
-    "postcss-normalize-unicode": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz",
-      "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==",
-      "requires": {
-        "browserslist": "^4.21.4",
-        "postcss-value-parser": "^4.2.0"
-      }
+    "node-releases": {
+      "version": "2.0.10",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
+      "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
+      "dev": true
     },
-    "postcss-normalize-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
-      "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
-      "requires": {
-        "normalize-url": "^6.0.1",
-        "postcss-value-parser": "^4.2.0"
-      }
+    "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
     },
-    "postcss-normalize-whitespace": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
-      "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
+    "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,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "path-key": "^3.0.0"
       }
     },
-    "postcss-opacity-percentage": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz",
-      "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w=="
+    "nwsapi": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz",
+      "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
+      "dev": true
     },
-    "postcss-ordered-values": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
-      "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
-      "requires": {
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
+    "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
     },
-    "postcss-overflow-shorthand": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz",
-      "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==",
+    "object-is": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
       }
     },
-    "postcss-page-break": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
-      "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
-      "requires": {}
-    },
-    "postcss-place": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz",
-      "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==",
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true
     },
-    "postcss-preset-env": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz",
-      "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==",
-      "requires": {
-        "@csstools/postcss-cascade-layers": "^1.1.1",
-        "@csstools/postcss-color-function": "^1.1.1",
-        "@csstools/postcss-font-format-keywords": "^1.0.1",
-        "@csstools/postcss-hwb-function": "^1.0.2",
-        "@csstools/postcss-ic-unit": "^1.0.1",
-        "@csstools/postcss-is-pseudo-class": "^2.0.7",
-        "@csstools/postcss-nested-calc": "^1.0.0",
-        "@csstools/postcss-normalize-display-values": "^1.0.1",
-        "@csstools/postcss-oklab-function": "^1.1.1",
-        "@csstools/postcss-progressive-custom-properties": "^1.3.0",
-        "@csstools/postcss-stepped-value-functions": "^1.0.1",
-        "@csstools/postcss-text-decoration-shorthand": "^1.0.0",
-        "@csstools/postcss-trigonometric-functions": "^1.0.2",
-        "@csstools/postcss-unset-value": "^1.0.2",
-        "autoprefixer": "^10.4.13",
-        "browserslist": "^4.21.4",
-        "css-blank-pseudo": "^3.0.3",
-        "css-has-pseudo": "^3.0.4",
-        "css-prefers-color-scheme": "^6.0.3",
-        "cssdb": "^7.1.0",
-        "postcss-attribute-case-insensitive": "^5.0.2",
-        "postcss-clamp": "^4.1.0",
-        "postcss-color-functional-notation": "^4.2.4",
-        "postcss-color-hex-alpha": "^8.0.4",
-        "postcss-color-rebeccapurple": "^7.1.1",
-        "postcss-custom-media": "^8.0.2",
-        "postcss-custom-properties": "^12.1.10",
-        "postcss-custom-selectors": "^6.0.3",
-        "postcss-dir-pseudo-class": "^6.0.5",
-        "postcss-double-position-gradients": "^3.1.2",
-        "postcss-env-function": "^4.0.6",
-        "postcss-focus-visible": "^6.0.4",
-        "postcss-focus-within": "^5.0.4",
-        "postcss-font-variant": "^5.0.0",
-        "postcss-gap-properties": "^3.0.5",
-        "postcss-image-set-function": "^4.0.7",
-        "postcss-initial": "^4.0.1",
-        "postcss-lab-function": "^4.2.1",
-        "postcss-logical": "^5.0.4",
-        "postcss-media-minmax": "^5.0.0",
-        "postcss-nesting": "^10.2.0",
-        "postcss-opacity-percentage": "^1.1.2",
-        "postcss-overflow-shorthand": "^3.0.4",
-        "postcss-page-break": "^3.0.4",
-        "postcss-place": "^7.0.5",
-        "postcss-pseudo-class-any-link": "^7.1.6",
-        "postcss-replace-overflow-wrap": "^4.0.0",
-        "postcss-selector-not": "^6.0.1",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-pseudo-class-any-link": {
-      "version": "7.1.6",
-      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz",
-      "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==",
+    "object.assign": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.10"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
       }
     },
-    "postcss-reduce-initial": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz",
-      "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==",
+    "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,
       "requires": {
-        "browserslist": "^4.21.4",
-        "caniuse-api": "^3.0.0"
+        "wrappy": "1"
       }
     },
-    "postcss-reduce-transforms": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
-      "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+    "onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "mimic-fn": "^2.1.0"
       }
     },
-    "postcss-replace-overflow-wrap": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
-      "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
-      "requires": {}
-    },
-    "postcss-selector-not": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz",
-      "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==",
+    "optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.10"
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
       }
     },
-    "postcss-selector-parser": {
-      "version": "6.0.10",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
-      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+    "p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
       "requires": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
+        "yocto-queue": "^0.1.0"
       }
     },
-    "postcss-svgo": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
-      "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
+    "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,
       "requires": {
-        "postcss-value-parser": "^4.2.0",
-        "svgo": "^2.7.0"
+        "p-limit": "^2.2.0"
       },
       "dependencies": {
-        "commander": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-          "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
-        },
-        "css-tree": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-          "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-          "requires": {
-            "mdn-data": "2.0.14",
-            "source-map": "^0.6.1"
-          }
-        },
-        "mdn-data": {
-          "version": "2.0.14",
-          "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-          "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        },
-        "svgo": {
-          "version": "2.8.0",
-          "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
-          "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+        "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,
           "requires": {
-            "@trysound/sax": "0.2.0",
-            "commander": "^7.2.0",
-            "css-select": "^4.1.3",
-            "css-tree": "^1.1.3",
-            "csso": "^4.2.0",
-            "picocolors": "^1.0.0",
-            "stable": "^0.1.8"
+            "p-try": "^2.0.0"
           }
         }
       }
     },
-    "postcss-unique-selectors": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
-      "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
+    "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
+    },
+    "parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.5"
+        "@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"
       }
     },
-    "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=="
+    "parse5": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+      "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+      "dev": true,
+      "requires": {
+        "entities": "^4.4.0"
+      }
     },
-    "prelude-ls": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
+    "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
     },
-    "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=="
+    "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
     },
-    "pretty-error": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
-      "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
+    "path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true
+    },
+    "pirates": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+      "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+      "dev": true
+    },
+    "pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
       "requires": {
-        "lodash": "^4.17.20",
-        "renderkid": "^3.0.0"
+        "find-up": "^4.0.0"
       }
     },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+      "dev": true
+    },
     "pretty-format": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
-      "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+      "version": "29.5.0",
+      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+      "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+      "dev": true,
       "requires": {
-        "ansi-regex": "^5.0.1",
+        "@jest/schemas": "^29.4.3",
         "ansi-styles": "^5.0.0",
-        "react-is": "^17.0.1"
+        "react-is": "^18.0.0"
       },
       "dependencies": {
         "ansi-styles": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
-          "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="
-        }
-      }
-    },
-    "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=="
-    },
-    "promise": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
-      "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
-      "requires": {
-        "asap": "~2.0.6"
-      }
-    },
-    "promise-inflight": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
-    },
-    "promise-polyfill": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz",
-      "integrity": "sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ=="
-    },
-    "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==",
-      "requires": {
-        "err-code": "^2.0.2",
-        "retry": "^0.12.0"
-      },
-      "dependencies": {
-        "retry": {
-          "version": "0.12.0",
-          "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-          "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="
+          "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+          "dev": true
         }
       }
     },
@@ -29935,659 +9599,121 @@
       "version": "2.4.2",
       "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
       "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+      "dev": true,
       "requires": {
         "kleur": "^3.0.3",
         "sisteransi": "^1.0.5"
       }
     },
-    "prop-types": {
-      "version": "15.8.1",
-      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-      "requires": {
-        "loose-envify": "^1.4.0",
-        "object-assign": "^4.1.1",
-        "react-is": "^16.13.1"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "16.13.1",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-          "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-        }
-      }
-    },
-    "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==",
-      "requires": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      },
-      "dependencies": {
-        "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=="
-        }
-      }
-    },
-    "proxy-from-env": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
-      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
-    },
     "psl": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
-      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+      "dev": true
     },
     "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
-    },
-    "q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+      "dev": true
     },
-    "qs": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-      "requires": {
-        "side-channel": "^1.0.4"
-      }
+    "pure-rand": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz",
+      "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==",
+      "dev": true
     },
     "querystringify": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
-    },
-    "queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
-    },
-    "quick-lru": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
-      "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
-    },
-    "raf": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
-      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
-      "requires": {
-        "performance-now": "^2.1.0"
-      }
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+      "dev": true
     },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
       "requires": {
         "safe-buffer": "^5.1.0"
       }
     },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "dependencies": {
-        "bytes": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-          "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
-        },
-        "iconv-lite": {
-          "version": "0.4.24",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        }
-      }
-    },
-    "rc-highlight": {
-      "version": "2.5.6",
-      "resolved": "https://registry.npmjs.org/rc-highlight/-/rc-highlight-2.5.6.tgz",
-      "integrity": "sha512-2ZniAUY00UxiofYp3kcRuafUMDDNQ7Gcmgv24kJpjyvnsezjaLh1lvrdwPx/sktCcp+Xqj2o6SvvhNzbuhu+QQ==",
-      "requires": {}
-    },
     "react": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
-      "requires": {
-        "loose-envify": "^1.1.0"
-      }
-    },
-    "react-app-polyfill": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz",
-      "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==",
-      "requires": {
-        "core-js": "^3.19.2",
-        "object-assign": "^4.1.1",
-        "promise": "^8.1.0",
-        "raf": "^3.4.1",
-        "regenerator-runtime": "^0.13.9",
-        "whatwg-fetch": "^3.6.2"
-      }
-    },
-    "react-dev-utils": {
-      "version": "12.0.1",
-      "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
-      "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==",
-      "requires": {
-        "@babel/code-frame": "^7.16.0",
-        "address": "^1.1.2",
-        "browserslist": "^4.18.1",
-        "chalk": "^4.1.2",
-        "cross-spawn": "^7.0.3",
-        "detect-port-alt": "^1.1.6",
-        "escape-string-regexp": "^4.0.0",
-        "filesize": "^8.0.6",
-        "find-up": "^5.0.0",
-        "fork-ts-checker-webpack-plugin": "^6.5.0",
-        "global-modules": "^2.0.0",
-        "globby": "^11.0.4",
-        "gzip-size": "^6.0.0",
-        "immer": "^9.0.7",
-        "is-root": "^2.1.0",
-        "loader-utils": "^3.2.0",
-        "open": "^8.4.0",
-        "pkg-up": "^3.1.0",
-        "prompts": "^2.4.2",
-        "react-error-overlay": "^6.0.11",
-        "recursive-readdir": "^2.2.2",
-        "shell-quote": "^1.7.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "loader-utils": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz",
-          "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "react-dom": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "scheduler": "^0.23.0"
-      }
-    },
-    "react-error-overlay": {
-      "version": "6.0.11",
-      "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
-      "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
-    },
-    "react-is": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
-      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
-    },
-    "react-refresh": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
-      "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A=="
-    },
-    "react-router": {
-      "version": "6.4.3",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.3.tgz",
-      "integrity": "sha512-BT6DoGn6aV1FVP5yfODMOiieakp3z46P1Fk0RNzJMACzE7C339sFuHebfvWtnB4pzBvXXkHP2vscJzWRuUjTtA==",
-      "requires": {
-        "@remix-run/router": "1.0.3"
-      }
-    },
-    "react-router-dom": {
-      "version": "6.4.3",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.3.tgz",
-      "integrity": "sha512-MiaYQU8CwVCaOfJdYvt84KQNjT78VF0TJrA17SIQgNHRvLnXDJO6qsFqq8F/zzB1BWZjCFIrQpu4QxcshitziQ==",
-      "requires": {
-        "@remix-run/router": "1.0.3",
-        "react-router": "6.4.3"
-      }
-    },
-    "react-scripts": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
-      "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==",
-      "requires": {
-        "@babel/core": "^7.16.0",
-        "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
-        "@svgr/webpack": "^5.5.0",
-        "babel-jest": "^27.4.2",
-        "babel-loader": "^8.2.3",
-        "babel-plugin-named-asset-import": "^0.3.8",
-        "babel-preset-react-app": "^10.0.1",
-        "bfj": "^7.0.2",
-        "browserslist": "^4.18.1",
-        "camelcase": "^6.2.1",
-        "case-sensitive-paths-webpack-plugin": "^2.4.0",
-        "css-loader": "^6.5.1",
-        "css-minimizer-webpack-plugin": "^3.2.0",
-        "dotenv": "^10.0.0",
-        "dotenv-expand": "^5.1.0",
-        "eslint": "^8.3.0",
-        "eslint-config-react-app": "^7.0.1",
-        "eslint-webpack-plugin": "^3.1.1",
-        "file-loader": "^6.2.0",
-        "fs-extra": "^10.0.0",
-        "fsevents": "^2.3.2",
-        "html-webpack-plugin": "^5.5.0",
-        "identity-obj-proxy": "^3.0.0",
-        "jest": "^27.4.3",
-        "jest-resolve": "^27.4.2",
-        "jest-watch-typeahead": "^1.0.0",
-        "mini-css-extract-plugin": "^2.4.5",
-        "postcss": "^8.4.4",
-        "postcss-flexbugs-fixes": "^5.0.2",
-        "postcss-loader": "^6.2.1",
-        "postcss-normalize": "^10.0.1",
-        "postcss-preset-env": "^7.0.1",
-        "prompts": "^2.4.2",
-        "react-app-polyfill": "^3.0.0",
-        "react-dev-utils": "^12.0.1",
-        "react-refresh": "^0.11.0",
-        "resolve": "^1.20.0",
-        "resolve-url-loader": "^4.0.0",
-        "sass-loader": "^12.3.0",
-        "semver": "^7.3.5",
-        "source-map-loader": "^3.0.0",
-        "style-loader": "^3.3.1",
-        "tailwindcss": "^3.0.2",
-        "terser-webpack-plugin": "^5.2.5",
-        "webpack": "^5.64.4",
-        "webpack-dev-server": "^4.6.0",
-        "webpack-manifest-plugin": "^4.0.2",
-        "workbox-webpack-plugin": "^6.4.1"
-      }
-    },
-    "react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
-      "requires": {
-        "@babel/runtime": "^7.5.5",
-        "dom-helpers": "^5.0.1",
-        "loose-envify": "^1.4.0",
-        "prop-types": "^15.6.2"
-      }
-    },
-    "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==",
-      "requires": {
-        "pify": "^2.3.0"
-      }
-    },
-    "read-pkg": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
-      "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
-      "requires": {
-        "@types/normalize-package-data": "^2.4.0",
-        "normalize-package-data": "^2.5.0",
-        "parse-json": "^5.0.0",
-        "type-fest": "^0.6.0"
-      },
-      "dependencies": {
-        "hosted-git-info": {
-          "version": "2.8.9",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
-        },
-        "normalize-package-data": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-          "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-          "requires": {
-            "hosted-git-info": "^2.1.4",
-            "resolve": "^1.10.0",
-            "semver": "2 || 3 || 4 || 5",
-            "validate-npm-package-license": "^3.0.1"
-          }
-        },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-        },
-        "type-fest": {
-          "version": "0.6.0",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
-          "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg=="
-        }
-      }
-    },
-    "read-pkg-up": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
-      "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
       "requires": {
-        "find-up": "^4.1.0",
-        "read-pkg": "^5.2.0",
-        "type-fest": "^0.8.1"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
-        "p-limit": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
-        "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==",
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        },
-        "type-fest": {
-          "version": "0.8.1",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
-        }
+        "loose-envify": "^1.1.0"
       }
     },
-    "readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+    "react-dom": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
       "requires": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
+        "loose-envify": "^1.1.0",
+        "scheduler": "^0.23.0"
       }
     },
+    "react-is": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+      "dev": true
+    },
     "readdirp": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
       "requires": {
         "picomatch": "^2.2.1"
       }
     },
-    "recursive-readdir": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
-      "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
-      "requires": {
-        "minimatch": "^3.0.5"
-      }
-    },
     "redent": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
       "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+      "dev": true,
       "requires": {
         "indent-string": "^4.0.0",
         "strip-indent": "^3.0.0"
       }
     },
-    "regenerate": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
-    },
-    "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==",
-      "requires": {
-        "regenerate": "^1.4.2"
-      }
-    },
     "regenerator-runtime": {
-      "version": "0.13.10",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz",
-      "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw=="
-    },
-    "regenerator-transform": {
-      "version": "0.15.0",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
-      "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
-      "requires": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "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=="
+      "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
     },
     "regexp.prototype.flags": {
       "version": "1.4.3",
       "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
       "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.1.3",
         "functions-have-names": "^1.2.2"
       }
     },
-    "regexpp": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
-      "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg=="
-    },
-    "regexpu-core": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
-      "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
-      "requires": {
-        "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.1.0",
-        "regjsgen": "^0.7.1",
-        "regjsparser": "^0.9.1",
-        "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.1.0"
-      }
-    },
-    "regjsgen": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
-      "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA=="
-    },
-    "regjsparser": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
-      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
-      "requires": {
-        "jsesc": "~0.5.0"
-      },
-      "dependencies": {
-        "jsesc": {
-          "version": "0.5.0",
-          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-          "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA=="
-        }
-      }
-    },
-    "relateurl": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
-      "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog=="
-    },
-    "renderkid": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
-      "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
-      "requires": {
-        "css-select": "^4.1.3",
-        "dom-converter": "^0.2.0",
-        "htmlparser2": "^6.1.0",
-        "lodash": "^4.17.21",
-        "strip-ansi": "^6.0.1"
-      }
-    },
-    "request": {
-      "version": "2.88.2",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-      "requires": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      },
-      "dependencies": {
-        "form-data": {
-          "version": "2.3.3",
-          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-          "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-          "requires": {
-            "asynckit": "^0.4.0",
-            "combined-stream": "^1.0.6",
-            "mime-types": "^2.1.12"
-          }
-        },
-        "qs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
-          "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
-        },
-        "tough-cookie": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-          "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-          "requires": {
-            "psl": "^1.1.28",
-            "punycode": "^2.1.1"
-          }
-        },
-        "uuid": {
-          "version": "3.4.0",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-          "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
-        }
-      }
-    },
     "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=="
-    },
-    "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=="
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "dev": true
     },
     "requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true
     },
     "resolve": {
       "version": "1.22.1",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
       "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+      "dev": true,
       "requires": {
         "is-core-module": "^2.9.0",
         "path-parse": "^1.0.7",
@@ -30598,6 +9724,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
       "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+      "dev": true,
       "requires": {
         "resolve-from": "^5.0.0"
       }
@@ -30605,76 +9732,48 @@
     "resolve-from": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
-      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
-    },
-    "resolve-url-loader": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
-      "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
-      "requires": {
-        "adjust-sourcemap-loader": "^4.0.0",
-        "convert-source-map": "^1.7.0",
-        "loader-utils": "^2.0.0",
-        "postcss": "^7.0.35",
-        "source-map": "0.6.1"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
+      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+      "dev": true
     },
     "resolve.exports": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
-      "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ=="
-    },
-    "retry": {
-      "version": "0.13.1",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
-      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="
-    },
-    "reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
-    },
-    "rimraf": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-      "requires": {
-        "glob": "^7.1.3"
-      }
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+      "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+      "dev": true
     },
     "rollup": {
       "version": "2.79.1",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
       "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "dev": true,
+      "peer": true,
       "requires": {
         "fsevents": "~2.3.2"
       }
     },
+    "rollup-plugin-peer-deps-external": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz",
+      "integrity": "sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==",
+      "dev": true,
+      "requires": {}
+    },
+    "rollup-plugin-sass": {
+      "version": "1.12.19",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-sass/-/rollup-plugin-sass-1.12.19.tgz",
+      "integrity": "sha512-gVYQ+fKpwbIeC3tFWbtSw0kVHbDd6bpPHJ+YHpY28YRY1aS8LCrogJZmyb23fDcBn6r8eWzuC1N3jfQbCY3gMQ==",
+      "dev": true,
+      "requires": {
+        "@rollup/pluginutils": "^3 || ^4 || ^5",
+        "resolve": "^1.5.0",
+        "sass": "^1.7.2"
+      }
+    },
     "rollup-plugin-terser": {
       "version": "7.0.2",
       "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
       "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+      "dev": true,
       "requires": {
         "@babel/code-frame": "^7.10.4",
         "jest-worker": "^26.2.1",
@@ -30682,132 +9781,96 @@
         "terser": "^5.0.0"
       },
       "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
         "jest-worker": {
           "version": "26.6.2",
           "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
           "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+          "dev": true,
           "requires": {
             "@types/node": "*",
             "merge-stream": "^2.0.0",
             "supports-color": "^7.0.0"
           }
+        }
+      }
+    },
+    "rollup-plugin-typescript2": {
+      "version": "0.34.1",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz",
+      "integrity": "sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==",
+      "dev": true,
+      "requires": {
+        "@rollup/pluginutils": "^4.1.2",
+        "find-cache-dir": "^3.3.2",
+        "fs-extra": "^10.0.0",
+        "semver": "^7.3.7",
+        "tslib": "^2.4.0"
+      },
+      "dependencies": {
+        "@rollup/pluginutils": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+          "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+          "dev": true,
+          "requires": {
+            "estree-walker": "^2.0.1",
+            "picomatch": "^2.2.2"
+          }
         },
-        "serialize-javascript": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-          "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+        "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,
           "requires": {
-            "randombytes": "^2.1.0"
+            "yallist": "^4.0.0"
           }
         },
-        "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==",
+        "semver": {
+          "version": "7.3.8",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "dev": true,
           "requires": {
-            "has-flag": "^4.0.0"
+            "lru-cache": "^6.0.0"
           }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
         }
       }
     },
-    "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==",
-      "requires": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
     "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=="
-    },
-    "safe-regex-test": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
-      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.3",
-        "is-regex": "^1.1.4"
-      }
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true
     },
     "safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "sanitize.css": {
-      "version": "13.0.0",
-      "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz",
-      "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA=="
-    },
-    "sass-graph": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz",
-      "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==",
-      "requires": {
-        "glob": "^7.0.0",
-        "lodash": "^4.17.11",
-        "scss-tokenizer": "^0.4.3",
-        "yargs": "^17.2.1"
-      },
-      "dependencies": {
-        "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==",
-          "requires": {
-            "string-width": "^4.2.0",
-            "strip-ansi": "^6.0.1",
-            "wrap-ansi": "^7.0.0"
-          }
-        },
-        "yargs": {
-          "version": "17.6.2",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
-          "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
-          "requires": {
-            "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"
-          }
-        },
-        "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=="
-        }
-      }
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
     },
-    "sass-loader": {
-      "version": "12.6.0",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz",
-      "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==",
+    "sass": {
+      "version": "1.60.0",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.60.0.tgz",
+      "integrity": "sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==",
+      "dev": true,
       "requires": {
-        "klona": "^2.0.4",
-        "neo-async": "^2.6.2"
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
       }
     },
-    "sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
-    },
     "saxes": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
-      "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+      "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+      "dev": true,
       "requires": {
         "xmlchars": "^2.2.0"
       }
@@ -30820,181 +9883,26 @@
         "loose-envify": "^1.1.0"
       }
     },
-    "schema-utils": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-      "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-      "requires": {
-        "@types/json-schema": "^7.0.8",
-        "ajv": "^6.12.5",
-        "ajv-keywords": "^3.5.2"
-      }
-    },
-    "scss-tokenizer": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz",
-      "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==",
-      "requires": {
-        "js-base64": "^2.4.9",
-        "source-map": "^0.7.3"
-      }
-    },
-    "select-hose": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="
-    },
-    "selfsigned": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz",
-      "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
-      "requires": {
-        "node-forge": "^1"
-      }
-    },
     "semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
-      "requires": {
-        "lru-cache": "^6.0.0"
-      }
-    },
-    "send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
-      "requires": {
-        "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"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-              "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-            }
-          }
-        },
-        "ms": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-        }
-      }
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true
     },
     "serialize-javascript": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-      "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+      "dev": true,
       "requires": {
         "randombytes": "^2.1.0"
       }
     },
-    "serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
-      "requires": {
-        "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"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "depd": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-          "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
-        },
-        "http-errors": {
-          "version": "1.6.3",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-          "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
-          "requires": {
-            "depd": "~1.1.2",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.1.0",
-            "statuses": ">= 1.4.0 < 2"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        },
-        "setprototypeof": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
-        },
-        "statuses": {
-          "version": "1.5.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-          "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
-        }
-      }
-    },
-    "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==",
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.18.0"
-      }
-    },
-    "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=="
-    },
-    "setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
-    },
     "shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
       "requires": {
         "shebang-regex": "^3.0.0"
       }
@@ -31002,17 +9910,14 @@
     "shebang-regex": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
-    },
-    "shell-quote": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz",
-      "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw=="
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true
     },
     "side-channel": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
       "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "dev": true,
       "requires": {
         "call-bind": "^1.0.0",
         "get-intrinsic": "^1.0.2",
@@ -31022,335 +9927,93 @@
     "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=="
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
     },
     "sisteransi": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
-      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
+      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+      "dev": true
     },
     "slash": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-    },
-    "smart-buffer": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
-      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
-    },
-    "sockjs": {
-      "version": "0.3.24",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
-      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
-      "requires": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^8.3.2",
-        "websocket-driver": "^0.7.4"
-      }
-    },
-    "socks": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
-      "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
-      "requires": {
-        "ip": "^2.0.0",
-        "smart-buffer": "^4.2.0"
-      }
-    },
-    "socks-proxy-agent": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
-      "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
-      "requires": {
-        "agent-base": "^6.0.2",
-        "debug": "^4.3.3",
-        "socks": "^2.6.2"
-      }
-    },
-    "source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true
     },
     "source-map": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-      "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
-    },
-    "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=="
-    },
-    "source-map-loader": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz",
-      "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==",
-      "requires": {
-        "abab": "^2.0.5",
-        "iconv-lite": "^0.6.3",
-        "source-map-js": "^1.0.1"
-      }
-    },
-    "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==",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
-    },
-    "spdx-correct": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "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=="
-    },
-    "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==",
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.12",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
-      "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA=="
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true
     },
-    "spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
-      "requires": {
-        "debug": "^4.1.0",
-        "handle-thing": "^2.0.0",
-        "http-deceiver": "^1.2.7",
-        "select-hose": "^2.0.0",
-        "spdy-transport": "^3.0.0"
-      }
+    "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
     },
-    "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==",
+    "source-map-support": {
+      "version": "0.5.13",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+      "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+      "dev": true,
       "requires": {
-        "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"
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
       }
     },
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
-    },
-    "sshpk": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
-      "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
-      "requires": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      }
-    },
-    "ssri": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
-      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
-      "requires": {
-        "minipass": "^3.1.1"
-      }
-    },
-    "stable": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
     },
     "stack-utils": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
       "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+      "dev": true,
       "requires": {
         "escape-string-regexp": "^2.0.0"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
-          "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
-        }
-      }
-    },
-    "stackframe": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
-      "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
-    },
-    "statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
-    },
-    "stdout-stream": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
-      "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
-      "requires": {
-        "readable-stream": "^2.0.1"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.7",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-          "requires": {
-            "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"
-          }
-        },
-        "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=="
-        },
-        "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==",
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        }
       }
     },
-    "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==",
+    "stop-iteration-iterator": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+      "dev": true,
       "requires": {
-        "safe-buffer": "~5.2.0"
+        "internal-slot": "^1.0.4"
       }
     },
     "string-length": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
       "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+      "dev": true,
       "requires": {
         "char-regex": "^1.0.2",
         "strip-ansi": "^6.0.0"
       }
     },
-    "string-natural-compare": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz",
-      "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw=="
-    },
     "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,
       "requires": {
         "emoji-regex": "^8.0.0",
         "is-fullwidth-code-point": "^3.0.0",
         "strip-ansi": "^6.0.1"
-      },
-      "dependencies": {
-        "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=="
-        }
-      }
-    },
-    "string.prototype.matchall": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
-      "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "regexp.prototype.flags": "^1.4.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "string.prototype.trimend": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
-      "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "string.prototype.trimstart": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
-      "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "stringify-object": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
-      "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
-      "requires": {
-        "get-own-enumerable-property-symbols": "^3.0.0",
-        "is-obj": "^1.0.1",
-        "is-regexp": "^1.0.0"
       }
     },
     "strip-ansi": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
       "requires": {
         "ansi-regex": "^5.0.1"
       }
@@ -31358,22 +10021,20 @@
     "strip-bom": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
-      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w=="
-    },
-    "strip-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
-      "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw=="
+      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+      "dev": true
     },
     "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=="
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+      "dev": true
     },
     "strip-indent": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
       "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+      "dev": true,
       "requires": {
         "min-indent": "^1.0.0"
       }
@@ -31381,253 +10042,35 @@
     "strip-json-comments": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
-    },
-    "style-loader": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
-      "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
-      "requires": {}
-    },
-    "stylehacks": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
-      "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==",
-      "requires": {
-        "browserslist": "^4.21.4",
-        "postcss-selector-parser": "^6.0.4"
-      }
-    },
-    "stylis": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
-      "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
     },
     "supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "requires": {
-        "has-flag": "^3.0.0"
-      }
-    },
-    "supports-hyperlinks": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
-      "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
       "requires": {
-        "has-flag": "^4.0.0",
-        "supports-color": "^7.0.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "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==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
+        "has-flag": "^4.0.0"
       }
     },
     "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=="
-    },
-    "svg-parser": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
-      "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="
-    },
-    "svgo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
-      "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
-      "requires": {
-        "chalk": "^2.4.1",
-        "coa": "^2.0.2",
-        "css-select": "^2.0.0",
-        "css-select-base-adapter": "^0.1.1",
-        "css-tree": "1.0.0-alpha.37",
-        "csso": "^4.0.2",
-        "js-yaml": "^3.13.1",
-        "mkdirp": "~0.5.1",
-        "object.values": "^1.1.0",
-        "sax": "~1.2.4",
-        "stable": "^0.1.8",
-        "unquote": "~1.1.1",
-        "util.promisify": "~1.0.0"
-      },
-      "dependencies": {
-        "css-select": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-          "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
-          "requires": {
-            "boolbase": "^1.0.0",
-            "css-what": "^3.2.1",
-            "domutils": "^1.7.0",
-            "nth-check": "^1.0.2"
-          }
-        },
-        "css-what": {
-          "version": "3.4.2",
-          "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
-          "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ=="
-        },
-        "dom-serializer": {
-          "version": "0.2.2",
-          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-          "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-          "requires": {
-            "domelementtype": "^2.0.1",
-            "entities": "^2.0.0"
-          }
-        },
-        "domutils": {
-          "version": "1.7.0",
-          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-          "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-          "requires": {
-            "dom-serializer": "0",
-            "domelementtype": "1"
-          },
-          "dependencies": {
-            "domelementtype": {
-              "version": "1.3.1",
-              "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-              "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
-            }
-          }
-        },
-        "nth-check": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-          "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
-          "requires": {
-            "boolbase": "~1.0.0"
-          }
-        }
-      }
-    },
-    "sweetalert": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz",
-      "integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==",
-      "requires": {
-        "es6-object-assign": "^1.1.0",
-        "promise-polyfill": "^6.0.2"
-      }
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true
     },
     "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=="
-    },
-    "tailwindcss": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
-      "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
-      "requires": {
-        "arg": "^5.0.2",
-        "chokidar": "^3.5.3",
-        "color-name": "^1.1.4",
-        "detective": "^5.2.1",
-        "didyoumean": "^1.2.2",
-        "dlv": "^1.1.3",
-        "fast-glob": "^3.2.12",
-        "glob-parent": "^6.0.2",
-        "is-glob": "^4.0.3",
-        "lilconfig": "^2.0.6",
-        "micromatch": "^4.0.5",
-        "normalize-path": "^3.0.0",
-        "object-hash": "^3.0.0",
-        "picocolors": "^1.0.0",
-        "postcss": "^8.4.18",
-        "postcss-import": "^14.1.0",
-        "postcss-js": "^4.0.0",
-        "postcss-load-config": "^3.1.4",
-        "postcss-nested": "6.0.0",
-        "postcss-selector-parser": "^6.0.10",
-        "postcss-value-parser": "^4.2.0",
-        "quick-lru": "^5.1.1",
-        "resolve": "^1.22.1"
-      },
-      "dependencies": {
-        "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=="
-        }
-      }
-    },
-    "tapable": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
-    },
-    "tar": {
-      "version": "6.1.12",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz",
-      "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==",
-      "requires": {
-        "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "minipass": "^3.0.0",
-        "minizlib": "^2.1.1",
-        "mkdirp": "^1.0.3",
-        "yallist": "^4.0.0"
-      },
-      "dependencies": {
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
-        }
-      }
-    },
-    "temp-dir": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
-      "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg=="
-    },
-    "tempy": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz",
-      "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==",
-      "requires": {
-        "is-stream": "^2.0.0",
-        "temp-dir": "^2.0.0",
-        "type-fest": "^0.16.0",
-        "unique-string": "^2.0.0"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.16.0",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
-          "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg=="
-        }
-      }
-    },
-    "terminal-link": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
-      "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
-      "requires": {
-        "ansi-escapes": "^4.2.1",
-        "supports-hyperlinks": "^2.0.0"
-      }
+      "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+      "dev": true
     },
     "terser": {
-      "version": "5.15.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
-      "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
+      "version": "5.16.8",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz",
+      "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==",
+      "dev": true,
       "requires": {
         "@jridgewell/source-map": "^0.3.2",
         "acorn": "^8.5.0",
@@ -31635,77 +10078,90 @@
         "source-map-support": "~0.5.20"
       },
       "dependencies": {
-        "commander": {
-          "version": "2.20.3",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+        "source-map-support": {
+          "version": "0.5.21",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+          "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+          "dev": true,
+          "requires": {
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
+          }
         }
       }
     },
-    "terser-webpack-plugin": {
-      "version": "5.3.6",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
-      "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
-      "requires": {
-        "@jridgewell/trace-mapping": "^0.3.14",
-        "jest-worker": "^27.4.5",
-        "schema-utils": "^3.1.1",
-        "serialize-javascript": "^6.0.0",
-        "terser": "^5.14.1"
-      }
-    },
     "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,
       "requires": {
         "@istanbuljs/schema": "^0.1.2",
         "glob": "^7.1.4",
         "minimatch": "^3.0.4"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "1.1.11",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
+          "requires": {
+            "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"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        }
       }
     },
-    "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=="
-    },
-    "throat": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
-      "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w=="
-    },
-    "thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
-    },
     "tmpl": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
-      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
+      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+      "dev": true
     },
     "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=="
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true
     },
     "to-regex-range": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
       "requires": {
         "is-number": "^7.0.0"
       }
     },
-    "toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
-    },
     "tough-cookie": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
       "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
+      "dev": true,
       "requires": {
         "psl": "^1.1.33",
         "punycode": "^2.1.1",
@@ -31716,630 +10172,194 @@
         "universalify": {
           "version": "0.2.0",
           "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
-          "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
+          "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+          "dev": true
         }
       }
     },
     "tr46": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
-      "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+      "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+      "dev": true,
       "requires": {
         "punycode": "^2.1.1"
       }
     },
-    "trim-newlines": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
-      "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw=="
-    },
-    "true-case-path": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
-      "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
-      "requires": {
-        "glob": "^7.1.2"
-      }
-    },
-    "tryer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
-      "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
-    },
-    "tsconfig-paths": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
-      "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
+    "ts-jest": {
+      "version": "29.0.5",
+      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz",
+      "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==",
+      "dev": true,
       "requires": {
-        "@types/json5": "^0.0.29",
-        "json5": "^1.0.1",
-        "minimist": "^1.2.6",
-        "strip-bom": "^3.0.0"
+        "bs-logger": "0.x",
+        "fast-json-stable-stringify": "2.x",
+        "jest-util": "^29.0.0",
+        "json5": "^2.2.3",
+        "lodash.memoize": "4.x",
+        "make-error": "1.x",
+        "semver": "7.x",
+        "yargs-parser": "^21.0.1"
       },
       "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+        "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,
           "requires": {
-            "minimist": "^1.2.0"
+            "yallist": "^4.0.0"
           }
         },
-        "strip-bom": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-          "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="
-        }
-      }
-    },
-    "tslib": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
-      "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
-    },
-    "tsutils": {
-      "version": "3.21.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
-      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-      "requires": {
-        "tslib": "^1.8.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-      "requires": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
-    },
-    "type-check": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-      "requires": {
-        "prelude-ls": "^1.2.1"
-      }
-    },
-    "type-detect": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
-      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
-    },
-    "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=="
-    },
-    "type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      }
-    },
-    "typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "requires": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
-    "typescript": {
-      "version": "4.9.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz",
-      "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA=="
-    },
-    "unbox-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
+        "semver": {
+          "version": "7.3.8",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
       }
     },
-    "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=="
+    "tslib": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
+      "dev": true
     },
-    "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==",
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+      "dev": true,
       "requires": {
-        "unicode-canonical-property-names-ecmascript": "^2.0.0",
-        "unicode-property-aliases-ecmascript": "^2.0.0"
+        "prelude-ls": "~1.1.2"
       }
     },
-    "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=="
-    },
-    "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=="
-    },
-    "unique-filename": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
-      "requires": {
-        "unique-slug": "^2.0.0"
-      }
+    "type-detect": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+      "dev": true
     },
-    "unique-slug": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
-      "requires": {
-        "imurmurhash": "^0.1.4"
-      }
+    "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
     },
-    "unique-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
-      "requires": {
-        "crypto-random-string": "^2.0.0"
-      }
+    "typescript": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz",
+      "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==",
+      "dev": true
     },
     "universalify": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
-    },
-    "unquote": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-      "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
-    },
-    "upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="
+      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+      "dev": true
     },
     "update-browserslist-db": {
       "version": "1.0.10",
       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
       "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+      "dev": true,
       "requires": {
         "escalade": "^3.1.1",
         "picocolors": "^1.0.0"
       }
     },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
     "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,
       "requires": {
         "querystringify": "^2.1.1",
         "requires-port": "^1.0.0"
       }
     },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
-    },
-    "util.promisify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
-      "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.2",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.0"
-      }
-    },
-    "utila": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
-      "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA=="
-    },
-    "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=="
-    },
-    "uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
-    },
     "v8-to-istanbul": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
-      "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+      "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+      "dev": true,
       "requires": {
+        "@jridgewell/trace-mapping": "^0.3.12",
         "@types/istanbul-lib-coverage": "^2.0.1",
-        "convert-source-map": "^1.6.0",
-        "source-map": "^0.7.3"
-      }
-    },
-    "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==",
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
-    },
-    "verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
+        "convert-source-map": "^1.6.0"
       },
       "dependencies": {
-        "core-util-is": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-          "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
+        "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
         }
       }
     },
-    "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==",
-      "requires": {
-        "browser-process-hrtime": "^1.0.0"
-      }
-    },
     "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==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+      "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
+      "dev": true,
       "requires": {
-        "xml-name-validator": "^3.0.0"
+        "xml-name-validator": "^4.0.0"
       }
     },
     "walker": {
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
       "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+      "dev": true,
       "requires": {
         "makeerror": "1.0.12"
       }
     },
-    "watchpack": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
-      "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
-      "requires": {
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.1.2"
-      }
-    },
-    "wbuf": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
-      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
-      "requires": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "web-vitals": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz",
-      "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg=="
-    },
     "webidl-conversions": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
-      "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
-    },
-    "webpack": {
-      "version": "5.75.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz",
-      "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==",
-      "requires": {
-        "@types/eslint-scope": "^3.7.3",
-        "@types/estree": "^0.0.51",
-        "@webassemblyjs/ast": "1.11.1",
-        "@webassemblyjs/wasm-edit": "1.11.1",
-        "@webassemblyjs/wasm-parser": "1.11.1",
-        "acorn": "^8.7.1",
-        "acorn-import-assertions": "^1.7.6",
-        "browserslist": "^4.14.5",
-        "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^5.10.0",
-        "es-module-lexer": "^0.9.0",
-        "eslint-scope": "5.1.1",
-        "events": "^3.2.0",
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.2.9",
-        "json-parse-even-better-errors": "^2.3.1",
-        "loader-runner": "^4.2.0",
-        "mime-types": "^2.1.27",
-        "neo-async": "^2.6.2",
-        "schema-utils": "^3.1.0",
-        "tapable": "^2.1.1",
-        "terser-webpack-plugin": "^5.1.3",
-        "watchpack": "^2.4.0",
-        "webpack-sources": "^3.2.3"
-      },
-      "dependencies": {
-        "@types/estree": {
-          "version": "0.0.51",
-          "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
-          "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ=="
-        },
-        "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==",
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^4.1.1"
-          }
-        },
-        "estraverse": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-          "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
-        }
-      }
-    },
-    "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==",
-      "requires": {
-        "colorette": "^2.0.10",
-        "memfs": "^3.4.3",
-        "mime-types": "^2.1.31",
-        "range-parser": "^1.2.1",
-        "schema-utils": "^4.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-          "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "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==",
-          "requires": {
-            "fast-deep-equal": "^3.1.3"
-          }
-        },
-        "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=="
-        },
-        "schema-utils": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-          "requires": {
-            "@types/json-schema": "^7.0.9",
-            "ajv": "^8.8.0",
-            "ajv-formats": "^2.1.1",
-            "ajv-keywords": "^5.0.0"
-          }
-        }
-      }
-    },
-    "webpack-dev-server": {
-      "version": "4.11.1",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz",
-      "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==",
-      "requires": {
-        "@types/bonjour": "^3.5.9",
-        "@types/connect-history-api-fallback": "^1.3.5",
-        "@types/express": "^4.17.13",
-        "@types/serve-index": "^1.9.1",
-        "@types/serve-static": "^1.13.10",
-        "@types/sockjs": "^0.3.33",
-        "@types/ws": "^8.5.1",
-        "ansi-html-community": "^0.0.8",
-        "bonjour-service": "^1.0.11",
-        "chokidar": "^3.5.3",
-        "colorette": "^2.0.10",
-        "compression": "^1.7.4",
-        "connect-history-api-fallback": "^2.0.0",
-        "default-gateway": "^6.0.3",
-        "express": "^4.17.3",
-        "graceful-fs": "^4.2.6",
-        "html-entities": "^2.3.2",
-        "http-proxy-middleware": "^2.0.3",
-        "ipaddr.js": "^2.0.1",
-        "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.4.2"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-          "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "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==",
-          "requires": {
-            "fast-deep-equal": "^3.1.3"
-          }
-        },
-        "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=="
-        },
-        "schema-utils": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
-          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
-          "requires": {
-            "@types/json-schema": "^7.0.9",
-            "ajv": "^8.8.0",
-            "ajv-formats": "^2.1.1",
-            "ajv-keywords": "^5.0.0"
-          }
-        },
-        "ws": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
-          "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
-          "requires": {}
-        }
-      }
-    },
-    "webpack-manifest-plugin": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz",
-      "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==",
-      "requires": {
-        "tapable": "^2.0.0",
-        "webpack-sources": "^2.2.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        },
-        "webpack-sources": {
-          "version": "2.3.1",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz",
-          "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==",
-          "requires": {
-            "source-list-map": "^2.0.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "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=="
-    },
-    "websocket-driver": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
-      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
-      "requires": {
-        "http-parser-js": ">=0.5.1",
-        "safe-buffer": ">=5.1.0",
-        "websocket-extensions": ">=0.1.1"
-      }
-    },
-    "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=="
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+      "dev": true
     },
     "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==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
+      "dev": true,
       "requires": {
-        "iconv-lite": "0.4.24"
-      },
-      "dependencies": {
-        "iconv-lite": {
-          "version": "0.4.24",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        }
+        "iconv-lite": "0.6.3"
       }
     },
-    "whatwg-fetch": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
-      "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
-    },
     "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=="
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+      "dev": true
     },
     "whatwg-url": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
-      "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+      "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+      "dev": true,
       "requires": {
-        "lodash": "^4.7.0",
-        "tr46": "^2.1.0",
-        "webidl-conversions": "^6.1.0"
+        "tr46": "^3.0.0",
+        "webidl-conversions": "^7.0.0"
       }
     },
     "which": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
       "requires": {
         "isexe": "^2.0.0"
       }
@@ -32348,6 +10368,7 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
       "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "dev": true,
       "requires": {
         "is-bigint": "^1.0.1",
         "is-boolean-object": "^1.1.0",
@@ -32360,6 +10381,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
       "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+      "dev": true,
       "requires": {
         "is-map": "^2.0.1",
         "is-set": "^2.0.1",
@@ -32371,6 +10393,7 @@
       "version": "1.1.9",
       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
       "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+      "dev": true,
       "requires": {
         "available-typed-arrays": "^1.0.5",
         "call-bind": "^1.0.2",
@@ -32380,397 +10403,96 @@
         "is-typed-array": "^1.1.10"
       }
     },
-    "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==",
-      "requires": {
-        "string-width": "^1.0.2 || 2 || 3 || 4"
-      }
-    },
     "word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
-    },
-    "workbox-background-sync": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz",
-      "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==",
-      "requires": {
-        "idb": "^7.0.1",
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-broadcast-update": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz",
-      "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==",
-      "requires": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-build": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz",
-      "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==",
-      "requires": {
-        "@apideck/better-ajv-errors": "^0.3.1",
-        "@babel/core": "^7.11.1",
-        "@babel/preset-env": "^7.11.0",
-        "@babel/runtime": "^7.11.2",
-        "@rollup/plugin-babel": "^5.2.0",
-        "@rollup/plugin-node-resolve": "^11.2.1",
-        "@rollup/plugin-replace": "^2.4.1",
-        "@surma/rollup-plugin-off-main-thread": "^2.2.3",
-        "ajv": "^8.6.0",
-        "common-tags": "^1.8.0",
-        "fast-json-stable-stringify": "^2.1.0",
-        "fs-extra": "^9.0.1",
-        "glob": "^7.1.6",
-        "lodash": "^4.17.20",
-        "pretty-bytes": "^5.3.0",
-        "rollup": "^2.43.1",
-        "rollup-plugin-terser": "^7.0.0",
-        "source-map": "^0.8.0-beta.0",
-        "stringify-object": "^3.3.0",
-        "strip-comments": "^2.0.1",
-        "tempy": "^0.6.0",
-        "upath": "^1.2.0",
-        "workbox-background-sync": "6.5.4",
-        "workbox-broadcast-update": "6.5.4",
-        "workbox-cacheable-response": "6.5.4",
-        "workbox-core": "6.5.4",
-        "workbox-expiration": "6.5.4",
-        "workbox-google-analytics": "6.5.4",
-        "workbox-navigation-preload": "6.5.4",
-        "workbox-precaching": "6.5.4",
-        "workbox-range-requests": "6.5.4",
-        "workbox-recipes": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4",
-        "workbox-streams": "6.5.4",
-        "workbox-sw": "6.5.4",
-        "workbox-window": "6.5.4"
-      },
-      "dependencies": {
-        "@apideck/better-ajv-errors": {
-          "version": "0.3.6",
-          "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
-          "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
-          "requires": {
-            "json-schema": "^0.4.0",
-            "jsonpointer": "^5.0.0",
-            "leven": "^3.1.0"
-          }
-        },
-        "ajv": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
-          "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fs-extra": {
-          "version": "9.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-          "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-          "requires": {
-            "at-least-node": "^1.0.0",
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^6.0.1",
-            "universalify": "^2.0.0"
-          }
-        },
-        "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=="
-        },
-        "source-map": {
-          "version": "0.8.0-beta.0",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
-          "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
-          "requires": {
-            "whatwg-url": "^7.0.0"
-          }
-        },
-        "tr46": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
-          "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
-          "requires": {
-            "punycode": "^2.1.0"
-          }
-        },
-        "webidl-conversions": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
-          "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
-        },
-        "whatwg-url": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
-          "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
-          "requires": {
-            "lodash.sortby": "^4.7.0",
-            "tr46": "^1.0.1",
-            "webidl-conversions": "^4.0.2"
-          }
-        }
-      }
-    },
-    "workbox-cacheable-response": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz",
-      "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==",
-      "requires": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-core": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz",
-      "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q=="
-    },
-    "workbox-expiration": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz",
-      "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==",
-      "requires": {
-        "idb": "^7.0.1",
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-google-analytics": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz",
-      "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==",
-      "requires": {
-        "workbox-background-sync": "6.5.4",
-        "workbox-core": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4"
-      }
-    },
-    "workbox-navigation-preload": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz",
-      "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==",
-      "requires": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-precaching": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz",
-      "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==",
-      "requires": {
-        "workbox-core": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4"
-      }
-    },
-    "workbox-range-requests": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz",
-      "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==",
-      "requires": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-recipes": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz",
-      "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==",
-      "requires": {
-        "workbox-cacheable-response": "6.5.4",
-        "workbox-core": "6.5.4",
-        "workbox-expiration": "6.5.4",
-        "workbox-precaching": "6.5.4",
-        "workbox-routing": "6.5.4",
-        "workbox-strategies": "6.5.4"
-      }
-    },
-    "workbox-routing": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz",
-      "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==",
-      "requires": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-strategies": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz",
-      "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==",
-      "requires": {
-        "workbox-core": "6.5.4"
-      }
-    },
-    "workbox-streams": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz",
-      "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==",
-      "requires": {
-        "workbox-core": "6.5.4",
-        "workbox-routing": "6.5.4"
-      }
-    },
-    "workbox-sw": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz",
-      "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA=="
-    },
-    "workbox-webpack-plugin": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz",
-      "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==",
-      "requires": {
-        "fast-json-stable-stringify": "^2.1.0",
-        "pretty-bytes": "^5.4.1",
-        "upath": "^1.2.0",
-        "webpack-sources": "^1.4.3",
-        "workbox-build": "6.5.4"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        },
-        "webpack-sources": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-          "requires": {
-            "source-list-map": "^2.0.0",
-            "source-map": "~0.6.1"
-          }
-        }
-      }
-    },
-    "workbox-window": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz",
-      "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==",
-      "requires": {
-        "@types/trusted-types": "^2.0.2",
-        "workbox-core": "6.5.4"
-      }
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+      "dev": true
     },
     "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,
       "requires": {
         "ansi-styles": "^4.0.0",
         "string-width": "^4.1.0",
         "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "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==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        }
       }
     },
     "wrappy": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
     },
     "write-file-atomic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+      "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+      "dev": true,
       "requires": {
         "imurmurhash": "^0.1.4",
-        "is-typedarray": "^1.0.0",
-        "signal-exit": "^3.0.2",
-        "typedarray-to-buffer": "^3.1.5"
+        "signal-exit": "^3.0.7"
       }
     },
     "ws": {
-      "version": "7.5.9",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
-      "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+      "version": "8.13.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
+      "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+      "dev": true,
       "requires": {}
     },
     "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=="
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+      "dev": true
     },
     "xmlchars": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
-      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+      "dev": true
     },
     "y18n": {
       "version": "5.0.8",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
-      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "dev": true
     },
     "yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-    },
-    "yaml": {
-      "version": "1.10.2",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
-      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true
     },
     "yargs": {
-      "version": "16.2.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+      "version": "17.7.1",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
+      "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
+      "dev": true,
       "requires": {
-        "cliui": "^7.0.2",
+        "cliui": "^8.0.1",
         "escalade": "^3.1.1",
         "get-caller-file": "^2.0.5",
         "require-directory": "^2.1.1",
-        "string-width": "^4.2.0",
+        "string-width": "^4.2.3",
         "y18n": "^5.0.5",
-        "yargs-parser": "^20.2.2"
+        "yargs-parser": "^21.1.1"
       }
     },
     "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=="
+      "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
     },
     "yocto-queue": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true
     }
   }
 }
diff --git a/package.json b/package.json
index f44586799cb2a18badaff5f799b556e4e155f2eb..c82c4a38b70468bb2411cbd7733f59ba06571744 100644
--- a/package.json
+++ b/package.json
@@ -1,51 +1,64 @@
 {
-  "name": "files-ui-webpage",
-  "version": "0.1.0",
-  "private": true,
-  "dependencies": {
-    "@dynamicss/dynamicss": "^2.2.8",
-    "@emotion/react": "^11.10.5",
-    "@emotion/styled": "^11.10.5",
-    "@mui/icons-material": "^5.10.14",
-    "@mui/material": "^5.10.14",
-    "@testing-library/jest-dom": "^5.16.5",
-    "@testing-library/react": "^13.4.0",
-    "@testing-library/user-event": "^13.5.0",
-    "@types/react": "^18.0.25",
-    "axios": "^1.3.1",
-    "node-sass": "^7.0.3",
-    "rc-highlight": "^2.5.6",
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0",
-    "react-router": "^6.4.3",
-    "react-router-dom": "^6.4.3",
-    "react-scripts": "5.0.1",
-    "sweetalert": "^2.1.2",
-    "typescript": "^4.9.3",
-    "web-vitals": "^2.1.4"
-  },
+  "name": "@files-ui/react",
+  "version": "1.0.0",
+  "description": "UI components and uploader for files with react js / Ui File Upload library",
+  "main": "./build/index.js",
+  "module": "./build/index.es.js",
+  "types": "./build/index.d.ts",
   "scripts": {
-    "start": "react-scripts start",
-    "build": "react-scripts build",
-    "test": "react-scripts test",
-    "eject": "react-scripts eject"
+    "build": "rollup -c",
+    "test": "jest"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/files-ui/files-ui-react.git"
   },
-  "eslintConfig": {
-    "extends": [
-      "react-app",
-      "react-app/jest"
-    ]
+  "keywords": [
+    "file",
+    "upload",
+    "dropzone",
+    "file",
+    "upload",
+    "typescript",
+    "drag",
+    "drop",
+    "drag-drop",
+    "preview",
+    "ui",
+    "file",
+    "uploader",
+    "uploader",
+    "files",
+    "material",
+    "mui",
+    "framework",
+    "front-end",
+    "kamui",
+    "react",
+    "react-component"
+  ],
+  "author": "JinSSJ3",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/files-ui/files-ui-react/issues"
   },
-  "browserslist": {
-    "production": [
-      ">0.2%",
-      "not dead",
-      "not op_mini all"
-    ],
-    "development": [
-      "last 1 chrome version",
-      "last 1 firefox version",
-      "last 1 safari version"
-    ]
+  "homepage": "https://www.files-ui.com",
+  "sideEffects": false,
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^24.0.1",
+    "@rollup/plugin-node-resolve": "^15.0.1",
+    "@testing-library/jest-dom": "^5.16.5",
+    "jest": "^29.5.0",
+    "jest-environment-jsdom": "^29.5.0",
+    "rollup-plugin-peer-deps-external": "^2.2.4",
+    "rollup-plugin-sass": "^1.12.19",
+    "rollup-plugin-terser": "^7.0.2",
+    "rollup-plugin-typescript2": "^0.34.1",
+    "ts-jest": "^29.0.5",
+    "typescript": "^5.0.2"
+  },
+  "dependencies": {
+    "react": "^18.2.0",
+    "react-dom": "^18.2.0"
   }
 }
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000
Binary files a/public/favicon.ico and /dev/null differ
diff --git a/public/files-ui-ico-nb.ico b/public/files-ui-ico-nb.ico
deleted file mode 100644
index 121610b8db5afa99b5bb76bc7e70c1474e1692fd..0000000000000000000000000000000000000000
Binary files a/public/files-ui-ico-nb.ico and /dev/null differ
diff --git a/public/files-ui-logo-arrow.ico b/public/files-ui-logo-arrow.ico
deleted file mode 100644
index 3ba296529f4433fbf9688c4582660d8f1afab76c..0000000000000000000000000000000000000000
Binary files a/public/files-ui-logo-arrow.ico and /dev/null differ
diff --git a/public/files-ui-logo.ico b/public/files-ui-logo.ico
deleted file mode 100644
index 91d0ae77492e2e82a8b1d15cfe67e185d2f761e8..0000000000000000000000000000000000000000
Binary files a/public/files-ui-logo.ico and /dev/null differ
diff --git a/public/icons/files-ui-logo-blue-ico.ico b/public/icons/files-ui-logo-blue-ico.ico
deleted file mode 100644
index b4503cc680490fcff8af698f5066f822d432953c..0000000000000000000000000000000000000000
Binary files a/public/icons/files-ui-logo-blue-ico.ico and /dev/null differ
diff --git a/public/icons/files-ui-logo-blue-wbg-ico.ico b/public/icons/files-ui-logo-blue-wbg-ico.ico
deleted file mode 100644
index 50ec65540e5884704fe0c5e8e0fb68d4856d00c3..0000000000000000000000000000000000000000
Binary files a/public/icons/files-ui-logo-blue-wbg-ico.ico and /dev/null differ
diff --git a/public/icons/files-ui-logo-white-bbg-ico.ico b/public/icons/files-ui-logo-white-bbg-ico.ico
deleted file mode 100644
index 3f724a1e1df27107addc3f22b618888574e22f4d..0000000000000000000000000000000000000000
Binary files a/public/icons/files-ui-logo-white-bbg-ico.ico and /dev/null differ
diff --git a/public/icons/files-ui-logo-white-ico.ico b/public/icons/files-ui-logo-white-ico.ico
deleted file mode 100644
index fc80f25948b28e59cb6bd21c9f7fa9b58ef1ea97..0000000000000000000000000000000000000000
Binary files a/public/icons/files-ui-logo-white-ico.ico and /dev/null differ
diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index 141e4023ea01472600ad38f39feb31ca4116ad6a..0000000000000000000000000000000000000000
--- a/public/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    
-    <!-- <script defer src="https://app.embed.im/snow.js"></script>
-     -->
-    <meta charset="utf-8" />
-    <link rel="icon" href="%PUBLIC_URL%/icons/files-ui-logo-blue-ico.ico" />
-    <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="theme-color" content="#000000" />
-    <!--  <meta
-      name="description"
-      content="Web site created using create-react-app"
-    /> -->
-    <link rel="apple-touch-icon" href="%PUBLIC_URL%/icons/files-ui-logo-blue-ico.ico" />
-
-    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
-
-    <title>Files-ui: File upload react library</title>
-    <meta
-      name="description"
-      content="Files UI is a library of React components for managing file uploads, previews and more. Make the file upload task easy for developers and end-users."
-    />
-  </head>
-  <body>
-    <!--  <noscript>You need to enable JavaScript to run this app.</noscript> -->
-    <div id="root"></div>
-  </body>
-</html>
diff --git a/public/logo192.png b/public/logo192.png
deleted file mode 100644
index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000
Binary files a/public/logo192.png and /dev/null differ
diff --git a/public/logo512.png b/public/logo512.png
deleted file mode 100644
index a4e47a6545bc15971f8f63fba70e4013df88a664..0000000000000000000000000000000000000000
Binary files a/public/logo512.png and /dev/null differ
diff --git a/public/manifest.json b/public/manifest.json
deleted file mode 100644
index 903467ba6f5e685a222cfb0a5ee86223e6136c42..0000000000000000000000000000000000000000
--- a/public/manifest.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "short_name": "Files ui",
-  "name": "File upload react library",
-  "icons": [
-    {
-      "src": "files-ui-ico-nb.ico",
-      "sizes": "256x256",
-      "type": "image/x-icon"
-    },
-    {
-      "src": "files-ui-ico-nb.ico",
-      "sizes": "64x64 32x32 24x24 16x16",
-      "type": "image/x-icon"
-    },
-    {
-      "src": "files-ui-ico-nb.ico",
-      "type": "image/png",
-      "sizes": "192x192"
-    },
-    {
-      "src": "files-ui-ico-nb.ico",
-      "type": "image/png",
-      "sizes": "512x512"
-    }
-  ],
-  "start_url": ".",
-  "display": "standalone",
-  "theme_color": "#000000",
-  "background_color": "#ffffff"
-}
diff --git a/public/other_icons/wordicon.png b/public/other_icons/wordicon.png
deleted file mode 100644
index 01072ea07990cc634afed1ee1a8d67a0eb6881d3..0000000000000000000000000000000000000000
Binary files a/public/other_icons/wordicon.png and /dev/null differ
diff --git a/public/robots.txt b/public/robots.txt
deleted file mode 100644
index e9e57dc4d41b9b46e05112e9f45b7ea6ac0ba15e..0000000000000000000000000000000000000000
--- a/public/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# https://www.robotstxt.org/robotstxt.html
-User-agent: *
-Disallow:
diff --git a/public/serverside/nodeexpress.jpg b/public/serverside/nodeexpress.jpg
deleted file mode 100644
index 673680a111f656712e88f41e49e5867bc73d56e0..0000000000000000000000000000000000000000
Binary files a/public/serverside/nodeexpress.jpg and /dev/null differ
diff --git a/public/serverside/springbootjavalogo.png b/public/serverside/springbootjavalogo.png
deleted file mode 100644
index 6fa8675befd80a2b29c332c8cd5e9784c6941a4a..0000000000000000000000000000000000000000
Binary files a/public/serverside/springbootjavalogo.png and /dev/null differ
diff --git a/public/videodemo/NarutoEN.mp4 b/public/videodemo/NarutoEN.mp4
deleted file mode 100644
index 4b5a4ed9b91b9b0af0af8a5985ded2944c2f6792..0000000000000000000000000000000000000000
Binary files a/public/videodemo/NarutoEN.mp4 and /dev/null differ
diff --git a/rollup.config.js b/rollup.config.js
new file mode 100644
index 0000000000000000000000000000000000000000..88df14dd65b57ec35379abb7a858710e1faed391
--- /dev/null
+++ b/rollup.config.js
@@ -0,0 +1,36 @@
+import commonjs from "@rollup/plugin-commonjs";
+import resolve from "@rollup/plugin-node-resolve";
+import peerDepsExternal from "rollup-plugin-peer-deps-external";
+import typescript from "rollup-plugin-typescript2";
+import sass from "rollup-plugin-sass";
+import packageJson from "./package.json";
+//import jsx from 'rollup-plugin-jsx'
+//import json from "rollup-plugin-json";
+import { terser } from "rollup-plugin-terser";
+export default {
+  input: "./src/index.ts",
+  output: [
+    {
+      file: packageJson.main,
+      format: "cjs",
+      sourcemap: true,
+    },
+    {
+      file: packageJson.module,
+      format: "esm",
+      sourcemap: true,
+    },
+  ],
+  plugins: [
+    sass({ insert: true }),
+    peerDepsExternal(),
+    resolve(
+     // { preferBuiltins: true, mainFields: ['browser'] }
+      ),
+    commonjs(),
+    typescript(),
+    terser(),
+    //json(),
+    // jsx( {factory: 'React.createElement'} ),
+  ],
+};
diff --git a/src/App.css b/src/App.css
deleted file mode 100644
index 74b5e053450a48a6bdb4d71aad648e7af821975c..0000000000000000000000000000000000000000
--- a/src/App.css
+++ /dev/null
@@ -1,38 +0,0 @@
-.App {
-  text-align: center;
-}
-
-.App-logo {
-  height: 40vmin;
-  pointer-events: none;
-}
-
-@media (prefers-reduced-motion: no-preference) {
-  .App-logo {
-    animation: App-logo-spin infinite 20s linear;
-  }
-}
-
-.App-header {
-  background-color: #282c34;
-  min-height: 100vh;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  font-size: calc(10px + 2vmin);
-  color: white;
-}
-
-.App-link {
-  color: #61dafb;
-}
-
-@keyframes App-logo-spin {
-  from {
-    transform: rotate(0deg);
-  }
-  to {
-    transform: rotate(360deg);
-  }
-}
diff --git a/src/App.js b/src/App.js
deleted file mode 100644
index 12d1db6f421356b8c658bfb90437b5c4fb48b139..0000000000000000000000000000000000000000
--- a/src/App.js
+++ /dev/null
@@ -1,34 +0,0 @@
-//import logo from './static/files-ui-logo - arrow-samsung-2.png';
-import './App.css';
-
-function App() {
-  return (
-    <div className="App">
-      <nav className="filesui-nav">
-
-      </nav>
-      <main  className="filesui-main">
-
-      </main>
-      <footer className="filesui-footer">
-
-      </footer>
-      <header className="App-header">
-       {/*  <img src={logo} className="App-logo" alt="logo" />
-        */} <p>
-          Edit <code className="code">src/App.js</code> and save to reload.
-        </p>
-        <a
-          className="App-link"
-          href="https://reactjs.org"
-          target="_blank"
-          rel="noopener noreferrer"
-        >
-          Learn React
-        </a>
-      </header>
-    </div>
-  );
-}
-
-export default App;
diff --git a/src/App.test.js b/src/App.test.js
deleted file mode 100644
index 1f03afeece5ac28064fa3c73a29215037465f789..0000000000000000000000000000000000000000
--- a/src/App.test.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import { render, screen } from '@testing-library/react';
-import App from './App';
-
-test('renders learn react link', () => {
-  render(<App />);
-  const linkElement = screen.getByText(/learn react/i);
-  expect(linkElement).toBeInTheDocument();
-});
diff --git a/src/files-ui/Avatar/Avatar.scss b/src/Avatar/Avatar.scss
similarity index 100%
rename from src/files-ui/Avatar/Avatar.scss
rename to src/Avatar/Avatar.scss
diff --git a/src/files-ui/Avatar/Avatar.tsx b/src/Avatar/Avatar.tsx
similarity index 100%
rename from src/files-ui/Avatar/Avatar.tsx
rename to src/Avatar/Avatar.tsx
diff --git a/src/files-ui/Avatar/AvatarProps.ts b/src/Avatar/AvatarProps.ts
similarity index 100%
rename from src/files-ui/Avatar/AvatarProps.ts
rename to src/Avatar/AvatarProps.ts
diff --git a/src/files-ui/Avatar/index.ts b/src/Avatar/index.ts
similarity index 100%
rename from src/files-ui/Avatar/index.ts
rename to src/Avatar/index.ts
diff --git a/src/files-ui/Avatar/useAvatarClassName.ts b/src/Avatar/useAvatarClassName.ts
similarity index 100%
rename from src/files-ui/Avatar/useAvatarClassName.ts
rename to src/Avatar/useAvatarClassName.ts
diff --git a/src/files-ui/Avatar/useAvatarStyle.ts b/src/Avatar/useAvatarStyle.ts
similarity index 100%
rename from src/files-ui/Avatar/useAvatarStyle.ts
rename to src/Avatar/useAvatarStyle.ts
diff --git a/src/files-ui/DownloadHidden/DownloadHidden.tsx b/src/DownloadHidden/DownloadHidden.tsx
similarity index 100%
rename from src/files-ui/DownloadHidden/DownloadHidden.tsx
rename to src/DownloadHidden/DownloadHidden.tsx
diff --git a/src/files-ui/DropLayer/components/DropLayer.tsx b/src/DropLayer/components/DropLayer.tsx
similarity index 100%
rename from src/files-ui/DropLayer/components/DropLayer.tsx
rename to src/DropLayer/components/DropLayer.tsx
diff --git a/src/files-ui/DropLayer/components/DropLayerProps.scss b/src/DropLayer/components/DropLayerProps.scss
similarity index 100%
rename from src/files-ui/DropLayer/components/DropLayerProps.scss
rename to src/DropLayer/components/DropLayerProps.scss
diff --git a/src/files-ui/DropLayer/components/DropLayerProps.ts b/src/DropLayer/components/DropLayerProps.ts
similarity index 100%
rename from src/files-ui/DropLayer/components/DropLayerProps.ts
rename to src/DropLayer/components/DropLayerProps.ts
diff --git a/src/files-ui/DropLayer/utils/dropLayerDynamicStyle.ts b/src/DropLayer/utils/dropLayerDynamicStyle.ts
similarity index 100%
rename from src/files-ui/DropLayer/utils/dropLayerDynamicStyle.ts
rename to src/DropLayer/utils/dropLayerDynamicStyle.ts
diff --git a/src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.scss b/src/Dropzone/components/DropzoneButtons/DropzoneButtons.scss
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.scss
rename to src/Dropzone/components/DropzoneButtons/DropzoneButtons.scss
diff --git a/src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx b/src/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
rename to src/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
diff --git a/src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.scss b/src/Dropzone/components/DropzoneChildren/DropzoneChildren.scss
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.scss
rename to src/Dropzone/components/DropzoneChildren/DropzoneChildren.scss
diff --git a/src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx b/src/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
rename to src/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
diff --git a/src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss b/src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss
rename to src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss
diff --git a/src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx b/src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
rename to src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
diff --git a/src/files-ui/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx b/src/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
rename to src/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
diff --git a/src/files-ui/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx b/src/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
similarity index 100%
rename from src/files-ui/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
rename to src/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
diff --git a/src/files-ui/Dropzone/components/dropzone/Dropzone.scss b/src/Dropzone/components/dropzone/Dropzone.scss
similarity index 100%
rename from src/files-ui/Dropzone/components/dropzone/Dropzone.scss
rename to src/Dropzone/components/dropzone/Dropzone.scss
diff --git a/src/files-ui/Dropzone/components/dropzone/Dropzone.tsx b/src/Dropzone/components/dropzone/Dropzone.tsx
similarity index 100%
rename from src/files-ui/Dropzone/components/dropzone/Dropzone.tsx
rename to src/Dropzone/components/dropzone/Dropzone.tsx
diff --git a/src/files-ui/Dropzone/components/dropzone/DropzoneProps.ts b/src/Dropzone/components/dropzone/DropzoneProps.ts
similarity index 100%
rename from src/files-ui/Dropzone/components/dropzone/DropzoneProps.ts
rename to src/Dropzone/components/dropzone/DropzoneProps.ts
diff --git a/src/files-ui/Dropzone/components/dropzone/DropzoneRipple.scss b/src/Dropzone/components/dropzone/DropzoneRipple.scss
similarity index 100%
rename from src/files-ui/Dropzone/components/dropzone/DropzoneRipple.scss
rename to src/Dropzone/components/dropzone/DropzoneRipple.scss
diff --git a/src/files-ui/Dropzone/index.ts b/src/Dropzone/index.ts
similarity index 100%
rename from src/files-ui/Dropzone/index.ts
rename to src/Dropzone/index.ts
diff --git a/src/files-ui/FileCard/FileCard.scss b/src/FileCard/FileCard.scss
similarity index 100%
rename from src/files-ui/FileCard/FileCard.scss
rename to src/FileCard/FileCard.scss
diff --git a/src/files-ui/FileCard/FileCard.tsx b/src/FileCard/FileCard.tsx
similarity index 100%
rename from src/files-ui/FileCard/FileCard.tsx
rename to src/FileCard/FileCard.tsx
diff --git a/src/files-ui/FileCard/FileCardProps.ts b/src/FileCard/FileCardProps.ts
similarity index 100%
rename from src/files-ui/FileCard/FileCardProps.ts
rename to src/FileCard/FileCardProps.ts
diff --git a/src/files-ui/FileCard/components/FileCardInfoLayer.tsx b/src/FileCard/components/FileCardInfoLayer.tsx
similarity index 100%
rename from src/files-ui/FileCard/components/FileCardInfoLayer.tsx
rename to src/FileCard/components/FileCardInfoLayer.tsx
diff --git a/src/files-ui/FileCard/components/FileCardPaper.scss b/src/FileCard/components/FileCardPaper.scss
similarity index 100%
rename from src/files-ui/FileCard/components/FileCardPaper.scss
rename to src/FileCard/components/FileCardPaper.scss
diff --git a/src/files-ui/FileCard/components/FileCardRightActions.scss b/src/FileCard/components/FileCardRightActions.scss
similarity index 100%
rename from src/files-ui/FileCard/components/FileCardRightActions.scss
rename to src/FileCard/components/FileCardRightActions.scss
diff --git a/src/files-ui/FileCard/components/FileCardRightActions.tsx b/src/FileCard/components/FileCardRightActions.tsx
similarity index 100%
rename from src/files-ui/FileCard/components/FileCardRightActions.tsx
rename to src/FileCard/components/FileCardRightActions.tsx
diff --git a/src/files-ui/FileCard/components/FileCardUploadLayer.scss b/src/FileCard/components/FileCardUploadLayer.scss
similarity index 100%
rename from src/files-ui/FileCard/components/FileCardUploadLayer.scss
rename to src/FileCard/components/FileCardUploadLayer.scss
diff --git a/src/files-ui/FileCard/components/FileCardUploadLayer.tsx b/src/FileCard/components/FileCardUploadLayer.tsx
similarity index 100%
rename from src/files-ui/FileCard/components/FileCardUploadLayer.tsx
rename to src/FileCard/components/FileCardUploadLayer.tsx
diff --git a/src/files-ui/FileInputButton/FileInputButton.tsx b/src/FileInputButton/FileInputButton.tsx
similarity index 100%
rename from src/files-ui/FileInputButton/FileInputButton.tsx
rename to src/FileInputButton/FileInputButton.tsx
diff --git a/src/files-ui/FileInputButton/InputButtonProps.ts b/src/FileInputButton/InputButtonProps.ts
similarity index 100%
rename from src/files-ui/FileInputButton/InputButtonProps.ts
rename to src/FileInputButton/InputButtonProps.ts
diff --git a/src/files-ui/FileInputButton/index.ts b/src/FileInputButton/index.ts
similarity index 100%
rename from src/files-ui/FileInputButton/index.ts
rename to src/FileInputButton/index.ts
diff --git a/src/files-ui/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx b/src/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
rename to src/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss b/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss
rename to src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss
diff --git a/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx b/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
rename to src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts b/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
rename to src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
diff --git a/src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss b/src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss
rename to src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss
diff --git a/src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx b/src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx
rename to src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts b/src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
rename to src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
diff --git a/src/files-ui/FileMosaic/components/FileMosaicName/FileMosaicName.tsx b/src/FileMosaic/components/FileMosaicName/FileMosaicName.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicName/FileMosaicName.tsx
rename to src/FileMosaic/components/FileMosaicName/FileMosaicName.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.scss b/src/FileMosaic/components/FileMosaicSize/FileMosaicSize.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.scss
rename to src/FileMosaic/components/FileMosaicSize/FileMosaicSize.scss
diff --git a/src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.tsx b/src/FileMosaic/components/FileMosaicSize/FileMosaicSize.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.tsx
rename to src/FileMosaic/components/FileMosaicSize/FileMosaicSize.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.scss b/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.scss
rename to src/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.scss
diff --git a/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx b/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
rename to src/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts b/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
rename to src/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
diff --git a/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
rename to src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
diff --git a/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
rename to src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss
rename to src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss
diff --git a/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
rename to src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
diff --git a/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
similarity index 100%
rename from src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
rename to src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
diff --git a/src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.scss b/src/FileMosaic/components/file-mosaic-layer/Layer.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.scss
rename to src/FileMosaic/components/file-mosaic-layer/Layer.scss
diff --git a/src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.tsx b/src/FileMosaic/components/file-mosaic-layer/Layer.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.tsx
rename to src/FileMosaic/components/file-mosaic-layer/Layer.tsx
diff --git a/src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.scss b/src/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
rename to src/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
diff --git a/src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx b/src/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
rename to src/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
diff --git a/src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.scss b/src/FileMosaic/components/file-mosaic/FileMosaic.scss
similarity index 100%
rename from src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.scss
rename to src/FileMosaic/components/file-mosaic/FileMosaic.scss
diff --git a/src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.tsx b/src/FileMosaic/components/file-mosaic/FileMosaic.tsx
similarity index 100%
rename from src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.tsx
rename to src/FileMosaic/components/file-mosaic/FileMosaic.tsx
diff --git a/src/files-ui/FileMosaic/components/file-mosaic/FileMosaicProps.ts b/src/FileMosaic/components/file-mosaic/FileMosaicProps.ts
similarity index 100%
rename from src/files-ui/FileMosaic/components/file-mosaic/FileMosaicProps.ts
rename to src/FileMosaic/components/file-mosaic/FileMosaicProps.ts
diff --git a/src/files-ui/FileMosaic/index.ts b/src/FileMosaic/index.ts
similarity index 100%
rename from src/files-ui/FileMosaic/index.ts
rename to src/FileMosaic/index.ts
diff --git a/src/files-ui/FileStatus/AbortedStatus.tsx b/src/FileStatus/AbortedStatus.tsx
similarity index 100%
rename from src/files-ui/FileStatus/AbortedStatus.tsx
rename to src/FileStatus/AbortedStatus.tsx
diff --git a/src/files-ui/FileStatus/EmptyStatus.tsx b/src/FileStatus/EmptyStatus.tsx
similarity index 100%
rename from src/files-ui/FileStatus/EmptyStatus.tsx
rename to src/FileStatus/EmptyStatus.tsx
diff --git a/src/files-ui/FileStatus/ErrorStatus.tsx b/src/FileStatus/ErrorStatus.tsx
similarity index 100%
rename from src/files-ui/FileStatus/ErrorStatus.tsx
rename to src/FileStatus/ErrorStatus.tsx
diff --git a/src/files-ui/FileStatus/FileStatusProps.ts b/src/FileStatus/FileStatusProps.ts
similarity index 100%
rename from src/files-ui/FileStatus/FileStatusProps.ts
rename to src/FileStatus/FileStatusProps.ts
diff --git a/src/files-ui/FileStatus/PreparingStatus.tsx b/src/FileStatus/PreparingStatus.tsx
similarity index 100%
rename from src/files-ui/FileStatus/PreparingStatus.tsx
rename to src/FileStatus/PreparingStatus.tsx
diff --git a/src/files-ui/FileStatus/SuccessStatus.tsx b/src/FileStatus/SuccessStatus.tsx
similarity index 100%
rename from src/files-ui/FileStatus/SuccessStatus.tsx
rename to src/FileStatus/SuccessStatus.tsx
diff --git a/src/files-ui/FileStatus/UploadingStatus.tsx b/src/FileStatus/UploadingStatus.tsx
similarity index 100%
rename from src/files-ui/FileStatus/UploadingStatus.tsx
rename to src/FileStatus/UploadingStatus.tsx
diff --git a/src/files-ui/FileStatus/index.ts b/src/FileStatus/index.ts
similarity index 100%
rename from src/files-ui/FileStatus/index.ts
rename to src/FileStatus/index.ts
diff --git a/src/files-ui/FilesUiProvider/FilesUIConfig.ts b/src/FilesUiProvider/FilesUIConfig.ts
similarity index 100%
rename from src/files-ui/FilesUiProvider/FilesUIConfig.ts
rename to src/FilesUiProvider/FilesUIConfig.ts
diff --git a/src/files-ui/FilesUiProvider/FilesUiContext.ts b/src/FilesUiProvider/FilesUiContext.ts
similarity index 100%
rename from src/files-ui/FilesUiProvider/FilesUiContext.ts
rename to src/FilesUiProvider/FilesUiContext.ts
diff --git a/src/files-ui/FilesUiProvider/FilesUiProvider.tsx b/src/FilesUiProvider/FilesUiProvider.tsx
similarity index 100%
rename from src/files-ui/FilesUiProvider/FilesUiProvider.tsx
rename to src/FilesUiProvider/FilesUiProvider.tsx
diff --git a/src/files-ui/FilesUiProvider/index.ts b/src/FilesUiProvider/index.ts
similarity index 100%
rename from src/files-ui/FilesUiProvider/index.ts
rename to src/FilesUiProvider/index.ts
diff --git a/src/files-ui/FullScreen/FullScreen.scss b/src/FullScreen/FullScreen.scss
similarity index 100%
rename from src/files-ui/FullScreen/FullScreen.scss
rename to src/FullScreen/FullScreen.scss
diff --git a/src/files-ui/FullScreen/FullScreen.tsx b/src/FullScreen/FullScreen.tsx
similarity index 100%
rename from src/files-ui/FullScreen/FullScreen.tsx
rename to src/FullScreen/FullScreen.tsx
diff --git a/src/files-ui/FullScreen/FullScreenProps.ts b/src/FullScreen/FullScreenProps.ts
similarity index 100%
rename from src/files-ui/FullScreen/FullScreenProps.ts
rename to src/FullScreen/FullScreenProps.ts
diff --git a/src/files-ui/ImagePreview/ImagePreview.scss b/src/ImagePreview/ImagePreview.scss
similarity index 100%
rename from src/files-ui/ImagePreview/ImagePreview.scss
rename to src/ImagePreview/ImagePreview.scss
diff --git a/src/files-ui/ImagePreview/ImagePreview.tsx b/src/ImagePreview/ImagePreview.tsx
similarity index 100%
rename from src/files-ui/ImagePreview/ImagePreview.tsx
rename to src/ImagePreview/ImagePreview.tsx
diff --git a/src/files-ui/ImagePreview/ImagePreviewProps.ts b/src/ImagePreview/ImagePreviewProps.ts
similarity index 100%
rename from src/files-ui/ImagePreview/ImagePreviewProps.ts
rename to src/ImagePreview/ImagePreviewProps.ts
diff --git a/src/files-ui/InputHidden/InputHidden.tsx b/src/InputHidden/InputHidden.tsx
similarity index 100%
rename from src/files-ui/InputHidden/InputHidden.tsx
rename to src/InputHidden/InputHidden.tsx
diff --git a/src/files-ui/InputHidden/InputHiddenProps.ts b/src/InputHidden/InputHiddenProps.ts
similarity index 100%
rename from src/files-ui/InputHidden/InputHiddenProps.ts
rename to src/InputHidden/InputHiddenProps.ts
diff --git a/src/files-ui/MaterialButton/MaterialButton.scss b/src/MaterialButton/MaterialButton.scss
similarity index 100%
rename from src/files-ui/MaterialButton/MaterialButton.scss
rename to src/MaterialButton/MaterialButton.scss
diff --git a/src/files-ui/MaterialButton/MaterialButton.tsx b/src/MaterialButton/MaterialButton.tsx
similarity index 100%
rename from src/files-ui/MaterialButton/MaterialButton.tsx
rename to src/MaterialButton/MaterialButton.tsx
diff --git a/src/files-ui/MaterialButton/MaterialButtonProps.ts b/src/MaterialButton/MaterialButtonProps.ts
similarity index 100%
rename from src/files-ui/MaterialButton/MaterialButtonProps.ts
rename to src/MaterialButton/MaterialButtonProps.ts
diff --git a/src/files-ui/MaterialButton/hooks/useMaterialButtonClassName.ts b/src/MaterialButton/hooks/useMaterialButtonClassName.ts
similarity index 100%
rename from src/files-ui/MaterialButton/hooks/useMaterialButtonClassName.ts
rename to src/MaterialButton/hooks/useMaterialButtonClassName.ts
diff --git a/src/files-ui/MaterialButton/index.ts b/src/MaterialButton/index.ts
similarity index 100%
rename from src/files-ui/MaterialButton/index.ts
rename to src/MaterialButton/index.ts
diff --git a/src/files-ui/MaterialButton/utils/MaterialButtonStyleManager.ts b/src/MaterialButton/utils/MaterialButtonStyleManager.ts
similarity index 100%
rename from src/files-ui/MaterialButton/utils/MaterialButtonStyleManager.ts
rename to src/MaterialButton/utils/MaterialButtonStyleManager.ts
diff --git a/src/files-ui/VideoPreview/VideoPreview.scss b/src/VideoPreview/VideoPreview.scss
similarity index 100%
rename from src/files-ui/VideoPreview/VideoPreview.scss
rename to src/VideoPreview/VideoPreview.scss
diff --git a/src/files-ui/VideoPreview/VideoPreview.tsx b/src/VideoPreview/VideoPreview.tsx
similarity index 100%
rename from src/files-ui/VideoPreview/VideoPreview.tsx
rename to src/VideoPreview/VideoPreview.tsx
diff --git a/src/files-ui/VideoPreview/VideoPreviewProps.ts b/src/VideoPreview/VideoPreviewProps.ts
similarity index 100%
rename from src/files-ui/VideoPreview/VideoPreviewProps.ts
rename to src/VideoPreview/VideoPreviewProps.ts
diff --git a/src/components/MainMenu/MainMenuSideBar.tsx b/src/components/MainMenu/MainMenuSideBar.tsx
deleted file mode 100644
index bb7568892e40a71aa68b89b92aab85b5fcb34d23..0000000000000000000000000000000000000000
--- a/src/components/MainMenu/MainMenuSideBar.tsx
+++ /dev/null
@@ -1,377 +0,0 @@
-import * as React from "react";
-import ListSubheader from "@mui/material/ListSubheader";
-import List from "@mui/material/List";
-import ListItemButton from "@mui/material/ListItemButton";
-import ListItemIcon from "@mui/material/ListItemIcon";
-import ListItemText from "@mui/material/ListItemText";
-import Collapse from "@mui/material/Collapse";
-
-import { MainMenuSideBarItems, MainMenuSideBarProps } from "./MenuSideBarProps";
-import ElectricBoltIcon from "@mui/icons-material/ElectricBolt";
-import { useNavigateToTop } from "../../hooks/useNavigateToTop";
-
-import ExpandLess from "@mui/icons-material/ExpandLess";
-import ExpandMore from "@mui/icons-material/ExpandMore";
-
-export default function MainMenuSideBar(props: MainMenuSideBarProps) {
-  const { /* items, */ selectedIndex /* setSelectedIndex */ } = props;
-  const navigate = useNavigateToTop();
-
-  const quickStartItemsIni: MainMenuSideBarItems[] = [
-    {
-      label: "Getting started",
-      index: 0,
-      onClick: () => navigate("/getting-started"),
-    },
-    {
-      label: "Usage -  Basic & Advanced example",
-      index: 1,
-      onClick: () => navigate("/usage"),
-    },
-  ];
-
-  const RegularItemsIni: MainMenuSideBarItems[] = [
-    {
-      //Icon: <FileOpenIcon />,
-      label: "Components",
-      index: 2,
-      isOpen: false,
-      subMenu: [
-        {
-          label: "Dropzone",
-          index: 21,
-          onClick: () => navigate("/components/dropzone"),
-        },
-        {
-          label: "FileMosaic",
-          index: 22,
-          onClick: () => navigate("/components/filemosaic"),
-        },
-        {
-          label: "FileInputButton",
-          index: 23,
-          onClick: () => navigate("/components/fileinputbutton"),
-        },
-        {
-          label: "FileCard",
-          index: 24,
-          onClick: () => navigate("/components/filecard"),
-        },
-        {
-          label: "Avatar",
-          index: 25,
-          onClick: () => navigate("/components/avatar"),
-        },
-        {
-          label: "FullScreen (Img & Vid)",
-          index: 26,
-          onClick: () => navigate("/components/fullscreen"),
-        },
-      ],
-    },
-    {
-      // Icon: <DocumentScannerIcon />,
-      label: "API documentation",
-      index: 3,
-
-      subMenu: [
-        {
-          label: "Avatar",
-          index: 31,
-          onClick: () => navigate("/api/avatar"),
-        },
-        {
-          label: "Dropzone",
-          index: 32,
-          onClick: () => navigate("/api/dropzone"),
-        },
-
-        {
-          label: "FileInputButton",
-          index: 33,
-          onClick: () => navigate("/api/fileinputbutton"),
-        },
-        {
-          label: "FileCard",
-          index: 34,
-          onClick: () => navigate("/api/filecard"),
-        },
-        {
-          label: "FileMosaic",
-          index: 35,
-          onClick: () => navigate("/api/filemosaic"),
-        },
-        {
-          label: "FullScreen",
-          index: 36,
-          onClick: () => navigate("/api/fullscreen"),
-        },
-        {
-          label: "ImagePreview",
-          index: 37,
-          onClick: () => navigate("/api/imagepreview"),
-        },
-        {
-          label: "VideoPreview",
-          index: 38,
-          onClick: () => navigate("/api/videopreview"),
-        },
-      ],
-    },
-    {
-      label: "File icons",
-      index: 4,
-      onClick: () => navigate("/file-icons"),
-    },
-    {
-      label: "Localization",
-      index: 5,
-      onClick: () => navigate("/localization"),
-    },
-    
-    /* {
-      label: "Code Generator",
-      index: 7,
-      onClick: () => navigate("/code-generator"),
-    }, */
-    {
-      label: "Types",
-      index: 7,
-      onClick: () => navigate("/types"),
-    },
-    {
-      label: "Server side",
-      index: 6,
-      onClick: () => navigate("/server-side"),
-    },
-   /*  {
-      label: "File readers",
-      index: 8,
-      onClick: () => navigate("/file-reader"),
-    },
- */
-    {
-      label: "File download",
-      index: 9,
-      onClick: () => navigate("/file-download"),
-    },
-    {
-      label: "Global config",
-      index: 10,
-      onClick: () => navigate("/global-config"),
-    },
-  ];
-
-  const [quickStartItems /* setQuickStartItems */] =
-    React.useState(quickStartItemsIni);
-
-  const [regularItems, setRegularItemsIni] = React.useState(
-    RegularItemsIni.map((x) => {
-      return { ...x, isOpen: x.subMenu && x.index === selectedIndex };
-    })
-  );
-
-
-  /*   const handleClick = () => {
-    //setOpen(!open);
-  }; */
-
-  /*   const handleCLickItem = (
-    e: React.MouseEvent<HTMLDivElement, MouseEvent>,
-    onClick: Function | undefined
-  ): void => {
-    onClick?.();
-  }; */
-
-  //const [selectedIndex, setSelectedIndex] = React.useState(1);
-  function handler(ev:React.MouseEvent<HTMLDivElement, MouseEvent>) {
-    console.log('CTRL pressed during click:', ev.ctrlKey);
-  }
-  const handleListItemClick = (
-    event: React.MouseEvent<HTMLDivElement, MouseEvent>,
-    index: number,
-    onClick: Function | undefined,
-    withSubMenu?: boolean
-  ) => {
-    handler(event);
-    
-    //setSelectedIndex(index);
-    console.log("newIndex",index, withSubMenu);
-    if (!withSubMenu) {
-      onClick?.();
-    } else {
-      setRegularItemsIni((arr) =>
-        arr.map((item) => {
-      /*     if (item.subMenu) {
-            const newSubMenu = item.subMenu.map((x) => {
-              if (x.index === index) {
-                return { ...x , };
-              } else {
-                return { ...x };
-              }
-            });
-            return { ...item, subMenu: newSubMenu };
-          } else */
-          
-         
-          if (item.index === index) {
-            return { ...item, isOpen: !item.isOpen };
-          }
-          return { ...item };
-        })
-      );
-    }
-  };
-
-  return (
-    <React.Fragment>
-      <List
-        sx={{ width: "100%", maxWidth: 400, bgcolor: "background.paper" }}
-        component="nav"
-        aria-labelledby="nested-list-subheader"
-        subheader={
-          <ListSubheader component="div" id="nested-list-subheader">
-            <ElectricBoltIcon /> Quick Start
-          </ListSubheader>
-        }
-      >
-        {quickStartItems &&
-          quickStartItems.map(
-            ({ Icon, label, onClick, index, subMenu, isOpen }, indexBase) => (
-              <React.Fragment key={indexBase}>
-                <ListItemButton
-                  style={{ padding: "2px 20px" }}
-                  key={indexBase}
-                  selected={subMenu === undefined && selectedIndex === index}
-                  //selected={selectedIndex === index}
-                  onClick={(event) =>
-                    handleListItemClick(
-                      event,
-                      index,
-                      onClick,
-                      subMenu !== undefined
-                    )
-                  }
-                >
-                  {Icon && (
-                    <ListItemIcon
-                      style={{ minWidth: "30px", marginLeft: "5px" }}
-                    >
-                      {Icon}
-                    </ListItemIcon>
-                  )}
-                  <ListItemText
-                    primary={label || ""}
-                    primaryTypographyProps={{ fontWeight: "600" }}
-                  />
-                </ListItemButton>
-
-                {subMenu && (
-                  <Collapse
-                    in={isOpen}
-                    timeout="auto"
-                    unmountOnExit
-                    key={"collapse-submenu" + indexBase}
-                  >
-                    <List component="div" disablePadding>
-                      {subMenu.map(
-                        ({ Icon, label, onClick, index }, index2) => (
-                          <ListItemButton
-                            sx={{ pl: 4 }}
-                            selected={selectedIndex === index}
-                            key={index2 + indexBase}
-                            onClick={(event) =>
-                              handleListItemClick(event, index, onClick)
-                            }
-                          >
-                            {Icon && <ListItemIcon>{Icon}</ListItemIcon>}
-                            <ListItemText primary={label || ""} />
-                          </ListItemButton>
-                        )
-                      )}
-                    </List>
-                  </Collapse>
-                )}
-              </React.Fragment>
-            )
-          )}
-      </List>
-      <List
-        sx={{ width: "100%", maxWidth: 400, bgcolor: "background.paper" }}
-        component="nav"
-        aria-labelledby="nested-list-subheader"
-        subheader={
-          <ListSubheader component="div" id="nested-list-subheader">
-            Full documentation
-          </ListSubheader>
-        }
-      >
-        {regularItems &&
-          regularItems.map(
-            ({ Icon, label, onClick, index, subMenu, isOpen }, indexBase) => (
-              <React.Fragment key={indexBase}>
-                <ListItemButton
-                  style={{ padding: "2px 20px" }}
-                  key={indexBase}
-                  // selected={subMenu === undefined && selectedIndex === index}
-                  selected={
-                    (subMenu === undefined || isOpen) && selectedIndex === index
-                  }
-                  onClick={(event) =>
-                    handleListItemClick(
-                      event,
-                      index,
-                      onClick,
-                      subMenu !== undefined
-                    )
-                  }
-                >
-                  {Icon && (
-                    <ListItemIcon
-                      style={{ minWidth: "30px", marginLeft: "5px" }}
-                    >
-                      {Icon}
-                    </ListItemIcon>
-                  )}
-                  <ListItemText
-                    primary={label || ""}
-                    primaryTypographyProps={{ fontWeight: "600" }}
-                  />
-                  {subMenu && <>{isOpen ? <ExpandLess /> : <ExpandMore />}</>}
-                </ListItemButton>
-
-                {subMenu && (
-                  <Collapse
-                    in={isOpen}
-                    timeout="auto"
-                    unmountOnExit
-                    key={"collapse-submenu" + indexBase}
-                  >
-                    <List component="div" disablePadding>
-                      {subMenu.map(
-                        ({ Icon, label, onClick, index }, index2) => (
-                          <ListItemButton
-                            style={{ paddingTop: 0 }}
-                            sx={{ pl: 4 }}
-                            //selected={selectedIndex === index}
-                            selected={selectedIndex === index}
-                            key={index2 + indexBase}
-                            onClick={(event) =>
-                              handleListItemClick(event, index, onClick)
-                            }
-                          >
-                            {Icon && <ListItemIcon>{Icon}</ListItemIcon>}
-                            <ListItemText primary={label || ""} />
-                          </ListItemButton>
-                        )
-                      )}
-                    </List>
-                  </Collapse>
-                )}
-              </React.Fragment>
-            )
-          )}
-      </List>
-    </React.Fragment>
-  );
-}
diff --git a/src/components/MainMenu/MenuSideBarProps.ts b/src/components/MainMenu/MenuSideBarProps.ts
deleted file mode 100644
index be74a5870e621c1ad49dc662d94a87a2edca41ff..0000000000000000000000000000000000000000
--- a/src/components/MainMenu/MenuSideBarProps.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-export interface MainMenuSideBarPropsIndividual {
-    label?: string,
-    Icon?: any,
-    onClick?: Function,
-    index: number
-}
-
-export type MainMenuSideBarItems = {
-    label?: string,
-    Icon?: any,
-    onClick?: Function,
-    index: number,
-    subMenu?: Array<MainMenuSideBarPropsIndividual>,
-    isOpen?:boolean;
-}
-
-export type MainMenuSideBarProps = {
-    items: MainMenuSideBarItems[],
-    selectedIndex:number,
-    setSelectedIndex:Function,
-}
\ No newline at end of file
diff --git a/src/components/MainPage/Badges.jsx b/src/components/MainPage/Badges.jsx
deleted file mode 100644
index b0ccdf1f5f072dfed8e55e4cb3765ed923dc5950..0000000000000000000000000000000000000000
--- a/src/components/MainPage/Badges.jsx
+++ /dev/null
@@ -1,96 +0,0 @@
-import React from "react";
-const styles = {
-  badge: { padding: "0 4px", margin:0 },
-};
-const Badges = (props) => {
-  return (
-    <div
-      style={{
-        display: "flex",
-        flexDirection: "row",
-        flexWrap: "wrap",
-        alignItems: "center",
-        justifyContent: "center",
-        margin:"10px 0"
-      }}
-    >
-      <a
-        style={styles.badge}
-        href="https://www.npmjs.com/package/@dropzone-ui/react"
-      >
-        <img
-          src="https://img.shields.io/npm/v/@dropzone-ui/react.svg?logo=npm&logoColor=fff&label=NPM+package&color=limegreen"
-          alt="npm latest package"
-        />
-      </a>
-
-      <a
-        style={styles.badge}
-        href="https://openbase.com/js/@dropzone-ui/react?utm_source=embedded&utm_medium=badge&utm_campaign=rate-badge"
-      >
-        <img
-          src="https://badges.openbase.com/js/rating/@dropzone-ui/react.svg"
-          alt="Rate on Openbase"
-        />
-      </a>
-
-      <a
-        style={styles.badge}
-        href="https://github.com/dropzone-ui/react-dropzone"
-      >
-        <img
-          src="https://github.com/dropzone-ui/react-dropzone/actions/workflows/node.js.yml/badge.svg"
-          alt="Build Status"
-        />
-      </a>
-
-      <a
-        style={styles.badge}
-        href="https://lgtm.com/projects/g/dropzone-ui/dropzone-ui/context:javascript"
-      >
-        <img
-          src="https://img.shields.io/lgtm/grade/javascript/g/dropzone-ui/dropzone-ui.svg?logo=lgtm&logoWidth=18"
-          alt="Language grade: JavaScript"
-        />
-      </a>
-
-     {/*  <a
-        style={styles.badge}
-        href="https://snyk.io/test/github/dropzone-ui/react"
-      >
-        <img
-          src="https://snyk.io/test/github/dropzone-ui/react/badge.svg"
-          alt="Known Vulnerabilities"
-        />
-      </a> */}
-
-   {/*    <a
-        style={styles.badge}
-        href="https://packagequality.com/#?package=dropzone-ui"
-      >
-        <img
-          src="https://packagequality.com/shield/dropzone-ui.svg"
-          alt="Package Quality"
-        />
-      </a> */}
-
-    {/*   <a
-        style={styles.badge}
-        href="https://packagephobia.com/result?p=@dropzone-ui/react"
-      >
-        <img
-          src="https://packagephobia.com/badge?p=@dropzone-ui/react"
-          alt="install size"
-        />
-      </a> */}
-
-      {/* <a style={styles.badge} href="http://makeapullrequest.com">
-        <img
-          src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square"
-          alt="PRs Welcome"
-        />
-      </a> */}
-    </div>
-  );
-};
-export default Badges;
diff --git a/src/components/MainPage/DarkModeLightModeButton.jsx b/src/components/MainPage/DarkModeLightModeButton.jsx
deleted file mode 100644
index 9de2811ccb58257f1e892917633ab0d949e01bb3..0000000000000000000000000000000000000000
--- a/src/components/MainPage/DarkModeLightModeButton.jsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import * as React from "react";
-import DarkModeIcon from "@mui/icons-material/DarkMode";
-import LightModeIcon from "@mui/icons-material/LightMode";
-import { IconButton, Tooltip } from "@mui/material";
-
-const DarkModeLightModeButton = ({ darkModeOn, onChangeDarkMode }) => {
-  //const [darkModeOn, setDarkModeOn] = React.useState(false);
-  const handleDarkMode = () => {
-    //setDarkModeOn((darkModeOn) => {
-    onChangeDarkMode?.();
-    //  return !darkModeOn;
-    //});
-  };
-  if (darkModeOn)
-    return (
-      <Tooltip title="Turn on the light">
-        <IconButton
-          style={{ borderRadius: "8px", border: "0.5px solid #eaeef3" }}
-          onClick={handleDarkMode}
-          color="secondary"
-          aria-label="upload picture"
-          component="label"
-        >
-          <DarkModeIcon /* htmlColor="white" */ />
-        </IconButton>
-      </Tooltip>
-    );
-  else {
-    return (
-      <Tooltip title="Turn off the light">
-        <IconButton
-          style={{ borderRadius: "8px", border: "0.5px solid #eaeef3" }}
-
-          onClick={handleDarkMode}
-          color="secondary"
-          aria-label="upload picture"
-          component="label"
-        >
-          <LightModeIcon />
-        </IconButton>
-      </Tooltip>
-    );
-  }
-};
-export default DarkModeLightModeButton;
diff --git a/src/components/MainPage/GettingStarted.jsx b/src/components/MainPage/GettingStarted.jsx
deleted file mode 100644
index f05ee7ce342ea42b139f1a79f00179a4c71da6da..0000000000000000000000000000000000000000
--- a/src/components/MainPage/GettingStarted.jsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import * as React from "react";
-import { Button, styled } from "@mui/material";
-import ContentCopyIcon from "@mui/icons-material/ContentCopy";
-import CheckIcon from "@mui/icons-material/Check";
-import "../../styles/GettingStarted.scss";
-import ArrowForwardIosIcon from "@mui/icons-material/ArrowForwardIos";
-//import { useNavigate } from "react-router";
-import { useNavigateToTop } from "../../hooks/useNavigateToTop";
-const CodeButton = styled(Button)({
-  display: "flex",
-  justifyContent: "space-between",
-  textTransform: "lowercase",
-  padding: "10px 20px",
-  borderRadius: "16px",
-  fontSize: "1rem",
-  //fontWeight: "700",
-  // fontFamily: '"Poppins", sans-serif',
-});
-
-const GettingStarted = ({ darkModeOn }) => {
-  const navigator = useNavigateToTop();
-
-  const [copiedNpm, setCopiedNpm] = React.useState(false);
-  const [copiedYarn, setCopiedYarn] = React.useState(false);
-
-  const handleCopyInstallationNPM = () => {
-    setCopiedNpm(true);
-
-    setTimeout(() => {
-      setCopiedNpm(false);
-    }, 2000);
-  };
-  const handleCopyInstallationYarn = () => {
-    setCopiedYarn(true);
-
-    setTimeout(() => {
-      setCopiedYarn(false);
-    }, 2000);
-  };
-
-  const goToGettingStarted = () => {
-    navigator("/getting-started");
-  };
-  return (
-    <div className="getting-started-container">
-      {/*  <h2>Getting started:</h2>
-      <p>
-        Install Files-ui using{" "}
-        <a href="https://www.npmjs.com/package/@files-ui/react" target="_blank">
-          npm{" "}
-        </a>
-        or either using{" "}
-        <a href="https://yarnpkg.com/package/@files-ui/react" target="_blank">
-          yarn
-        </a>
-        :
-      </p> */}
-      <div className="button-container">
-        <Button
-          onClick={goToGettingStarted}
-          style={{
-            padding: "10px 20px",
-            //fontFamily: '"Poppins", sans-serif',
-            flexGrow: 1,
-            //fontWeight: "700",
-            textTransform: "capitalize",
-            fontSize:"16px"
-          }}
-          variant="contained"
-          color={darkModeOn ? "secondary" : "primary"}
-          //fullWidth
-          endIcon={
-            <ArrowForwardIosIcon
-              style={{ fontSize: "0.9rem", fontWeight: "800" }}
-            />
-          }
-        >
-          {"Get Started"}
-        </Button>
-
-        <div className="code-button-flex">
-          <CodeButton
-            disableRipple
-            variant="outlined"
-            endIcon={
-              !copiedNpm ? <ContentCopyIcon /> : <CheckIcon color="success" />
-            }
-            //style={buttonCodeStyle}
-            fullWidth
-            onClick={handleCopyInstallationNPM}
-            color={copiedNpm ? "success" : darkModeOn ? "secondary" : "primary"}
-          >
-            {"npm install @files-ui/react"}
-          </CodeButton>
-          <CodeButton
-            disableRipple
-            variant="outlined"
-            endIcon={
-              !copiedYarn ? <ContentCopyIcon /> : <CheckIcon color="success" />
-            }
-            //style={buttonCodeStyle}
-            fullWidth
-            onClick={handleCopyInstallationYarn}
-            color={
-              copiedYarn ? "success" : darkModeOn ? "secondary" : "primary"
-            }
-          >
-            {"yarn add @files-ui/react"}
-          </CodeButton>
-        </div>
-      </div>
-    </div>
-  );
-};
-export default GettingStarted;
diff --git a/src/components/MainPage/MainFooter.jsx b/src/components/MainPage/MainFooter.jsx
deleted file mode 100644
index 701ec8a6117935232b8f6af95764a0dc35eb3859..0000000000000000000000000000000000000000
--- a/src/components/MainPage/MainFooter.jsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import * as React from "react";
-import logo_blue from "../../static/files-ui-logo-white.png";
-import logo_white_ext from "../../static/files-ui-logo-text-med-white.png";
-const MainFooter = (props) => {
-  return (
-    <footer className="filesui-footer">
-      <div
-        className={"filesui-main-logo-container darkmode"}
-        style={{ display: "flex", flexDirection: "row", alignItems: "center" }}
-      >
-        <img
-          className="fui-logo-img"
-          src={logo_blue}
-          width="38px"
-          alt="fui-logo-blue"
-        />
-        <img
-          className="fui-logo-text-img"
-          src={logo_white_ext}
-          height="14px"
-          alt="fui-logo-text-white"
-        />
-      </div>
-      <p>{" | "}Copyright © 2023</p>
-    </footer>
-  );
-};
-export default MainFooter;
diff --git a/src/components/MainPage/MainNavBar.jsx b/src/components/MainPage/MainNavBar.jsx
deleted file mode 100644
index d04521603e058d95a8570b418661f34bf202777d..0000000000000000000000000000000000000000
--- a/src/components/MainPage/MainNavBar.jsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import * as React from "react";
-import DarkModeLightModeButton from "./DarkModeLightModeButton";
-import GitHubIcon from "@mui/icons-material/GitHub";
-import { IconButton, Tooltip } from "@mui/material";
-//import { useNavigate } from "react-router";
-import logo_text_blue from "../../static/files-ui-logo-text-med.png";
-import logo_text_blue_dark from "../../static/files-ui-logo-text-med-dark.png";
-import AnchorToTab from "../util-components/AnchorToTab";
-
-const MainNavBar = ({
-  darkModeOn,
-  logo_blue,
-  logo_blue_dark,
-  handleDarkMode,
-}) => {
-  /*   const handleGoGitRepo = () => {
-    window.open("https://github.com/files-ui", "_blank");
-  }; */
-
-  return (
-    <nav className="filesui-nav">
-      <div className="filesui-nav-container">
-        <div className="left-part">
-          <div className={"filesui-nav-logo-container"}>
-            <img
-              className={"filesui-nav-logo"}
-              // src={!darkModeOn ? logo_blue : logoLight}
-              src={darkModeOn ? logo_blue_dark : logo_blue}
-              alt="files-ui-main-logo"
-            />
-          </div>
-
-          <img
-            height={"18px"}
-            src={darkModeOn ? logo_text_blue_dark : logo_text_blue}
-            alt="files-ui-main-logo-text"
-          />
-        </div>
-
-        <div className="right-part">
-          <Tooltip title="Go to Files-ui GitHub repo">
-            <AnchorToTab href="https://github.com/files-ui">
-              <IconButton
-                style={{ borderRadius: "8px", border: "0.5px solid #eaeef3" }}
-                //onClick={handleGoGitRepo}
-                color="secondary"
-                aria-label="upload picture"
-                component="label"
-              >
-                <GitHubIcon /* htmlColor="white" */ />
-              </IconButton>
-            </AnchorToTab>
-          </Tooltip>
-          <DarkModeLightModeButton
-            darkModeOn={darkModeOn}
-            onChangeDarkMode={handleDarkMode}
-          />
-        </div>
-      </div>
-    </nav>
-  );
-};
-export default MainNavBar;
diff --git a/src/components/MainPage/MainRight/FileMosaicImageVideoPreviews.tsx b/src/components/MainPage/MainRight/FileMosaicImageVideoPreviews.tsx
deleted file mode 100644
index a3c990ad865d6d2f79092ca12c0ea97bcf0db15a..0000000000000000000000000000000000000000
--- a/src/components/MainPage/MainRight/FileMosaicImageVideoPreviews.tsx
+++ /dev/null
@@ -1,255 +0,0 @@
-import * as React from "react";
-import { Stack, Paper } from "@mui/material";
-import { FileMosaic, ExtFile, FileMosaicProps } from "../../../files-ui";
-import DescParagraph from "../../demo-components/desc-paragraph/DescParagraph";
-import { FullScreen, ImagePreview, VideoPreview } from "../../../files-ui";
-import {
-  // NarutoAndSasukeVsMomoshikiEN,
-  // NarutoAndSasukeVsMomoshikiES,
-  // ThorArrivesWakandaEN,
-  ThorArrivesWakandaES,
-} from "../../../data/videoLinks";
-
-/* const VIDEO_URL =
-  "https://srv23.y2mate.is/download?file=cd448fa7c7fe6c301970e890794fb682137140"; */
-interface FileMosaicImageVideoPreviewsProps {
-  darkMode?: boolean;
-}
-const FileMosaicImageVideoPreviews: React.FC<
-  FileMosaicImageVideoPreviewsProps
-> = (props: FileMosaicImageVideoPreviewsProps) => {
-  const { darkMode } = props;
-  const [imageSrc, setImageSrc] = React.useState<string | undefined>(undefined);
-  const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-
-  const handleSee = (imageSource: string | undefined) => {
-    console.log("handleSee-imageSource", imageSource);
-    setImageSrc(imageSource);
-  };
-
-  const handleWatch = (videoSource: File | string | undefined) => {
-    console.log("handleWatch videoSource", videoSource);
-    //setVideoSrc(videoSource);
-    //
-    setVideoSrc(videoSource);
-    // setVideoSrc("https://www.w3schools.com/tags/movie.mp4");
-  };
-  const handleDownload = async (
-    fileId: FileMosaicProps["id"],
-    downloadUrl?: string
-  ) => {
-    
-    console.log("Download fileId", fileId);
-    console.log("Download fileName", files.filter((x) => x.id === fileId)[0]);
-    console.log("Download downloadUrl", downloadUrl);
-    if (!downloadUrl) return;
-    try {
-      const image = await fetch(downloadUrl);
-      const imageBlob = await image.blob();
-      const imageURL = URL.createObjectURL(imageBlob);
-
-      const anchor = document.createElement("a");
-      anchor.href = imageURL;
-      anchor.download = "fileName.jpg";
-
-      document.body.appendChild(anchor);
-      anchor.click();
-      document.body.removeChild(anchor);
-      URL.revokeObjectURL(imageURL);
-      /*  const resJson = await response.json();
-      console.log("Download", resJson); */
-    } catch (error) {
-      console.log("Download error", error);
-      console.error(error);
-    }
-  };
-/*   const handleDownloadXHR = async (
-    fileId: FileMosaicProps["id"],
-    downloadUrl?: string
-  ) => {
-    console.log("Download fileId", fileId);
-    console.log(
-      "Download fileName",
-      files.filter((x) => x.id === fileId)[0].name
-    );
-    console.log("Download downloadUrl", downloadUrl);
-    if (!downloadUrl) return;
-    try {
-      const request = new XMLHttpRequest();
-      request.responseType = "blob";
-      request.open("get", downloadUrl, true);
-      request.send();
-
-      request.onreadystatechange = function () {
-        if (this.readyState === 4 && this.status === 200) {
-          const imageURL = window.URL.createObjectURL(this.response);
-
-          const anchor = document.createElement("a");
-          anchor.href = imageURL;
-          anchor.download = "fileNamess.jpg";
-          document.body.appendChild(anchor);
-          anchor.click();
-        } else {
-          console.log("not yet");
-        }
-      };
-
-      const image = await fetch(downloadUrl);
-      const imageBlob = await image.blob();
-      const imageURL = URL.createObjectURL(imageBlob);
-
-      const anchor = document.createElement("a");
-      anchor.href = imageURL;
-      anchor.download = "fileName.jpg";
-
-      document.body.appendChild(anchor);
-      anchor.click();
-      document.body.removeChild(anchor);
-      URL.revokeObjectURL(imageURL);
-      // const resJson = await response.json();
-      //console.log("Download", resJson); 
-    } catch (error) {
-      console.log("Download error", error);
-    }
-  }; */
-  return (
-    <div style={{ width: "100%" }}>
-      <h3>Or check the previews!</h3>
-      <DescParagraph darkMode={darkMode}>
-        Add more interacion in your webpage with a full screen preview of images
-        or videos
-      </DescParagraph>
-      <Paper
-        variant="outlined"
-        sx={{
-          padding: "20px 0",
-          boxSizing: "border-box",
-          backgroundColor: darkMode ? "#121212" : "rgba(0, 0, 0, 0.06)",
-        }}
-      >
-        <Stack
-          direction={"row"}
-          spacing={2}
-          alignItems="center"
-          justifyContent={"space-evenly"}
-          sx={{
-            flexWrap: "wrap",
-          }}
-        >
-          {files.map((f: ExtFile, index: number) => (
-            <FileMosaic
-              key={index}
-              darkMode={darkMode}
-              {...f}
-              onSee={handleSee}
-              onWatch={handleWatch}
-              {...f.extraData}
-              alwaysActive
-              onDownload={f.downloadUrl ? handleDownload : undefined}
-            />
-          ))}
-          <FullScreen
-            open={imageSrc !== undefined}
-            onClose={() => setImageSrc(undefined)}
-          >
-            <ImagePreview src={imageSrc} />
-          </FullScreen>
-          <FullScreen
-            open={videoSrc !== undefined}
-            onClose={() => setVideoSrc(undefined)}
-          >
-            <VideoPreview src={videoSrc} autoPlay controls />
-          </FullScreen>
-        </Stack>
-      </Paper>
-    </div>
-  );
-};
-export default FileMosaicImageVideoPreviews;
-
-const files: ExtFile[] = [
-  {
-    id: 0,
-    name: "mark45.jpg",
-    type: "image/jpeg",
-    size: 282000,
-    imageUrl: "https://i.ytimg.com/vi/98FO19TuI9A/maxresdefault.jpg",
-    //downloadUrl: "https://i.ytimg.com/vi/98FO19TuI9A/maxresdefault.jpg",
-  },
-
-  {
-    id: 1,
-    name: "ThorArrivesWakandaES.mp4",
-    type: "video/mp4",
-    size: 282000,
-    imageUrl:
-      "https://e0.pxfuel.com/wallpapers/626/685/desktop-wallpaper-avengers-infinity-war-thor-arrives-in-wakanda-bring-me-thanos.jpg",
-    downloadUrl: ThorArrivesWakandaES,
-    videoUrl: ThorArrivesWakandaES ,
-  },
-  {
-    id: 3,
-    name: "downloadable-file.png",
-    type: "image/png",
-    size: 282000,
-    imageUrl: "/static/media/files-ui-logo-blue.e28c57506796630aebb5.png",
-    downloadUrl: "/static/media/files-ui-logo-blue.e28c57506796630aebb5.png",
-    extraData: {
-      backgroundBlurImage: false,
-    },
-  },
-  {
-    id: 1,
-    name: "facebook logo.png",
-    type: "image/png",
-    size: 282000,
-    downloadUrl:
-      "https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Facebook_f_logo_%282019%29.svg/768px-Facebook_f_logo_%282019%29.svg.png",
-    imageUrl:
-      "https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Facebook_f_logo_%282019%29.svg/768px-Facebook_f_logo_%282019%29.svg.png",
-    extraData: {
-      backgroundBlurImage: false,
-    },
-  },
-];
-/* 
-const videos: ExtFile[] = [
-  {
-    id: 0,
-    name: "ThorArrivesWakandaEN.mp4",
-    type: "video/mp4",
-    size: 282000,
-    downloadUrl: ThorArrivesWakandaEN,
-    extraData: { videoUrl: ThorArrivesWakandaEN },
-  },
-  {
-    id: 1,
-    name: "ThorArrivesWakandaES.mp4",
-    type: "video/mp4",
-    size: 282000,
-    imageUrl:
-      "https://e0.pxfuel.com/wallpapers/626/685/desktop-wallpaper-avengers-infinity-war-thor-arrives-in-wakanda-bring-me-thanos.jpg",
-    downloadUrl: ThorArrivesWakandaES,
-    extraData: { videoUrl: ThorArrivesWakandaES },
-  },
-
-  {
-    id: 1,
-    name: "NarutoAndSasukeVsMomoshikiEN.mp4",
-    type: "video/mp4",
-    size: 282000,
-    downloadUrl: NarutoAndSasukeVsMomoshikiEN,
-    extraData: { videoUrl: NarutoAndSasukeVsMomoshikiEN },
-  },
-  {
-    id: 1,
-    name: "NarutoAndSasukeVsMomoshikiES.mp4",
-    type: "video/mp4",
-    size: 282000,
-    downloadUrl: NarutoAndSasukeVsMomoshikiES,
-    extraData: { videoUrl: NarutoAndSasukeVsMomoshikiES },
-  },
-];
- */
diff --git a/src/components/MainPage/SecondaryRight/ExtraComponentsMainPage.tsx b/src/components/MainPage/SecondaryRight/ExtraComponentsMainPage.tsx
deleted file mode 100644
index 5427abc021023a99fc7ae495a43f40eb70097b4e..0000000000000000000000000000000000000000
--- a/src/components/MainPage/SecondaryRight/ExtraComponentsMainPage.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import * as React from "react";
-import { Stack, Paper } from "@mui/material";
-import {
-  FileCard,
-  ExtFile,
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-} from "../../../files-ui";
-import AnchorToTab from "../../util-components/AnchorToTab";
-import TypeHighlight from "../../typeHighlight/TypeHighlight";
-import { ThorArrivesWakandaES } from "../../../data/videoLinks";
-
-interface ExtraComponentsMainPageProps {
-  darkMode?: boolean;
-}
-const ExtraComponentsMainPage: React.FC<ExtraComponentsMainPageProps> = (
-  props: ExtraComponentsMainPageProps
-) => {
-  const { darkMode } = props;
-  const [imageSrc, setImageSrc] = React.useState<string | undefined>(undefined);
-  const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-
-  const handleSee = (imageSource: string | undefined) => {
-    console.log("handleSee-imageSource", imageSource);
-    setImageSrc(imageSource);
-  };
-
-  const handleWatch = (videoSource: File | string | undefined) => {
-    console.log("handleWatch videoSource", videoSource);
-    //setVideoSrc(videoSource);
-    //
-    setVideoSrc(videoSource);
-    // setVideoSrc("https://www.w3schools.com/tags/movie.mp4");
-  };
-
-  return (
-    <Paper
-      variant="outlined"
-      sx={{
-        display: "flex",
-        flexDirection: "column",
-        alignItems: "center",
-        justifyContent: "space-between",
-        padding: "20px 0",
-        boxSizing: "border-box",
-        backgroundColor: darkMode ? "#121212" : "rgba(0, 0, 0, 0.06)",
-        height: "100%",
-      }}
-    >
-      <TypeHighlight size="1.1rem">
-        <AnchorToTab href="/components/filecard">
-          <h3 style={{ margin: 0 }}>{"<FileCard/>"}</h3>
-        </AnchorToTab>
-      </TypeHighlight>
-      <Stack
-        direction={"column"}
-        spacing={2}
-        alignItems="center"
-        justifyContent={"space-evenly"}
-        sx={{
-          flexWrap: "wrap",
-          flexGrow: 1,
-        }}
-      >
-        {files.map((f: ExtFile, index: number) => (
-          <FileCard
-            onClick={() => {
-              alert("haaa");
-            }}
-            key={index}
-            //darkMode={darkMode}
-            {...f}
-            onSee={handleSee}
-            onWatch={handleWatch}
-            {...f.extraData}
-            info
-            darkMode={darkMode}
-          />
-        ))}
-        <FullScreen
-          open={imageSrc !== undefined}
-          onClose={() => setImageSrc(undefined)}
-        >
-          <ImagePreview src={imageSrc} />
-        </FullScreen>
-        <FullScreen
-          open={videoSrc !== undefined}
-          onClose={() => setVideoSrc(undefined)}
-        >
-          <VideoPreview src={videoSrc} autoPlay controls />
-        </FullScreen>
-      </Stack>
-    </Paper>
-  );
-};
-export default ExtraComponentsMainPage;
-
-const files: ExtFile[] = [
-  /* {
-    id: 0,
-    name: "image-preview.png",
-    type: "image/png",
-    size: 282000,
-    imageUrl: "https://i.ytimg.com/vi/98FO19TuI9A/maxresdefault.jpg",
-  }, */
-
-  {
-    id: 2,
-    name: "ThorArrivesWakandaES.mp4",
-    type: "video/mp4",
-    size: 282000,
-    imageUrl:
-      "https://e0.pxfuel.com/wallpapers/626/685/desktop-wallpaper-avengers-infinity-war-thor-arrives-in-wakanda-bring-me-thanos.jpg",
-    downloadUrl: ThorArrivesWakandaES,
-    extraData: { videoUrl: ThorArrivesWakandaES },
-  },
-  {
-    id: 3,
-    name: "downloadable-file.png",
-    type: "image/png",
-    size: 282000,
-    imageUrl: "/static/media/files-ui-logo-blue.e28c57506796630aebb5.png",
-    downloadUrl: "/static/media/files-ui-logo-blue.e28c57506796630aebb5.png",
-    extraData: {
-      backgroundBlurImage: false,
-    },
-  },
-  {
-    id: 1,
-    name: "ironman.png",
-    type: "image/png",
-    size: 282000,
-    downloadUrl:
-      "https://i.pinimg.com/236x/3e/e9/46/3ee946b27fd1cc5eb0b485e4a0669534.jpg",
-
-    imageUrl:
-      "https://i.pinimg.com/236x/3e/e9/46/3ee946b27fd1cc5eb0b485e4a0669534.jpg",
-  },
-];
diff --git a/src/components/MainPage/SecondaryRight/ExtraComponentsMainPageAvatar.tsx b/src/components/MainPage/SecondaryRight/ExtraComponentsMainPageAvatar.tsx
deleted file mode 100644
index 34e67feb24cce2bf770fd00ac2bb6dce36880f23..0000000000000000000000000000000000000000
--- a/src/components/MainPage/SecondaryRight/ExtraComponentsMainPageAvatar.tsx
+++ /dev/null
@@ -1,96 +0,0 @@
-import * as React from "react";
-import { Stack, Paper } from "@mui/material";
-import {
-  FileCard,
-  ExtFile,
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-  FileInputButton,
-  Avatar,
-  MaterialButton,
-} from "../../../files-ui";
-import AnchorToTab from "../../util-components/AnchorToTab";
-import TypeHighlight from "../../typeHighlight/TypeHighlight";
-import { BIA_URL } from "../../../data/imagesURL";
-
-interface ExtraComponentsMainPageProps {
-  darkMode?: boolean;
-}
-const ExtraComponentsMainPageAvatar: React.FC<ExtraComponentsMainPageProps> = (
-  props: ExtraComponentsMainPageProps
-) => {
-  const { darkMode } = props;
-  const [isUloading, setIsUploading] = React.useState<boolean>(false);
-
-  const [avatarSrc, setAvatarSrc] = React.useState<string | undefined | File>(
-    BIA_URL
-  );
-
-  const handleChange = async (file: File) => {
-    setAvatarSrc(file);
-  };
-  return (
-    <Paper
-      variant="outlined"
-      sx={{
-        display: "flex",
-        flexDirection: "column",
-        alignItems: "center",
-        justifyContent: "space-between",
-        padding: "20px 0",
-        boxSizing: "border-box",
-        backgroundColor: darkMode ? "#121212" : "rgba(0, 0, 0, 0.06)",
-        height: "100%",
-        flexGrow: 1,
-      }}
-    >
-      <TypeHighlight size="1.1rem">
-        <AnchorToTab href="/components/avatar">
-          <h3 style={{ margin: 0 }}>{"<Avatar/>"}</h3>
-        </AnchorToTab>
-      </TypeHighlight>
-      <Stack
-        direction={"column"}
-        spacing={2}
-        alignItems="center"
-        justifyContent={"space-evenly"}
-        sx={{
-          flexWrap: "wrap",
-          flexGrow: 1,
-        }}
-      >
-        <Avatar
-          src={avatarSrc}
-          onChange={handleChange}
-          isLoading={isUloading}
-          smartImgFit={"center"}
-          style={{ width: "170px", height: "170px" }}
-          //variant={"circle"}
-        />
-        <Avatar
-          src={avatarSrc}
-          onChange={handleChange}
-          isLoading={isUloading}
-          smartImgFit={"center"}
-          variant={"circle"}
-          style={{ width: "170px", height: "170px" }}
-        />
-        <MaterialButton
-          onClick={() => setAvatarSrc(undefined)}
-          disabled={avatarSrc === undefined}
-        >
-          remove avatar
-        </MaterialButton>
-      </Stack>
-    </Paper>
-  );
-};
-export default ExtraComponentsMainPageAvatar;
-
-const sampleFileProps: ExtFile = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
diff --git a/src/components/MainPage/SecondaryRight/ExtraComponentsMainPageInputButton.tsx b/src/components/MainPage/SecondaryRight/ExtraComponentsMainPageInputButton.tsx
deleted file mode 100644
index b6301ef25ae087874c4d0d8f4d52e9e188c6a0ea..0000000000000000000000000000000000000000
--- a/src/components/MainPage/SecondaryRight/ExtraComponentsMainPageInputButton.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-import * as React from "react";
-import { Stack, Paper } from "@mui/material";
-import {
-  FileCard,
-  ExtFile,
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-  FileInputButton,
-} from "../../../files-ui";
-import AnchorToTab from "../../util-components/AnchorToTab";
-import TypeHighlight from "../../typeHighlight/TypeHighlight";
-
-interface ExtraComponentsMainPageProps {
-  darkMode?: boolean;
-}
-const ExtraComponentsMainPageInputButton: React.FC<
-  ExtraComponentsMainPageProps
-> = (props: ExtraComponentsMainPageProps) => {
-  const { darkMode } = props;
-  const [value, setValue] = React.useState<ExtFile | undefined>(undefined);
-
-  const updateFile = (incommingFiles: ExtFile[]) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <Paper
-      variant="outlined"
-      sx={{
-        display: "flex",
-        flexDirection: "column",
-        alignItems: "center",
-        justifyContent:"space-between",
-        padding: "20px 0",
-        boxSizing: "border-box",
-        backgroundColor: darkMode ? "#121212" : "rgba(0, 0, 0, 0.06)",
-        height: "100%",
-      }}
-    >
-      <TypeHighlight size="1.1rem">
-        <AnchorToTab href="/components/fileinputbutton">
-          <h3 style={{ margin: 0 }}>{"<FileInputButton/>"}</h3>
-        </AnchorToTab>
-      </TypeHighlight>
-      <Stack
-        direction={"column"}
-        spacing={2}
-        alignItems="center"
-        justifyContent={"space-evenly"}
-        sx={{
-          flexWrap: "wrap",
-          flexGrow:1,
-          //height: "100%",
-        }}
-      >
-        {value ? (
-          <FileCard {...value} onDelete={removeFile} info preview darkMode={darkMode}/>
-        ) : (
-          <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-        )}
-        <FileCard {...sampleFileProps} info darkMode={darkMode}/>
-      </Stack>
-    </Paper>
-  );
-};
-export default ExtraComponentsMainPageInputButton;
-
-const sampleFileProps: ExtFile = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
diff --git a/src/components/RightMenu/RightMenu.scss b/src/components/RightMenu/RightMenu.scss
deleted file mode 100644
index 4c907e01289ca4d41abf79bbdc39f0e85d568440..0000000000000000000000000000000000000000
--- a/src/components/RightMenu/RightMenu.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-.right-menu-anchor-item {
-  box-sizing: border-box;
-  text-decoration: none;
-  padding-left: 5px;
-  width: 100%;
-  //word-break: break-all;
-
-  border-left: unset;
-  color: #6f7e8c;
-
-  &.selected,
-  &:hover {
-    border-left-width: 2px;
-    border-left-style: solid;
-    color: rgb(0, 114, 229);
-    &.darkmode {
-      color: rgb(102, 178, 255);
-    }
-  }
-}
diff --git a/src/components/RightMenu/RightMenu.tsx b/src/components/RightMenu/RightMenu.tsx
deleted file mode 100644
index ce6b2e4332a5ea1ccfc3e49d824beacf051e8c0a..0000000000000000000000000000000000000000
--- a/src/components/RightMenu/RightMenu.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import List from "@mui/material/List/List";
-import ListSubheader from "@mui/material/ListSubheader/ListSubheader";
-import * as React from "react";
-import { RightMenuProps } from "./RightMenuProps";
-import "./RightMenu.scss";
-import { UserContext } from "../../globals/contexts/UserContext";
-const RightMenu: React.FC<RightMenuProps> = (props: RightMenuProps) => {
-  const { items, width, selectedItemProp: selectedItem = 0 } = props;
-  const [usuario, ] = React.useContext(UserContext);
-  const darkMode = usuario.darkMode;
-
-  const handleClickAnchor = (
-    e: React.MouseEvent<HTMLAnchorElement, MouseEvent>,
-    onClick: Function | undefined,
-    id: number
-  ) => {
-    onClick?.();
-  };
-
-  const finalSelectedId = selectedItem;
-
-  const darkmodeClassName = darkMode
-    ? "right-menu-anchor-item darkmode"
-    : "right-menu-anchor-item";
-  //const darkmodeClassName = darkMode?"":"";
-  return (
-    <List
-      // className="section-container"
-      sx={{ width: "100%", maxWidth: width, bgcolor: "background.paper" }}
-      component="nav"
-      aria-labelledby="nested-list-subheader"
-      subheader={
-        <ListSubheader component="div" id="nested-list-subheader">
-          Content
-        </ListSubheader>
-      }
-    >
-      <ul style={{ listStyle: "none", margin: 0 }}>
-        {items &&
-          items.map(({ isSelected, label, onClick, referTo, id }, index) => {
-            const classNameForAnchor: string =
-              finalSelectedId === id
-                ? `${darkmodeClassName} selected`
-                : darkmodeClassName;
-            return (
-              <li key={index} style={{ listStyle: "none", margin: 0 }}>
-                <a
-                  className={classNameForAnchor}
-                  href={`${referTo}`}
-                  onClick={(e) => handleClickAnchor(e, onClick, id)}
-                >
-                  {label}
-                </a>
-              </li>
-            );
-          })}
-      </ul>
-    </List>
-  );
-};
-export default RightMenu;
diff --git a/src/components/RightMenu/RightMenuProps.ts b/src/components/RightMenu/RightMenuProps.ts
deleted file mode 100644
index e8d14440ffd7721c8ad8a5818378199fbb01981d..0000000000000000000000000000000000000000
--- a/src/components/RightMenu/RightMenuProps.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export interface RightMenuItem {
-    label?: string;
-    onClick?: Function;
-    isSelected?: boolean;
-    referTo?: string;
-    id: number;
-}
-
-export interface RightMenuProps {
-    items: RightMenuItem[];
-    width: string;
-    baseUrl?: string;
-    selectedItemProp?:number;
-    setSelected?:Function;
-}
\ No newline at end of file
diff --git a/src/components/code-generator/InteractiveCode.jsx b/src/components/code-generator/InteractiveCode.jsx
deleted file mode 100644
index b143996a652f6f2e9318c2b8787a5380cf783c44..0000000000000000000000000000000000000000
--- a/src/components/code-generator/InteractiveCode.jsx
+++ /dev/null
@@ -1,771 +0,0 @@
-import {
-  FormControl,
-  FormControlLabel,
-  FormLabel,
-  Grid,
-  Paper,
-  Radio,
-  RadioGroup,
-  Switch,
-} from "@mui/material";
-import React, { Fragment, useEffect, useState } from "react";
-import Autocomplete from "@mui/material/Autocomplete";
-import TextField from "@mui/material/TextField";
- import {
-  Dropzone,
-  FileItem,
-  FullScreenPreview,
-  VideoPreview,
-} from "@dropzone-ui/react"; 
-//import {  Dropzone,  FileItem,  FullScreenPreview,  VideoPreview,} from "../../dropzone-ui";
-import "./InteractiveCode.scss";
-import InteractiveGeneratedCode from "./InteractiveGeneratedCode";
-import ElevationSlider from "../../Pages/Components/FileItemProps/ElevationSlider";
-import FileSizeSlider from "../../Pages/Components/DropzoneProps/FileSizeSlider";
-import FileLimitSlider from "../../Pages/Components/DropzoneProps/FileLimitSlider";
-import ElevateAppBar from "../../Templates/ElevateAppBar";
-//import FakeFileItem from "../../Components/FakeFileItem/FakeFileItem";
-
-const InteractiveCode = (props) => {
-  ////////////////////     DROPZONE PROPS ////////////////
-  //color
-  const [useColor, setUseColor] = useState(undefined);
-  const [color, setColor] = useState("#071e25");
-  useEffect(() => {
-    if (!useColor) {
-      setColor(undefined);
-    } else {
-      //if (!color) {
-      setColor(color);
-      //}
-    }
-  }, [useColor, color]);
-
-  const handleChangeColor = (e) => {
-    setColor(e.target.value);
-  };
-  //maxFileSise
-  const [maxFileSize, setmaxFileSize] = useState(29300000);
-  const handleChangeMaxFileSize = (v) => {
-    setmaxFileSize(v);
-    // setmaxSize(e.target.value);
-  };
-  //maxFiles
-  const [maxFiles, setMaxFiles] = useState(29300000);
-  const handleChangeMaxFiles = (v) => {
-    setMaxFiles(v);
-    // setmaxSize(e.target.value);
-  };
-  //label
-  const [label, setLabel] = useState("Drop Files here or click to browse");
-  const handleChangeLabel = (e) => {
-    if (e.target.value.lenght === 0) {
-      setLabel(undefined);
-    } else setLabel(e.target.value);
-  };
-  //display
-  const [files, setFiles] = useState([]);
-  const [imageSrc, setImageSrc] = useState(undefined);
-  const [videoSrc, setVideoSrc] = useState(undefined);
-  const [controls, setControls] = useState(true);
-  const [autoplay, setAutoPlay] = useState(true);
-  const updateFiles = (incommingFiles) => {
-    setFiles(incommingFiles);
-  };
-  const handleDelete = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const handleSee = (imageSource) => {
-    setImageSrc(imageSource);
-  };
-  //VIDEOOO PREVIEW
-  const handleWatch = (vidSrc) => {
-    console.log("handleWatch", vidSrc);
-    setVideoSrc(vidSrc);
-  };
-  //localization
-  const [localization, setLocalization] = useState(undefined);
-  const hadleSelect = (e, value) => {
-    //console.log(value);
-    setLocalization(value?.value);
-  };
-  //accept
-  const [accept, setAccept] = useState("image/jpeg,.ts, video/*");
-  const handleChangeAccept = (e) => {
-    if (e.target.value.lenght === 0) {
-      setAccept(undefined);
-    } else setAccept(e.target.value);
-  };
-  //minHeight
-  const [minHeight, setMinHeight] = useState("195px");
-  const handleMinHeight = (e) => {
-    if (e.target.value.lenght === 0) {
-      setMinHeight(undefined);
-    } else setMinHeight(e.target.value);
-  };
-  //maxHeight
-  const [maxHeight, setMaxHeight] = useState("500px");
-  const handleMaxHeight = (e) => {
-    if (e.target.value.lenght === 0) {
-      setMaxHeight(undefined);
-    } else setMaxHeight(e.target.value);
-  };
-  //view
-  const [viewValue, setViewValue] = React.useState("unset");
-  const handleCheckView = (e, val) => {
-    setViewValue(val);
-  };
-  const [footerDis, setFooterDis] = React.useState(false);
-  const [headerDis, setHeaderDis] = React.useState(false);
-  const [clickableDis, setClickableDis] = React.useState(false);
-  const [onClean, setOnClean] = React.useState(true);
-  const [uploadOnDrop, setUploadOnDrop] = React.useState(false);
-  //inner Upload
-
-  //const [innerUpload, setInnerUpload] = useState(false);
-  const [url, setUrl] = React.useState(undefined);
-  const handleUrl = (e) => {
-    if (e.target.value.lenght === 0) {
-      setUrl(undefined);
-    } else {
-      setUrl(e.target.value);
-    }
-  };
-  //method
-  const [method, setMethod] = React.useState(undefined);
-  const hadleSelectMethod = (e, value) => {
-    //console.log("method", value);
-    setMethod(value?.method);
-  };
-  const [fakeupload, setFakeUpload] = React.useState(undefined);
-  //const [headerDis, setHeaderDis] = React.useState(false);
-  const [behaviour, setBehaviour] = React.useState("unset");
-  const handleCheckBehaviour = (e, val) => {
-    setBehaviour(val);
-  };
-  //config
-  const defaultHeader = {
-    headers: {
-      "content-type": "multipart/form-data;",
-    },
-  };
-  const [config, setConfig] = useState(undefined);
-  const [useConfig, setUseConfig] = useState(false);
-  const handleUseConfig = (v) => {
-    if (v) {
-      setUseConfig(true);
-      setConfig(
-        `{\n\t  headers: {\n\t    "Authorization": "Bearer YOUR_BEARER_TOKEN_GOES_HERE",\n\t    "content-type": "multipart/form-data",\n\t  },\n\t}`
-      );
-    } else {
-      setUseConfig(false);
-      setConfig(undefined);
-    }
-  };
-
-  // upload message
-  /*  const [uploadingMessage, setUploadingMessage] = useState(
-    "....Uploading Files, please wait..."
-  ); */
-  const [uploadingMessage, setUploadingMessage] = useState(undefined);
-  // eslint-disable-next-line
-  const handleuploadingMessage = (e) => {
-    if (e.target.value.lenght === 0) {
-      setUploadingMessage(undefined);
-    } else setUploadingMessage(e.target.value);
-  };
-  /////// NEW
-  const [disableScroll, setDisableScroll] = useState(true);
-  ////       ////       ////       ////       FILE ITEM
-  const [hd, setHd] = React.useState(false);
-  const [info, setInfo] = React.useState(true);
-  const [preview, setPreview] = React.useState(true);
-  const [alwaysActive, setAlwaysActive] = React.useState(true);
-  const [resultOnTooltip, setResultOnTooltip] = React.useState(true);
-  const [onSee, setOnSee] = React.useState(false);
-  const [onDeleteVal, setOnDelete] = React.useState(true);
-  const [elevation, setElevation] = React.useState(0);
-  return (
-    <Fragment>
-      <ElevateAppBar />
-      <div className="dui-demo-container">
-        
-        <Dropzone
-          //style={{ fontFamily:`"Roboto","Helvetica","Arial",sans-serif` }}
-          label={label}
-          color={color}
-          minHeight={minHeight}
-          //maxHeight={maxHeight}
-          accept={accept}
-          view={viewValue === "unset" ? undefined : viewValue}
-          behaviour={behaviour === "unset" ? undefined : behaviour}
-          localization={localization}
-          onChange={updateFiles}
-          value={files}
-          footer={footerDis ? false : true}
-          header={headerDis ? false : true}
-          clickable={clickableDis ? false : true}
-          onClean={onClean || undefined}
-          maxFileSize={maxFileSize}
-          maxFiles={maxFiles}
-          //upload
-          uploadOnDrop={uploadOnDrop || undefined}
-          url={url}
-          fakeUploading={fakeupload}
-          config={config ? defaultHeader : undefined}
-          uploadingMessage={uploadingMessage}
-          disableScroll={disableScroll}
-        >
-          {files.length>0 && files.map((file) => (
-            <FileItem
-              {...file}
-              key={file.id}
-              onDelete={onDeleteVal ? handleDelete : undefined}
-              onSee={onSee ? handleSee : undefined}
-              localization={localization}
-              alwaysActive={alwaysActive || undefined}
-              resultOnTooltip={resultOnTooltip || undefined}
-              preview={preview ? preview : undefined}
-              //onlyImage
-              info={info ? info : undefined}
-              hd={hd ? hd : undefined}
-              elevation={elevation}
-              onWatch={handleWatch}
-            />
-          ))}
-        </Dropzone>
-        <FullScreenPreview
-          imgSource={imageSrc}
-          openImage={imageSrc}
-          onClose={(e) => handleSee(undefined)}
-        />
-        <VideoPreview
-          videoSrc={videoSrc}
-          openVideo={videoSrc}
-          onClose={(e) => handleWatch(undefined)}
-          controls={controls}
-          autoplay={autoplay}
-        />
-        {/**
-         * /////////////////////////////    CONTROLS    ////////////////////////////////////
-         */}
-        <Grid container style={{ padding: "15px 0" }} spacing={1}>
-          <Grid item md={9} xs={12}>
-            <h3>{"Dropzone props"}</h3>
-            <Paper elevation={3} style={{ padding: "15px" }}>
-              <Grid container spacing={2}>
-                <Grid item md={6} xs={12}>
-                  <h4 style={{ margin: "10px 5px 0 0" }}>{"Validation"}</h4>
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"Accept"}
-                  </FormLabel>
-                  <TextField
-                    fullWidth
-                    id="outlined-basic"
-                    size="small"
-                    //label="Outlined"
-                    variant="outlined"
-                    onChange={handleChangeAccept}
-                    value={accept}
-                  />
-                  <FileSizeSlider onChange={handleChangeMaxFileSize} />
-                  <FileLimitSlider onChange={handleChangeMaxFiles} />
-
-                  <h4 style={{ margin: "10px 5px 0 0" }}>Upload process</h4>
-                  <FormLabel component="h2" style={{ marginTop: "8px" }}>
-                    {"Start upload on drop"}
-                  </FormLabel>
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        onChange={(e, ch) => {
-                          setUploadOnDrop(ch);
-                        }}
-                      />
-                    }
-                    label="uploadOnDrop"
-                  />
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"Url of server"}
-                  </FormLabel>
-                  <TextField
-                    fullWidth
-                    id="outlined-basic"
-                    size="small"
-                    label="url"
-                    variant="outlined"
-                    onChange={handleUrl}
-                    value={url}
-                  />
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"Method (POST by default)"}
-                  </FormLabel>
-                  <Autocomplete
-                    //disablePortal
-                    autoSelect
-                    size="small"
-                    //style={{ width: "80%" }}
-                    //fullWidth
-                    onChange={hadleSelectMethod}
-                    id="combo-box-demo"
-                    options={[
-                      { method: "POST" },
-                      { method: "PATCH" },
-                      { method: "PUT" },
-                    ]}
-                    getOptionLabel={(option) => option.method}
-                    renderInput={(params) => (
-                      <TextField {...params} label="method" />
-                    )}
-                  />
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"Aditional configuration (e.g. headers, bearer token)"}
-                  </FormLabel>
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        onChange={(e, ch) => {
-                          handleUseConfig(ch);
-                        }}
-                      />
-                    }
-                    label="Add config"
-                  />
-                  {useConfig && (
-                    <TextField
-                      id="outlined-multiline-flexible"
-                      label="config"
-                      multiline
-                      fullWidth
-                      minRows={3}
-                      value={config}
-                      disabled
-                      //onChange={handleConfig}
-                    />
-                  )}
-                  {/*  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                  {"Uploading Message"}
-                </FormLabel>
-                <TextField
-                  fullWidth
-                  id="outlined-basic"
-                  size="small"
-                  label="uploadingMessage"
-                  variant="outlined"
-                  onChange={handleuploadingMessage}
-                  value={uploadingMessage}
-                /> */}
-                  <h4 style={{ margin: "10px 5px 0 0" }}>
-                    Fake upload (simulate upload process on development)
-                  </h4>
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {
-                      "Enable fake uploading. It needs a fake url string prop to show the 'upload button'"
-                    }
-                  </FormLabel>
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        checked={fakeupload}
-                        onChange={(e, ch) => {
-                          setFakeUpload(ch);
-                        }}
-                      />
-                    }
-                    label="enable fakeUpload"
-                  />
-                </Grid>
-                <Grid item md={6} xs={12}>
-                  <h4 style={{ margin: "10px 5px 0 0" }}>{"Language"}</h4>
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"Localization"}
-                  </FormLabel>
-                  <Autocomplete
-                    //disablePortal
-                    autoSelect
-                    size="small"
-                    //style={{ width: "80%" }}
-                    //fullWidth
-                    onChange={hadleSelect}
-                    id="combo-box-demo"
-                    options={languages}
-                    getOptionLabel={(option) => option.idiom}
-                    renderInput={(params) => (
-                      <TextField {...params} label="Localization" />
-                    )}
-                  />
-                  <h4 style={{ margin: "10px 5px 0 0" }}>
-                    {"Behaviour on drop files"}
-                  </h4>
-                  <FormControl component="fieldset">
-                    <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                      {
-                        'Add files or replace the file list ( "add" by default )'
-                      }
-                    </FormLabel>
-                    <RadioGroup
-                      row
-                      aria-label="view"
-                      name="row-radio-buttons-group"
-                      onChange={handleCheckBehaviour}
-                      value={behaviour}
-                    >
-                      <FormControlLabel
-                        value="add"
-                        control={<Radio />}
-                        label="add"
-                      />
-                      <FormControlLabel
-                        value="replace"
-                        control={<Radio />}
-                        label="replace"
-                      />
-                      <FormControlLabel
-                        value={"unset"}
-                        control={<Radio />}
-                        label="unset"
-                      />
-                    </RadioGroup>
-                  </FormControl>
-                  <h4 style={{ margin: "10px 5px 0 0" }}>
-                    {"Display settings"}
-                  </h4>
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"Custom Label"}
-                  </FormLabel>
-                  <TextField
-                    fullWidth
-                    id="outlined-basic"
-                    size="small"
-                    //label="Outlined"
-                    variant="outlined"
-                    onChange={handleChangeLabel}
-                    value={label}
-                  />
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"minHeight"}
-                  </FormLabel>
-                  <TextField
-                    fullWidth
-                    id="outlined-basic"
-                    size="small"
-                    //label="Outlined"
-                    variant="outlined"
-                    onChange={handleMinHeight}
-                    value={minHeight}
-                  />
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {"maxHeight"}
-                  </FormLabel>
-                  <TextField
-                    fullWidth
-                    id="outlined-basic"
-                    size="small"
-                    //label="Outlined"
-                    variant="outlined"
-                    onChange={handleMaxHeight}
-                    value={maxHeight}
-                  />
-                  <FormControl component="fieldset">
-                    <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                      {"View (FileItems layout)"}
-                    </FormLabel>
-                    <RadioGroup
-                      row
-                      aria-label="gender"
-                      name="row-radio-buttons-group"
-                      onChange={handleCheckView}
-                      value={viewValue}
-                    >
-                      <FormControlLabel
-                        disabled={disableScroll}
-                        value="list"
-                        control={<Radio />}
-                        label="list"
-                      />
-                      <FormControlLabel
-                        disabled={disableScroll}
-                        value="grid"
-                        control={<Radio />}
-                        label="grid"
-                      />
-                      <FormControlLabel
-                        disabled={disableScroll}
-                        value={"unset"}
-                        control={<Radio />}
-                        label="unset"
-                      />
-                    </RadioGroup>
-                  </FormControl>
-
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {`Disable scrollbar: ( for optimizing display when using "resultOnTooltip prop on FileItem")`}
-                  </FormLabel>
-                  <a href="https://codesandbox.io/s/dropzone-ui-fileitem-resultontooltip-h6hu7">
-                    <img
-                      src="https://img.shields.io/badge/new-feature-green.svg"
-                      alt="npm latest package"
-                    />
-                  </a>
-
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        checked={disableScroll}
-                        onChange={(e, ch) => {
-                          setDisableScroll(ch);
-                        }}
-                      />
-                    }
-                    label={"disableScroll"}
-                  />
-                  <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                    {`Theme color: ( ${useColor ? color : "unset"} )`}
-                  </FormLabel>
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        checked={useColor}
-                        onChange={(e, ch) => {
-                          setUseColor(ch);
-                        }}
-                      />
-                    }
-                    label={useColor ? "disable color" : "enable color"}
-                  />
-                  {useColor && (
-                    <div>
-                      <input
-                        placeholder="color"
-                        onChange={handleChangeColor}
-                        type="color"
-                      />
-                      {color}
-                    </div>
-                  )}
-                  <FormLabel component="h2" style={{ marginTop: "8px" }}>
-                    {"Clean not valid files button"}
-                  </FormLabel>
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        checked={onClean}
-                        onChange={(e, ch) => {
-                          setOnClean(ch);
-                        }}
-                      />
-                    }
-                    label="onClean"
-                  />
-                  <FormLabel component="h2" style={{ marginTop: "8px" }}>
-                    {"Enable/disable clickable"}
-                  </FormLabel>
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        checked={clickableDis}
-                        onChange={(e, ch) => {
-                          setClickableDis(ch);
-                        }}
-                      />
-                    }
-                    label="clickable"
-                  />
-                  <FormLabel component="h2">
-                    {"Footer and header (true by def.)"}
-                  </FormLabel>
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        onChange={(e, ch) => {
-                          setHeaderDis(ch);
-                        }}
-                      />
-                    }
-                    label="disable header"
-                  />
-                  <FormControlLabel
-                    control={
-                      <Switch
-                        onChange={(e, ch) => {
-                          setFooterDis(ch);
-                        }}
-                      />
-                    }
-                    label="disable footer"
-                  />
-                </Grid>
-              </Grid>
-            </Paper>
-          </Grid>
-
-          <Grid item md={3} xs={12}>
-            <h3>{"FileItem props"}</h3>
-            <Paper elevation={3} style={{ padding: "15px" }}>
-              <h4 style={{ margin: "10px 5px 0 0" }}>Display</h4>
-              <FormLabel component="h2" style={{ marginTop: "8px" }}>
-                {"Show info layer"}
-              </FormLabel>
-              <FormControlLabel
-                control={
-                  <Switch
-                    checked={info}
-                    onChange={(e, ch) => {
-                      setInfo(ch);
-                    }}
-                  />
-                }
-                label="info"
-              />
-              <FormLabel component="h2" style={{ marginTop: "8px" }}>
-                {
-                  "Always active (show actions and buttons if true. If false, show only on hover)"
-                }
-              </FormLabel>
-              <FormControlLabel
-                control={
-                  <Switch
-                    checked={alwaysActive}
-                    onChange={(e, ch) => {
-                      setAlwaysActive(ch);
-                    }}
-                  />
-                }
-                label="alwaysActive"
-              />
-              <FormLabel component="h2" style={{ marginTop: "8px" }}>
-                {
-                  "Display Result on layer (if true) otherwise, on tooltip on Hover"
-                }
-              </FormLabel>
-              <a href="https://codesandbox.io/s/dropzone-ui-fileitem-resultontooltip-h6hu7">
-                <img
-                  src="https://img.shields.io/badge/new-feature-green.svg"
-                  alt="npm latest package"
-                />
-              </a>
-              <FormControlLabel
-                control={
-                  <Switch
-                    checked={resultOnTooltip}
-                    onChange={(e, ch) => {
-                      setResultOnTooltip(ch);
-                    }}
-                  />
-                }
-                label="resultOnTooltip"
-              />
-              resultOnTooltip
-              <h4 style={{ margin: "10px 5px 0 0" }}>
-                {"Preview (inside FileItem)"}
-              </h4>
-              <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                {"Show image preview on FleItem if valid"}
-              </FormLabel>
-              <FormControlLabel
-                control={
-                  <Switch
-                    checked={preview}
-                    onChange={(e, ch) => {
-                      setPreview(ch);
-                    }}
-                  />
-                }
-                label="preview"
-              />
-              <h4 style={{ margin: "10px 5px 0 0" }}>Full Screen Preview</h4>
-              <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                {" Preview button and add handler"}
-              </FormLabel>
-              <FormControlLabel
-                control={
-                  <Switch
-                    checked={onSee}
-                    onChange={(e, ch) => {
-                      setOnSee(ch);
-                    }}
-                  />
-                }
-                label="onSee"
-              />
-              <FormLabel component="h2" style={{ marginTop: "8px" }}>
-                {"Show preview in HD"}
-              </FormLabel>
-              <FormControlLabel
-                control={
-                  <Switch
-                    checked={hd}
-                    onChange={(e, ch) => {
-                      setHd(ch);
-                    }}
-                  />
-                }
-                label="hd"
-              />
-              <h4 style={{ margin: "10px 5px 0 0" }}>Delete File</h4>
-              <FormLabel component="legend" style={{ marginTop: "8px" }}>
-                {'Show "delete file" button and add handler'}
-              </FormLabel>
-              <FormControlLabel
-                control={
-                  <Switch
-                    checked={onDeleteVal}
-                    onChange={(e, ch) => {
-                      setOnDelete(ch);
-                    }}
-                  />
-                }
-                label="onDelete"
-              />{" "}
-              <ElevationSlider onChange={(v) => setElevation(v)} />
-            </Paper>
-          </Grid>
-        </Grid>
-        <InteractiveGeneratedCode
-          {...{
-            accept,
-            maxHeight,
-            localization,
-            minHeight,
-            hd,
-            info,
-            preview,
-            alwaysActive,
-            onSee,
-            onDeleteVal,
-            viewValue,
-            footerDis,
-            headerDis,
-            elevation,
-            url,
-            method,
-            behaviour,
-            uploadingMessage,
-            config,
-            uploadOnDrop,
-            fakeupload,
-            label,
-            maxFileSize,
-            maxFiles,
-            onClean,
-            color,
-            clickableDis,
-            resultOnTooltip,
-            disableScroll,
-          }}
-        />
-      </div>
-    </Fragment>
-  );
-};
-export default InteractiveCode;
-
-const languages = [
-  { idiom: "Español: ES-es", value: "ES-es" },
-  { idiom: "English: EN-en", value: "EN-en" },
-  { idiom: "French: FR-fr", value: "FR-fr" },
-  { idiom: "Portuguese: PT-pt", value: "PT-pt" },
-  { idiom: "Russian: RU-ru", value: "RU-ru" },
-  { idiom: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { idiom: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
diff --git a/src/components/code-generator/InteractiveCode.scss b/src/components/code-generator/InteractiveCode.scss
deleted file mode 100644
index 627e43aa82ba951a5b3098f2bcc68c43bb18b1b9..0000000000000000000000000000000000000000
--- a/src/components/code-generator/InteractiveCode.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-.dui-demo-container {
-    background-color: rgb(234, 238, 243);
-    //width: 100%;
-    margin: auto;
-    margin-top: 10px;
-    padding: 20px 30px;
-    border-radius: 10px ;
-    border: 1px solid rgb(215, 220, 225);
-    .dui-demo-paper {
-      background-color: white;
-      //width: 100%;
-    }
-    @media (max-width: 960px) {
-        width: 90%;
-        padding: 10px 20px;
-
-      }
-    @media (max-width: 600px) {
-        width: 100%;
-        padding: 5px 10px;
-
-      }
-  }
-  
\ No newline at end of file
diff --git a/src/components/code-generator/InteractiveDemo.jsx b/src/components/code-generator/InteractiveDemo.jsx
deleted file mode 100644
index 60189cd00adbbb885aee454c5bc80449e6a79edd..0000000000000000000000000000000000000000
--- a/src/components/code-generator/InteractiveDemo.jsx
+++ /dev/null
@@ -1,60 +0,0 @@
-import React, { Fragment, useState } from "react";
-import { Dropzone, FileItem, FullScreenPreview } from "../../dropzone-ui";
-import "./InteractiveDemo.scss";
-const InteractiveDemo = (props) => {
-  const [files, setFiles] = useState([]);
-  const [imageSrc, setImageSrc] = useState(undefined);
-  const updateFiles = (incommingFiles) => {
-    //console.log("incomming files", incommingFiles);
-    setFiles(incommingFiles);
-  };
-  const onDelete = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const handleSee = (imageSource) => {
-    setImageSrc(imageSource);
-  };
-  const handleClean = (files) => {
-    //console.log("list cleaned", files);
-  };
-  return (
-    <Fragment>
-      <Dropzone
-        style={{ minWidth: "550px" }}
-        onChange={updateFiles}
-        minHeight="180px"
-        onClean={handleClean}
-        value={files}
-        maxFiles={10}
-        maxFileSize={5698000}
-        accept=".png,image/*"
-        url="http://ec2-99-99-9-9.compute-1.amazonaws.com:2800/upload-my-file"
-        //of course this url doens´t work, is only to make upload button visible
-        uploadOnDrop
-        fakeUploading
-      >
-        {/* files.length > 0 && */
-          files.map((file) => (
-            <FileItem
-              {...file}
-              key={file.id}
-              onDelete={onDelete}
-              onSee={handleSee}
-              preview
-              info
-              hd
-            />
-          ))}
-      </Dropzone>{" "}
-      <FullScreenPreview
-        imgSource={imageSrc}
-        openImage={imageSrc}
-        onClose={(e) => handleSee(undefined)}
-      />
-      <div className="dui-demo-container">
-        <div className="dui-demo-paper"></div>
-      </div>
-    </Fragment>
-  );
-};
-export default InteractiveDemo;
diff --git a/src/components/code-generator/InteractiveDemo.scss b/src/components/code-generator/InteractiveDemo.scss
deleted file mode 100644
index 09028bcfdf2bed5c598f562e6f689c2b3ab416e4..0000000000000000000000000000000000000000
--- a/src/components/code-generator/InteractiveDemo.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.dui-demo-container {
-  background-color: rgb(234, 238, 243);
-  width: 50%;
-  margin: auto;
-  padding: 4%;
-  border-radius: 10px ;
-  border: 1px solid rgb(215, 220, 225);
-  .dui-demo-paper {
-    background-color: white;
-    //width: 100%;
-  }
-}
diff --git a/src/components/code-generator/InteractiveGeneratedCode.jsx b/src/components/code-generator/InteractiveGeneratedCode.jsx
deleted file mode 100644
index 51de67cfc7457d27872941a82a86775aa7029ce9..0000000000000000000000000000000000000000
--- a/src/components/code-generator/InteractiveGeneratedCode.jsx
+++ /dev/null
@@ -1,437 +0,0 @@
-
-import { Highlighter } from "rc-highlight";
-import React, { Fragment, useEffect, useState } from "react";
-//import { Highlighter } from "../../HIGHLIGHTER";
-
-const InteractiveGeneratedCode = (props) => {
-  const {
-    accept,
-    maxHeight,
-    localization,
-    minHeight,
-    hd,
-    info,
-    preview,
-    alwaysActive,
-    onSee,
-    onDeleteVal,
-    viewValue,
-    footerDis,
-    headerDis,
-    elevation,
-    url,
-    method,
-    behaviour,
-    uploadingMessage,
-    config,
-    uploadOnDrop,
-    fakeupload,
-    label,
-    maxFileSize,
-    maxFiles,
-    onClean,
-    color,
-    clickableDis,
-    resultOnTooltip,
-    disableScroll,
-  } = props;
-  const [code, setCode] = useState("");
-  const makeAccept = (accept) => {
-    if (!accept || accept.length === 0) {
-      return ``;
-    }
-    return `\n\taccept={"${accept}"}\n`;
-  };
-  const makeLocalization = (localization, item) => {
-    if (!localization || localization.length === 0) {
-      return ``;
-    }
-    if (item) {
-      return `\n\t    localization={"${localization}"}\n`;
-    }
-    return `\n\tlocalization={"${localization}"}\n`;
-  };
-  const makeMinHeight = (minHeight) => {
-    if (!minHeight || minHeight.length === 0) {
-      return ``;
-    }
-    return `\n\tminHeight={"${minHeight}"}\n`;
-  };
-  const makeMaxHeight = (maxHeight) => {
-    if (!maxHeight || maxHeight.length === 0) {
-      return ``;
-    }
-    return `\n\tmaxHeight={"${maxHeight}"}\n`;
-  };
-  const makeView = (viewValue) => {
-    if (viewValue === "unset") {
-      return ``;
-    }
-    return `\n\tviewValue={"${viewValue}"}\n`;
-  };
-  const makeFooter = (footerDis) => {
-    if (!footerDis) {
-      return ``;
-    }
-    return `\n\tfooter={${!footerDis}}\n`;
-  };
-  const makeHeader = (headerDis) => {
-    if (!headerDis) {
-      return ``;
-    }
-    return `\n\theader={${!headerDis}}\n`;
-  };
-  function makeUrl(url) {
-    if (!url) {
-      return ``;
-    }
-    return `\n\turl={"${url}"}\n`;
-  }
-  function makeMethod(method) {
-    if (!method) {
-      return ``;
-    }
-    return `\n\tmethod={"${method}"}\n`;
-  }
-  function makeBehaviour(behaviour) {
-    if (behaviour === "unset") {
-      return ``;
-    }
-    return `\n\tbehaviour={"${behaviour}"}\n`;
-  }
-  function makeUploadingMessage(uploadingMessage) {
-    //console.log("upload message", uploadingMessage);
-    if (!uploadingMessage) {
-      return ``;
-    }
-    return `\n\tuploadingMessage={"${uploadingMessage}"}\n`;
-  }
-  function makeConfig(config) {
-    if (!config) {
-      return ``;
-    }
-    return `\n\tconfig={${config}}\n`;
-  }
-
-  function makeUploadOnDrop(uploadOnDrop) {
-    if (!uploadOnDrop) {
-      return ``;
-    }
-    return `\n\tuploadOnDrop\n`;
-  }
-  function makeFakeUpload(fakeupload) {
-    if (!fakeupload) {
-      return ``;
-    }
-    return `\n\tfakeupload\n`;
-  }
-  function makeLabel(label) {
-    if (!label) {
-      return ``;
-    }
-    return `\n\tlabel={"${label}"}\n`;
-  }
-  function makeMaxFileSize(maxFileSize) {
-    if (!maxFileSize) {
-      return ``;
-    }
-    return `\n\tmaxFileSize={${maxFileSize}}\n`;
-  }
-  function makeMaxFiles(maxFiles) {
-    if (!maxFiles) {
-      return ``;
-    }
-    return `\n\tmaxFiles={${maxFiles}}\n`;
-  }
-  function makeonClean(onClean) {
-    if (!onClean) {
-      return ``;
-    }
-    return `\n\tonClean\n`;
-  }
-  function makeColor(color) {
-    if (!color) {
-      return ``;
-    }
-    return `\n\tcolor={"${color}"}\n`;
-  }
-  function makeClickable(clickable) {
-    if (!clickable) {
-      return ``;
-    }
-    return `\n\tclickable={"${clickable}"}\n`;
-  }
-  function makeDisableScroll(disableScroll) {
-    if (!disableScroll) {
-      return ``;
-    }
-    return `\n\tdisableScroll\n`;
-  }
-  ////////////////// FILE ITEM
-  function makeHd(hd) {
-    if (hd) {
-      return `\n\t    hd\n`;
-    } else {
-      return ``;
-    }
-  }
-  function makePreview(preview) {
-    if (preview) {
-      return `\n\t    preview\n`;
-    } else {
-      return ``;
-    }
-  }
-  function makeInfo(info) {
-    if (info) {
-      return `\n\t    info\n`;
-    } else {
-      return ``;
-    }
-  }
-  function makeAlwaysActive(alwaysActive) {
-    if (alwaysActive) {
-      return `\n\t    alwaysActive\n`;
-    } else {
-      return ``;
-    }
-  }
-  function makeOnSee(onSee) {
-    if (onSee) {
-      return `\n\t    onSee={handleSee}\n`;
-    } else {
-      return ``;
-    }
-  }
-  function makeOnDelete(onDeleteVal) {
-    if (onDeleteVal) {
-      return `\n\t    onDelete={handleDelete}\n`;
-    } else {
-      return ``;
-    }
-  }
-  const makeElevation = (elevation) => {
-    if (!elevation || elevation === 0) {
-      return ``;
-    } else {
-      return `\n\t    elevation={${elevation}}\n`;
-    }
-  };
-  function makeResultOnTooltip(resultOnTooltip) {
-    if (resultOnTooltip) {
-      return `\n\t    resultOnTooltip\n`;
-    } else {
-      return ``;
-    }
-  }
-  //////// MAIN CODE
-  const makeCode = (
-    accept,
-    maxHeight,
-    localization,
-    minHeight,
-    hd,
-    info,
-    preview,
-    alwaysActive,
-    onSee,
-    onDeleteVal,
-    viewValue,
-    footerDis,
-    headerDis,
-    elevation,
-    url,
-    method,
-    behaviour,
-    uploadingMessage,
-    config,
-    uploadOnDrop,
-    fakeupload,
-    label,
-    maxFileSize,
-    maxFiles,
-    onClean,
-    color,
-    clickableDis,
-    resultOnTooltip,disableScroll,
-  ) => {
-    return (
-      `
-  import { Dropzone, FileItem${
-    onSee ? ", FullScreenPreview " : " "
-  }} from "@dropzone-ui/react";
-  import { useState } from "react";
-  export default function App() {
-    const [files, setFiles] = useState([]);` +
-      makeImgSrcState(onSee) +
-      `
-    const updateFiles = (incommingFiles) => {
-      console.log("incomming files", incommingFiles);
-      setFiles(incommingFiles);
-    };` +
-      makeOnDeleteHandler(onDeleteVal) +
-      makeHandleSee(onSee) +
-      `
-    return (
-      <Dropzone
-        onChange={updateFiles}
-        value={files}` +
-      makeClickable(clickableDis) +
-      makeonClean(onClean) +
-      makeAccept(accept) +
-      makeMaxFileSize(maxFileSize) +
-      makeMaxFiles(maxFiles) +
-      makeLabel(label) +
-      makeMinHeight(minHeight) +
-      makeMaxHeight(maxHeight) +
-      makeLocalization(localization) +
-      makeView(viewValue) +
-      makeFooter(footerDis) +
-      makeHeader(headerDis) +
-      makeUrl(url) +
-      makeMethod(method) +
-      makeUploadingMessage(uploadingMessage) +
-      makeBehaviour(behaviour) +
-      makeConfig(config) +
-      makeUploadOnDrop(uploadOnDrop) +
-      makeColor(color) +
-      makeFakeUpload(fakeupload) +
-      makeDisableScroll(disableScroll)+
-      `
-      >
-        {files.length>0 && files.map((file) => (
-          <FileItem
-            {...file}
-            key={file.id}` +
-      makeOnDelete(onDeleteVal) +
-      makeOnSee(onSee) +
-      makeAlwaysActive(alwaysActive) +
-      makeLocalization(localization, true) +
-      makePreview(preview) +
-      makeInfo(info) +
-      makeHd(hd) +
-      makeElevation(elevation) +
-      makeResultOnTooltip(resultOnTooltip) +
-      `
-          />
-        ))}` +
-      //makeFullScreenOnseeComponent(onSee) +
-      `
-      </Dropzone>
-      ${makeFullScreenOnseeComponent(onSee)}
-    );
-  }
-      `
-    );
-  };
-  useEffect(() => {
-    const codeGenerated = makeCode(
-      accept,
-      maxHeight,
-      localization,
-      minHeight,
-      hd,
-      info,
-      preview,
-      alwaysActive,
-      onSee,
-      onDeleteVal,
-      viewValue,
-      footerDis,
-      headerDis,
-      elevation,
-      url,
-      method,
-      behaviour,
-      uploadingMessage,
-      config,
-      uploadOnDrop,
-      fakeupload,
-      label,
-      maxFileSize,
-      maxFiles,
-      onClean,
-      color,
-      clickableDis,
-      resultOnTooltip,disableScroll,
-    );
-    setCode(codeGenerated);
-    // eslint-disable-next-line
-  }, [
-    accept,
-    maxHeight,
-    localization,
-    minHeight,
-    hd,
-    info,
-    preview,
-    alwaysActive,
-    onSee,
-    onDeleteVal,
-    viewValue,
-    footerDis,
-    headerDis,
-    elevation,
-    url,
-    method,
-    behaviour,
-    uploadingMessage,
-    config,
-    uploadOnDrop,
-    fakeupload,
-    label,
-    maxFileSize,
-    maxFiles,
-    onClean,
-    color,
-    clickableDis,
-    resultOnTooltip,disableScroll
-  ]);
-  return (
-    <Fragment>
-      <Highlighter
-        style={{ margin: "10px 0", backgroundColor: "#010409" }}
-        onCopyToClipboard={(code_) => {
-          //console.log("copied: " + code_);
-        }}
-      >
-        {code}
-      </Highlighter>
-    </Fragment>
-  );
-};
-export default InteractiveGeneratedCode;
-function makeOnDeleteHandler(onDelete) {
-  if (!onDelete) {
-    return ``;
-  }
-  return `
-    const onDelete = (id) => {
-      setFiles(files.filter((x) => x.id !== id));
-    };`;
-}
-function makeHandleSee(onSee) {
-  if (!onSee) {
-    return ``;
-  }
-  return `\n    const handleSee = (imageSource) => {
-      setImageSrc(imageSource);
-    };\n`;
-}
-function makeImgSrcState(onSee) {
-  if (!onSee) {
-    return ``;
-  }
-  return `\n    const [imageSrc, setImageSrc] = useState(undefined);\n`;
-}
-
-function makeFullScreenOnseeComponent(onSee) {
-  if (!onSee) {
-    return ``;
-  }
-  return `\n       <FullScreenPreview
-          imgSource={imageSrc}
-          openImage={imageSrc}
-          onClose={(e) => handleSee(undefined)}
-       />\n`;
-}
diff --git a/src/components/codeHighlight/CodeHighlight.scss b/src/components/codeHighlight/CodeHighlight.scss
deleted file mode 100644
index 665381cee39f632effbb87a178062be432155075..0000000000000000000000000000000000000000
--- a/src/components/codeHighlight/CodeHighlight.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.code-highlight {
-  color: #1a2027;
-  background-color: rgba(102, 178, 255, 0.15);
-  border-radius: 5px;
-  font-size: 0.9125rem;
-  padding: 0px 5px;
-  line-height: 1.6;
-  &.darkmode {
-    color: #fff;
-    background-color: rgba(102, 178, 255, 0.15);
-  }
-}
diff --git a/src/components/codeHighlight/CodeHighlight.tsx b/src/components/codeHighlight/CodeHighlight.tsx
deleted file mode 100644
index 0241c3aa7bc8a82ba2ddcd911e1ec2e165b1455a..0000000000000000000000000000000000000000
--- a/src/components/codeHighlight/CodeHighlight.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import * as React from "react";
-import { UserContext } from "../../globals/contexts/UserContext";
-import "./CodeHighlight.scss";
-
-interface CodeHighlightProps {
-  children?: React.ReactNode;
-  darkMode?: boolean;
-}
-const CodeHighlight: React.FC<CodeHighlightProps> = (
-  props: CodeHighlightProps
-) => {
-  const { children } = props;
-  const [usuario, ] = React.useContext(UserContext);
-  const darkMode = usuario.darkMode;
-  const finaldarkmodeclassName = !darkMode
-    ? "code-highlight"
-    : "code-highlight darkmode";
-
-  return <code className={finaldarkmodeclassName}>{children}</code>;
-};
-export default CodeHighlight;
diff --git a/src/components/demo-components/avatar-demo/BasicDemoAvatar.tsx b/src/components/demo-components/avatar-demo/BasicDemoAvatar.tsx
deleted file mode 100644
index 094199e6b7fea0972b9c00d757ccf90f527b7ffc..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/BasicDemoAvatar.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as React from "react";
-import { Avatar } from "../../../files-ui";
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-const BasicDemoAvatar = () => {
-  return <Avatar readOnly src={imageSrc} alt="Isabella" />;
-};
-export default BasicDemoAvatar;
diff --git a/src/components/demo-components/avatar-demo/CodeAvatarVariant.tsx b/src/components/demo-components/avatar-demo/CodeAvatarVariant.tsx
deleted file mode 100644
index 89b6f6de1a912cbdcca89af1f7e3d8d425b6146d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeAvatarVariant.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-interface CodeDemoAvatarPickFileProps {}
-const CodeDemoAvatarVariant: React.FC<CodeDemoAvatarPickFileProps> = (
-  props: CodeDemoAvatarPickFileProps
-) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoAvatarVariant;
-
-const splittedCodeJS = `<Avatar src={imageSrc} readOnly />
-<Avatar src={imageSrc} variant="circle" readOnly />`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-export default function DemoAvatarVariants = () => {
-  return (
-    <>
-      <Avatar src={imageSrc} readOnly />
-      <Avatar src={imageSrc} variant="circle" readOnly />
-    </>
-  );
-};`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/avatar-demo/CodeDemoAvatarBasic.tsx b/src/components/demo-components/avatar-demo/CodeDemoAvatarBasic.tsx
deleted file mode 100644
index a393ab469ce29f0d2342cf476cc72cea276498ff..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeDemoAvatarBasic.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoAvatarBasic = () => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoAvatarBasic;
-
-const splittedCodeJS = `<Avatar
-  readOnly
-  src={"https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg"}
-  alt="Isabella"
-/>`;
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-const BasicDemoAvatar = () => {
-  return <Avatar readOnly src={imageSrc} alt="Isabella" />;
-};
-export default BasicDemoAvatar;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/avatar-demo/CodeDemoAvatarFallBack.tsx b/src/components/demo-components/avatar-demo/CodeDemoAvatarFallBack.tsx
deleted file mode 100644
index 3af33160676aa6b9ae4ff0b38acccd3067d9e3bb..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeDemoAvatarFallBack.tsx
+++ /dev/null
@@ -1,90 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-interface CodeDemoAvatarPickFileProps {}
-const CodeDemoAvatarFallBack: React.FC<CodeDemoAvatarPickFileProps> = (
-  props: CodeDemoAvatarPickFileProps
-) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoAvatarFallBack;
-
-const splittedCodeJS = `<Avatar
-  src={imageSource}
-  readOnly
-  onError={() => setImageSource(fallBackImage)}
-  alt="Avatar"
-/>
-<Avatar
-  src={imageSource2}
-  onError={() => setImageSource2(fallBackImage)}
-  onChange={(imgSource) => setImageSource2(imgSource)}
-  accept=".pdf, .png"
-  alt="Avatar2"
-/>`;
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-
-const fallBackImage =
-  "https://static.vecteezy.com/system/resources/thumbnails/009/292/244/small/default-avatar-icon-of-social-media-user-vector.jpg";
-
-export default function DemoAvatarFallBack = () => {
-  const [imageSource, setImageSource] = React.useState("broken/url");
-  const [imageSource2, setImageSource2] = React.useState(undefined);
-  return (
-    <>
-      <Avatar
-        src={imageSource}
-        readOnly
-        onError={() => setImageSource(fallBackImage)}
-        alt="Avatar"
-      />
-      <Avatar
-        src={imageSource2}
-        onError={() => setImageSource2(fallBackImage)}
-        onChange={(imgSource) => setImageSource2(imgSource)}
-        accept=".pdf, .png"
-        alt="Avatar2"
-      />
-    </>
-  );
-};`;
-
-const completeCodeTS = `import * as React from "react";
-import { Avatar, AvatarProps } from "@files-ui/react";
-
-const fallBackImage =
-  "https://static.vecteezy.com/system/resources/thumbnails/009/292/244/small/default-avatar-icon-of-social-media-user-vector.jpg";
-
-export default function DemoAvatarFallBack = () => {
-  const [imageSource, setImageSource] 
-              = React.useState<AvatarProps["src"] | undefined>("/broken/url");
-  const [imageSource2, setImageSource2] 
-              = React.useState<AvatarProps["src"] | undefined>(undefined);
-  return (
-    <>
-      <Avatar
-        src={imageSource}
-        readOnly
-        onError={() => setImageSource(fallBackImage)}
-        alt="Avatar"
-      />
-      <Avatar
-        src={imageSource2}
-        onError={() => setImageSource2(fallBackImage)}
-        onChange={(imgSource) => setImageSource2(imgSource)}
-        accept=".pdf, .png"
-        alt="Avatar2"
-      />
-    </>
-  );
-};`;
diff --git a/src/components/demo-components/avatar-demo/CodeDemoAvatarLabels.tsx b/src/components/demo-components/avatar-demo/CodeDemoAvatarLabels.tsx
deleted file mode 100644
index b6ffa12d3405422a73096e8564171301a2e2a225..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeDemoAvatarLabels.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoAvatarLabels = () => {
-  return (
-  <ShowDemoCode
-  codeCompleteJS={completeCodeJS}
-  codeCompleteTS={completeCodeTS}
-  codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-  codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-  codeSplittedJS={splittedCodeJS}
-  codeSplittedTS={splittedCodeTS}
-  />
-  );
-};
-export default CodeDemoAvatarLabels;
-const splittedCodeJS = `<Avatar
-  alt="Isabella"
-  emptyLabel={"You can choose an image..."}
-  onChange={() => {}}
-/>
-<Avatar
-  src={imageSrc}
-  alt="Isabella"
-  changeLabel={"Do you want to change this amazing picture?"}
-  onChange={() => {}}
-/>
-<Avatar
-  src={imageSrc}
-  alt="Isabella"
-  loadingLabel={"You can drink a cup of coffee in the meanwhile"}
-  isLoading={true}
-/>`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-const DemoAvatarLabels = () => {
-  return (
-  <>
-      <Avatar
-          alt="Isabella"
-          emptyLabel={"You can choose an image..."}
-          onChange={() => {}}
-      />
-      <Avatar
-          src={imageSrc}
-          alt="Isabella"
-          changeLabel={"Do you want to change this amazing picture?"}
-          onChange={() => {}}
-      />
-      <Avatar
-          src={imageSrc}
-          alt="Isabella"
-          loadingLabel={"You can drink a cup of coffee in the meanwhile"}
-          isLoading={true}
-      />
-  </>
-  );
-};
-export default DemoAvatarLabels;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/avatar-demo/CodeDemoAvatarLoading.tsx b/src/components/demo-components/avatar-demo/CodeDemoAvatarLoading.tsx
deleted file mode 100644
index 2c0abf9534b511df8bdffa2c4209c0f5b62937e8..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeDemoAvatarLoading.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-interface CodeDemoAvatarPickFileProps {}
-const CodeDemoAvatarLoading: React.FC<CodeDemoAvatarPickFileProps> = (
-  props: CodeDemoAvatarPickFileProps
-) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoAvatarLoading;
-
-const splittedCodeJS = `<Avatar readOnly src={imageSrc} alt="Isabella" isLoading={true} />`;
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-const DemoAvatarLoading = () => {
-  return <Avatar readOnly src={imageSrc} alt="Isabella" isLoading={true} />;
-};
-export default DemoAvatarLoading;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/avatar-demo/CodeDemoAvatarPickFile.tsx b/src/components/demo-components/avatar-demo/CodeDemoAvatarPickFile.tsx
deleted file mode 100644
index 0e7c0cbd31dc5a80e5cd34988fcbfe6227c29e12..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeDemoAvatarPickFile.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-interface CodeDemoAvatarPickFileProps{}
-const CodeDemoAvatarPickFile:React.FC<CodeDemoAvatarPickFileProps> = (props:CodeDemoAvatarPickFileProps) =>{
-    return (
-        <ShowDemoCode
-          codeCompleteJS={completeCodeJS}
-          codeCompleteTS={completeCodeTS}
-          codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-          codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-          codeSplittedJS={splittedCodeJS}
-          codeSplittedTS={splittedCodeTS}
-        />
-      );
-}
-export default CodeDemoAvatarPickFile;
-
-
-const splittedCodeJS = `<Avatar src={imageSource} alt="Avatar" onChange={handleChangeSource} />`;
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-export default function DemoAvatarPickingFile = () => {
-  const [imageSource, setImageSource] = React.useState(imageSrc);
-  const handleChangeSource = (selectedFile) => {
-    setImageSource(selectedFile);
-  };
-  return (
-    <Avatar src={imageSource} alt="Avatar" onChange={handleChangeSource} />
-  );
-};`;
-
-const completeCodeTS =`import * as React from "react";
-import { Avatar, AvatarProps } from "@files-ui/react";
-
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-  
-export default function DemoAvatarPickingFile = () => {
-  const [imageSource, setImageSource] 
-                    = React.useState<AvatarProps["src"] | undefined>(imageSrc);
-
-  const handleChangeSource = (selectedFile: File) => {
-    setImageSource(selectedFile);
-  };
-  return (
-    <Avatar src={imageSource} alt="Avatar" onChange={handleChangeSource} />
-  );
-};`;
diff --git a/src/components/demo-components/avatar-demo/CodeDemoAvatarSmartFit.tsx b/src/components/demo-components/avatar-demo/CodeDemoAvatarSmartFit.tsx
deleted file mode 100644
index 2b62e73fbb5dc1bd6d74f9b9de47447db5d9f778..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeDemoAvatarSmartFit.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-interface CodeDemoAvatarPickFileProps {}
-const CodeDemoAvatarSmartFit: React.FC<CodeDemoAvatarPickFileProps> = (
-  props: CodeDemoAvatarPickFileProps
-) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoAvatarSmartFit;
-
-const splittedCodeJS = `<Avatar src={landscapeImage} readOnly smartImgFit={false} />
-<Avatar src={landscapeImage} readOnly smartImgFit={"orientation"} />
-<Avatar src={landscapeImage} readOnly smartImgFit={"center"} />
-
-<Avatar src={portraitImage} readOnly smartImgFit={false} />
-<Avatar src={portraitImage} readOnly smartImgFit={"orientation"} />
-<Avatar src={portraitImage} readOnly smartImgFit={"center"} />`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-const landscapeImage =
-  "https://64.media.tumblr.com/078a5af7a51d438b1c1ee5bd77f1b1e5/tumblr_p81qv7KIPa1rvufhzo3_r1_400.gif";
-
-const portraitImage =
-  "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif";
-
-export default function DemoAvatarSmartImageFit = () => {
-  return (
-    <>
-      <Avatar src={landscapeImage} readOnly smartImgFit={false} />
-      <Avatar src={landscapeImage} readOnly smartImgFit={"orientation"} />
-      <Avatar src={landscapeImage} readOnly smartImgFit={"center"} />
-
-      <Avatar src={portraitImage} readOnly smartImgFit={false} />
-      <Avatar src={portraitImage} readOnly smartImgFit={"orientation"} />
-      <Avatar src={portraitImage} readOnly smartImgFit={"center"} />
-    </>
-  );
-};`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/avatar-demo/CodeDemoAvatarStyling.tsx b/src/components/demo-components/avatar-demo/CodeDemoAvatarStyling.tsx
deleted file mode 100644
index ec55ddd20f86b7863f6fef372b620cdc2cbc8cdd..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/CodeDemoAvatarStyling.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoAvatarStyling = () => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoAvatarStyling;
-
-const splittedCodeJS = `<Avatar
-  readOnly
-  src={imgSrc}
-  alt="Isabella"
-  style={{ width: "100px", height: "100px" }}
-/>
-<Avatar readOnly src={imgSrc} alt="Isabella" borderRadius={"50px"} />`;
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Avatar } from "@files-ui/react";
-
-const DemoAvatarStyling = () => {
-    return (
-      <Avatar
-        readOnly
-        src={imgSrc}
-        alt="Isabella"
-        style={{ width: "100px", height: "100px" }}
-      />
-      <Avatar readOnly src={imgSrc} alt="Isabella" borderRadius={"50px"} />
-    );
-};
-export default DemoAvatarStyling;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/avatar-demo/DemoAvatarFallBack.tsx b/src/components/demo-components/avatar-demo/DemoAvatarFallBack.tsx
deleted file mode 100644
index eaf7727ebc99f1f7afbf8de7f097b462b74a8754..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/DemoAvatarFallBack.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import * as React from "react";
-import { Avatar, AvatarProps } from "../../../files-ui";
-interface DemoAvatarFallBackProps {}
-const fallBackImage =
-  "https://static.vecteezy.com/system/resources/thumbnails/009/292/244/small/default-avatar-icon-of-social-media-user-vector.jpg";
-const DemoAvatarFallBack: React.FC<DemoAvatarFallBackProps> = (
-  props: DemoAvatarFallBackProps
-) => {
-  const [imageSource, setImageSource] = React.useState<
-    AvatarProps["src"] | undefined
-  >("broken/url");
-  const [imageSource2, setImageSource2] = React.useState<
-    AvatarProps["src"] | undefined
-  >(undefined);
-
-  return (
-    <>
-      <Avatar
-        src={imageSource}
-        readOnly
-        onError={() => setImageSource(fallBackImage)}
-        alt="Avatar"
-      />
-      <Avatar
-        src={imageSource2}
-        onError={() => setImageSource2(fallBackImage)}
-        onChange={(imgSource) => setImageSource2(imgSource)}
-        accept=".pdf, .png"
-        alt="Avatar2"
-      />
-    </>
-  );
-};
-export default DemoAvatarFallBack;
diff --git a/src/components/demo-components/avatar-demo/DemoAvatarLabels.tsx b/src/components/demo-components/avatar-demo/DemoAvatarLabels.tsx
deleted file mode 100644
index 42e504b58c2354b2cb4a3822c91efd3af882ca9d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/DemoAvatarLabels.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import * as React from "react";
-import { Avatar } from "../../../files-ui";
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-const DemoAvatarLabels = () => {
-  return (
-    <>
-      <Avatar
-        alt="Isabella"
-        emptyLabel={"You can choose an image..."}
-        onChange={() => {}}
-      />
-      <Avatar
-        src={imageSrc}
-        alt="Isabella"
-        changeLabel={"Do you want to change this amazing picture?"}
-        onChange={() => {}}
-      />
-      <Avatar
-        src={imageSrc}
-        alt="Isabella"
-        loadingLabel={"You can drink a cup of coffee in the meanwhile"}
-        isLoading={true}
-      />
-    </>
-  );
-};
-export default DemoAvatarLabels;
diff --git a/src/components/demo-components/avatar-demo/DemoAvatarLoading.tsx b/src/components/demo-components/avatar-demo/DemoAvatarLoading.tsx
deleted file mode 100644
index b37556ecabc01c1fe4e9bf339fdc03544d3e3f8a..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/DemoAvatarLoading.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import * as React from "react";
-import { Avatar } from "../../../files-ui";
-
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-const DemoAvatarLoading = () => {
-  return <Avatar readOnly src={imageSrc} alt="Isabella" isLoading={true} />;
-};
-export default DemoAvatarLoading;
diff --git a/src/components/demo-components/avatar-demo/DemoAvatarPickFile.tsx b/src/components/demo-components/avatar-demo/DemoAvatarPickFile.tsx
deleted file mode 100644
index 77dfb70829db8c58d536836c67b9c04172345bb1..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/DemoAvatarPickFile.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import * as React from "react";
-import { Avatar, AvatarProps } from "../../../files-ui";
-interface DemoAvatarPickFileProps {}
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-
-const DemoAvatarPickFile: React.FC<DemoAvatarPickFileProps> = (
-  props: DemoAvatarPickFileProps
-) => {
-  const [imageSource, setImageSource] = React.useState<
-    AvatarProps["src"] | undefined
-  >(imageSrc);
-
-  const handleChangeSource = (selectedFile: File) => {
-    setImageSource(selectedFile);
-  };
-  return (
-    <Avatar src={imageSource} alt="Avatar" onChange={handleChangeSource} />
-  );
-};
-export default DemoAvatarPickFile;
diff --git a/src/components/demo-components/avatar-demo/DemoAvatarStyling.tsx b/src/components/demo-components/avatar-demo/DemoAvatarStyling.tsx
deleted file mode 100644
index c30ee9495530407d1415dc8ac533de0b658f6173..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/DemoAvatarStyling.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from "react";
-import { Avatar } from "../../../files-ui";
-const imgSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-const DemoAvatarStyling = () => {
-  return (
-    <>
-      <Avatar
-        readOnly
-        src={imgSrc}
-        alt="Isabella"
-        style={{ width: "100px", height: "100px" }}
-      />
-      <Avatar readOnly src={imgSrc} alt="Isabella" borderRadius={"50px"} />
-    </>
-  );
-};
-export default DemoAvatarStyling;
diff --git a/src/components/demo-components/avatar-demo/DemoAvatarVarians.tsx b/src/components/demo-components/avatar-demo/DemoAvatarVarians.tsx
deleted file mode 100644
index c0ae89cd361f3cecbd6d43a9b5935e102564d427..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/DemoAvatarVarians.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from "react";
-import { Avatar } from "../../../files-ui";
-
-const imageSrc =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
-const DemoAvatarVariants = () => {
-  return (
-    <>
-      <Avatar src={imageSrc} readOnly />
-      <Avatar src={imageSrc} variant="circle" readOnly />
-    </>
-  );
-};
-export default DemoAvatarVariants;
diff --git a/src/components/demo-components/avatar-demo/DmoAvatarSmartImgFit.tsx b/src/components/demo-components/avatar-demo/DmoAvatarSmartImgFit.tsx
deleted file mode 100644
index d90b41cb5e27653fb2862bc80648a187ce39bf62..0000000000000000000000000000000000000000
--- a/src/components/demo-components/avatar-demo/DmoAvatarSmartImgFit.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import * as React from "react";
-import { Avatar } from "../../../files-ui";
-interface DemoAvatarFallBackProps {}
-
-const landscapeImage =
-  "https://64.media.tumblr.com/078a5af7a51d438b1c1ee5bd77f1b1e5/tumblr_p81qv7KIPa1rvufhzo3_r1_400.gif";
-
-const portraitImage =
-  "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif";
-
-const DemoAvatarSmartImgFit: React.FC<DemoAvatarFallBackProps> = (
-  props: DemoAvatarFallBackProps
-) => {
-  return (
-    <>
-      <Avatar src={landscapeImage} readOnly smartImgFit={false} />
-      <Avatar src={landscapeImage} readOnly smartImgFit={"orientation"} />
-      <Avatar src={landscapeImage} readOnly smartImgFit={"center"} />
-
-      <Avatar src={portraitImage} readOnly smartImgFit={false} />
-      <Avatar src={portraitImage} readOnly smartImgFit={"orientation"} />
-      <Avatar src={portraitImage} readOnly smartImgFit={"center"} />
-    </>
-  );
-};
-export default DemoAvatarSmartImgFit;
diff --git a/src/components/demo-components/demo-component/DemoComponentContainer.scss b/src/components/demo-components/demo-component/DemoComponentContainer.scss
deleted file mode 100644
index f7a945964c3bc694ea45e03c3dd3c63b543f392a..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-component/DemoComponentContainer.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.demo-component-container {
-  width: 100%;
-}
diff --git a/src/components/demo-components/demo-component/DemoComponentContainer.tsx b/src/components/demo-components/demo-component/DemoComponentContainer.tsx
deleted file mode 100644
index bed5f382ff63878b02857fa1ac7793518b1a723e..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-component/DemoComponentContainer.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import * as React from "react";
-import { DemoComponentContainerProps } from "./DemoComponentContainerProps";
-
-const DemoComponentContainer:React.FC<DemoComponentContainerProps> = (props:DemoComponentContainerProps) =>{
-    return(
-        <div>
-        
-        </div>
-    )
-}
-export default DemoComponentContainer;
\ No newline at end of file
diff --git a/src/components/demo-components/demo-component/DemoComponentContainerProps.ts b/src/components/demo-components/demo-component/DemoComponentContainerProps.ts
deleted file mode 100644
index a8c9dca424163cc16faab825cae10f2d766d44f4..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-component/DemoComponentContainerProps.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface DemoComponentContainerProps{
-    
-}
\ No newline at end of file
diff --git a/src/components/demo-components/demo-download/CodeDemoDownload.tsx b/src/components/demo-components/demo-download/CodeDemoDownload.tsx
deleted file mode 100644
index 45f33e3bfba31d31fc0efd0553dd84e9a4c3bfb0..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-download/CodeDemoDownload.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoDownload1 = () => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDownload1;
-
-const splittedCodeJS = ``;
-const splittedCodeTS = ``;
-
-const completeCodeJS = `import * as React from "react";
-import { FileCard, FileMosaic } from "@files-ui/react";
-
-const outsideDownloadUrl = "https://steamuserimages-a.akamaihd.net/ugc/964219647714510750/C4D97B0E1ECCE3E8A505AFBC8EAD8945E2223C41/?imw=5000&imh=5000&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false";
-
-const sampleFile = {
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor.jpeg",
-  imageUrl: outsideDownloadUrl,
-  downloadUrl: outsideDownloadUrl,
-};
-
-const DemoDownloadDifferentOriginDownloadUrl = () => {
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} />
-      <FileCard id={4} {...sampleFile} />
-    </>
-  );
-};
-export default DemoDownloadDifferentOriginDownloadUrl;`;
-
-
-const completeCodeTS =  `import * as React from "react";
-import { FileCard, FileMosaic, ExtFile } from "../../../files-ui";
-
-const outsideDownloadUrl = "https://steamuserimages-a.akamaihd.net/ugc/964219647714510750/C4D97B0E1ECCE3E8A505AFBC8EAD8945E2223C41/?imw=5000&imh=5000&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor.jpeg",
-  imageUrl: outsideDownloadUrl,
-  downloadUrl: outsideDownloadUrl,
-};
-
-const DemoDownloadDifferentOriginDownloadUrl = () => {
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} />
-      <FileCard id={4} {...sampleFile} />
-    </>
-  );
-};
-export default DemoDownloadDifferentOriginDownloadUrl;`;
diff --git a/src/components/demo-components/demo-download/CodeDemoDownload1.tsx b/src/components/demo-components/demo-download/CodeDemoDownload1.tsx
deleted file mode 100644
index c959332630c79ff9a10d158e56b5492a7e20ec33..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-download/CodeDemoDownload1.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoDownload1 = () => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDownload1;
-
-const splittedCodeJS = ``;
-const splittedCodeTS = ``;
-
-const completeCodeJS = `import * as React from "react";
-import { FileCard, FileMosaic } from "@files-ui/react";
-
-const sampleFile = {
-  size: 28 * 1024 * 1024,
-  type: "video/mp4",
-  name: "NarutoAndSasukevsMomoshiiki.mp4",
-};
-
-const VIDEO_URL = "/videodemo/NarutoEN.mp4";
-
-const DemoDownloadSameOrigin = () => {
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} downloadUrl={VIDEO_URL} />
-      <FileCard id={4} {...sampleFile} downloadUrl={VIDEO_URL} />
-    </>
-  );
-};
-export default DemoDownloadSameOrigin;`;
-
-
-const completeCodeTS =  `import * as React from "react";
-import { FileCard, FileMosaic, ExtFile } from "../../../files-ui";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "video/mp4",
-  name: "NarutoAndSasukevsMomoshiiki.mp4",
-};
-
-const VIDEO_URL = "/videodemo/NarutoEN.mp4";
-
-const DemoDownloadSameOrigin = () => {
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} downloadUrl={VIDEO_URL} />
-      <FileCard id={4} {...sampleFile} downloadUrl={VIDEO_URL} />
-    </>
-  );
-};
-export default DemoDownloadSameOrigin;`;
diff --git a/src/components/demo-components/demo-download/CodeDemoDownload3.tsx b/src/components/demo-components/demo-download/CodeDemoDownload3.tsx
deleted file mode 100644
index 30624c9fcb95e3817f9c3bdf64ff85ef394a35a4..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-download/CodeDemoDownload3.tsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoDownload1 = () => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDownload1;
-
-const splittedCodeJS = ``;
-const splittedCodeTS = ``;
-
-const completeCodeJS = `import * as React from "react";
-import { FileCard, FileMosaic } from "@files-ui/react";
-
-const outsideDownloadUrl =
-  "https://steamuserimages-a.akamaihd.net/ugc/964219647714510750/C4D97B0E1ECCE3E8A505AFBC8EAD8945E2223C41/?imw=5000&imh=5000&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false";
-
-const sampleFile = {
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor.jpeg",
-  imageUrl: outsideDownloadUrl,
-  downloadUrl: outsideDownloadUrl,
-};
-
-const DemoDownloadDifferentOriginOnDownload = () => {
-  const handleDownload = async (fileId, downloadUrl) => {
-    console.log("Download fileId", fileId);
-    console.log("Download downloadUrl", downloadUrl);
-    if (!downloadUrl) return;
-    try {
-      const image = await fetch(downloadUrl);
-      const imageBlob = await image.blob();
-      const imageURL = URL.createObjectURL(imageBlob);
-
-      const anchor = document.createElement("a");
-      anchor.href = imageURL;
-      anchor.download = sampleFile.name || "newFile.jpeg";
-
-      document.body.appendChild(anchor);
-      anchor.click();
-      document.body.removeChild(anchor);
-      URL.revokeObjectURL(imageURL);
-    } catch (error) {
-      console.log("Download error", error);
-      console.error(error);
-    }
-  };
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} onDownload={handleDownload} />
-      <FileCard id={4} {...sampleFile} onDownload={handleDownload} />
-    </>
-  );
-};
-export default DemoDownloadDifferentOriginOnDownload;`;
-
-
-const completeCodeTS =  `import * as React from "react";
-import { FileCard, FileMosaic, ExtFile } from "../../../files-ui";
-
-const outsideDownloadUrl =
-  "https://steamuserimages-a.akamaihd.net/ugc/964219647714510750/C4D97B0E1ECCE3E8A505AFBC8EAD8945E2223C41/?imw=5000&imh=5000&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor.jpeg",
-  imageUrl: outsideDownloadUrl,
-  downloadUrl: outsideDownloadUrl,
-};
-
-const DemoDownloadDifferentOriginOnDownload = () => {
-  const handleDownload = async (
-    fileId: string | number | undefined,
-    downloadUrl?: string | undefined
-  ) => {
-    console.log("Download fileId", fileId);
-    console.log("Download downloadUrl", downloadUrl);
-    if (!downloadUrl) return;
-    try {
-      const image = await fetch(downloadUrl);
-      const imageBlob = await image.blob();
-      const imageURL = URL.createObjectURL(imageBlob);
-
-      const anchor = document.createElement("a");
-      anchor.href = imageURL;
-      anchor.download = sampleFile.name || "newFile.jpeg";
-
-      document.body.appendChild(anchor);
-      anchor.click();
-      document.body.removeChild(anchor);
-      URL.revokeObjectURL(imageURL);
-    } catch (error) {
-      console.log("Download error", error);
-      console.error(error);
-    }
-  };
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} onDownload={handleDownload} />
-      <FileCard id={4} {...sampleFile} onDownload={handleDownload} />
-    </>
-  );
-};
-export default DemoDownloadDifferentOriginOnDownload;`;
diff --git a/src/components/demo-components/demo-download/DemoDownload1.tsx b/src/components/demo-components/demo-download/DemoDownload1.tsx
deleted file mode 100644
index ce45e9e2639c5653636e55b49c01b13b870d2017..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-download/DemoDownload1.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import * as React from "react";
-import { FileCard, FileMosaic, ExtFile } from "../../../files-ui";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "video/mp4",
-  name: "NarutoAndSasukevsMomoshiiki.mp4",
-};
-
-const VIDEO_URL = "/videodemo/NarutoEN.mp4";
-
-const DemoDownloadSameOrigin = () => {
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} downloadUrl={VIDEO_URL} />
-      <FileCard id={4} {...sampleFile} downloadUrl={VIDEO_URL} />
-    </>
-  );
-};
-export default DemoDownloadSameOrigin;
diff --git a/src/components/demo-components/demo-download/DemoDownload2.tsx b/src/components/demo-components/demo-download/DemoDownload2.tsx
deleted file mode 100644
index 91abeed6d408366d9cd9ec18ab33f6279d985bfb..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-download/DemoDownload2.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import * as React from "react";
-import { FileCard, FileMosaic, ExtFile } from "../../../files-ui";
-
-const outsideDownloadUrl = "https://steamuserimages-a.akamaihd.net/ugc/964219647714510750/C4D97B0E1ECCE3E8A505AFBC8EAD8945E2223C41/?imw=5000&imh=5000&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor.jpeg",
-  imageUrl: outsideDownloadUrl,
-  downloadUrl: outsideDownloadUrl,
-};
-
-const DemoDownloadDifferentOriginDownloadUrl = () => {
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} />
-      <FileCard id={4} {...sampleFile} />
-    </>
-  );
-};
-export default DemoDownloadDifferentOriginDownloadUrl;
diff --git a/src/components/demo-components/demo-download/DemoDownload3.tsx b/src/components/demo-components/demo-download/DemoDownload3.tsx
deleted file mode 100644
index 847d23b3783483cbac8885f44a4d251264cf9e9c..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-download/DemoDownload3.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-import * as React from "react";
-import { FileCard, FileMosaic, ExtFile } from "../../../files-ui";
-
-const outsideDownloadUrl =
-  "https://steamuserimages-a.akamaihd.net/ugc/964219647714510750/C4D97B0E1ECCE3E8A505AFBC8EAD8945E2223C41/?imw=5000&imh=5000&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor.jpeg",
-  imageUrl: outsideDownloadUrl,
-  downloadUrl: outsideDownloadUrl,
-};
-
-const DemoDownloadDifferentOriginOnDownload = () => {
-  const handleDownload = async (
-    fileId: string | number | undefined,
-    downloadUrl?: string | undefined
-  ) => {
-    console.log("Download fileId", fileId);
-    console.log("Download downloadUrl", downloadUrl);
-    if (!downloadUrl) return;
-    try {
-      const image = await fetch(downloadUrl);
-      const imageBlob = await image.blob();
-      const imageURL = URL.createObjectURL(imageBlob);
-
-      const anchor = document.createElement("a");
-      anchor.href = imageURL;
-      anchor.download = sampleFile.name || "newFile.jpeg";
-
-      document.body.appendChild(anchor);
-      anchor.click();
-      document.body.removeChild(anchor);
-      URL.revokeObjectURL(imageURL);
-    } catch (error) {
-      console.log("Download error", error);
-      console.error(error);
-    }
-  };
-  return (
-    <>
-      <FileMosaic id={4} {...sampleFile} onDownload={handleDownload} />
-      <FileCard id={4} {...sampleFile} onDownload={handleDownload} />
-    </>
-  );
-};
-export default DemoDownloadDifferentOriginOnDownload;
diff --git a/src/components/demo-components/demo-server-side/CodeDemoServerSideExpress.tsx b/src/components/demo-components/demo-server-side/CodeDemoServerSideExpress.tsx
deleted file mode 100644
index 440d97787e9845229b6f2244704efe52ec78fef3..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-server-side/CodeDemoServerSideExpress.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoServerSideExpress = ({ splittedOnly = false }) => {
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoServerSideExpress;
-
-const splittedCodeJS = `const express = require("express");
-const fileUpload = require("express-fileupload");
-// ... some code
-app.post("/upload-my-file", async (req, res) => {
-  try {
-    if (!req.files) {
-      res.send({
-        success: false,
-        message: "There was no file found in request",
-        payload: {},
-      });
-    } else {
-      //Use the name of the input field (i.e. "file") to retrieve the uploaded file
-      let file = req.files.file;
-      //Use the mv() method to place the file in upload directory (i.e. "uploads")
-      file.mv("./uploads/" + file.name);
-      //send response
-      res.send({
-        success: true,
-        message: "File was uploaded successfuly",
-        payload: {
-          name: file.name,
-          mimetype: file.mimetype,
-          size: file.size,
-          path: "/files/uploads/",
-          url: "https://my-ftp-server.com/bjYJGFYgjfVGHVb",
-        },
-      });
-    }
-  } catch (err) {
-    res.status(500).send({
-      status: false,
-      message: "Unexpected problem",
-      payload: {},
-    });
-  }
-});`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = ``;
-
-const completeCodeTS = ``;
diff --git a/src/components/demo-components/demo-server-side/CodeDemoServerSideJava.tsx b/src/components/demo-components/demo-server-side/CodeDemoServerSideJava.tsx
deleted file mode 100644
index 7503537907e5c657de367d458ce8bf8172f03aa5..0000000000000000000000000000000000000000
--- a/src/components/demo-components/demo-server-side/CodeDemoServerSideJava.tsx
+++ /dev/null
@@ -1,152 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoServerSideJava = ({ splittedOnly = false }) => {
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoServerSideJava;
-
-const splittedCodeJS = `// FilesUiResponse.java
-//...imports
-public class FilesUiResponse {
-    Boolean success;
-    String message;
-    Object payload;
-//..more code
-}
-
-// FileUploadController.java
-//...imports
-@CrossOrigin(origins = "*")
-@RestController
-public class FileUploadController {
-    //..more code
-    @PostMapping("/file")
-    public ResponseEntity<FilesUiResponse> uploadFile(
-            @RequestParam("file") MultipartFile multipartFile
-    ) {
-        try {
-            FileItem resultFileItem = FileUploadUtil.saveFileInDir(multipartFile);
-            FilesUiResponse response = new FilesUiResponse(
-                    true,
-                    "Files upladed successfully",
-                    resultFileItem);
-            return new ResponseEntity<>(response, HttpStatus.OK);
-        } catch (IOException ioe) {
-            FilesUiResponse response = new FilesUiResponse(
-                    false,
-                    "Error on upload",
-                    null);
-            System.out.println(ioe.getMessage());
-            return new ResponseEntity<>(response, HttpStatus.INTERNAL_SERVER_ERROR);
-        }
-    }
-    //... more code
-}
-
-// FileUploadUtil.java
-public class FileUploadUtil {
-    public static String UPLOAD_PATH = "Files-Upload";
-
-    public static FileItem saveFileInDir(MultipartFile multipartFile) throws IOException {
-        Path uploadDirectory = Paths.get(UPLOAD_PATH);
-
-        String fileId = createUUID();
-        String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename());
-
-        String extention = FileUploadUtil.getExtensionByStringHandling(fileName).get();
-
-        String finalFileName = createUUIDfileName(extention);
-        String mimeType = multipartFile.getContentType();
-
-        checkDircectoryIfExists(uploadDirectory);
-        long size = multipartFile.getSize();
-
-
-        System.out.println("fileName: " + fileName);
-        System.out.println("newFIleName: " + finalFileName);
-        System.out.println("extention: " + extention);
-        System.out.println("size: " + size);
-
-        try (InputStream inputStream = multipartFile.getInputStream()) {
-            Path filePath = uploadDirectory.resolve(fileName);
-
-            Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
-
-            FileItem finalFileItem = new FileItem(
-                    fileId,
-                    finalFileName,
-                    size,
-                    mimeType,
-                    "./UPLOAD_PATH"
-            );
-
-            // add to database here...
-
-            return finalFileItem;
-        } catch (IOException ioe) {
-            throw new IOException("Error on saving uploaded file: " + fileName, ioe);
-        }
-    }
-    public static String createUUID() {
-        UUID uuid = UUID.randomUUID();
-        String fileId = uuid.toString();
-        return fileId;
-    }
-
-    public static String createUUIDfileName(String extention) {
-        return createUUID() + "." + extention;
-    }
-
-    // more code...
-}
-
-// FileItem.java
-// ..imports
-public class FileItem {
-
-    public FileItem() { }
-
-    public FileItem(String idFileItem, String name, long size, String mimeType, String path) {
-        this.idFileItem = idFileItem;
-        this.name = name;
-        this.size=size;
-        this.mimeType = mimeType;
-        this.path = path;
-        this.creationTime = new Date();
-        this.status = true;
-    }
-    @JsonIgnore
-    private String idFileItem;
-
-    private long size;
-
-    @JsonProperty("type")
-    private String mimeType;
-
-    private String name;
-
-    @JsonIgnore
-    private String path;
-
-    private Date creationTime;
-
-    @JsonIgnore
-    private Boolean status;
-
-    //more code...
-}
-`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = ``;
-
-const completeCodeTS = ``;
diff --git a/src/components/demo-components/desc-paragraph/DescParagraph.tsx b/src/components/demo-components/desc-paragraph/DescParagraph.tsx
deleted file mode 100644
index f65e7a6ed01739e0bf05bbd87a4ede7c8fa5693d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/desc-paragraph/DescParagraph.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as React from "react";
-import { DescParagraphProps } from "./DescParagraphProps";
-import "./DescParagraphProps.scss";
-const DescParagraph: React.FC<DescParagraphProps> = (
-  props: DescParagraphProps
-) => {
-  const { content, children, margin, darkMode } = props;
-  return (
-    <div className={darkMode?"paragraph-desc dark-mode":"paragraph-desc"} style={{ margin: margin }}>
-      {children || content}
-    </div>
-  );
-};
-export default DescParagraph;
diff --git a/src/components/demo-components/desc-paragraph/DescParagraphProps.scss b/src/components/demo-components/desc-paragraph/DescParagraphProps.scss
deleted file mode 100644
index 18a88260cdde29668d5817ee93a713d3f72e2bae..0000000000000000000000000000000000000000
--- a/src/components/demo-components/desc-paragraph/DescParagraphProps.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-.paragraph-desc {
-  font-size: 1rem;
-  line-height: 1.565;
-  letter-spacing: 0;
-  font-weight: 400;
-  margin-bottom: 16px;
-  margin-top: 0;
- // color: #1a2027;
-  word-break: break-word;
-  &.dark-mode{
-    color: rgba(255, 255, 255, 0.7);
-  }
-  .code {
-    background-color: rgba(102, 178, 255, 0.15);
-    color: #1a2027;
-    padding: 0 5px;
-    display: inline-block;
-    font-size: 0.89rem;
-    direction: ltr;
-    font-weight: bolder;
-    border-radius: 4px;
-  }
-}
diff --git a/src/components/demo-components/desc-paragraph/DescParagraphProps.ts b/src/components/demo-components/desc-paragraph/DescParagraphProps.ts
deleted file mode 100644
index 2475dd114cb547eb76d86edb6484b887ccc4702e..0000000000000000000000000000000000000000
--- a/src/components/demo-components/desc-paragraph/DescParagraphProps.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export type DescParagraphProps = {
-    content?: string;
-    children?: React.ReactNode;
-    margin?: string;
-    darkMode?: boolean;
-}
\ No newline at end of file
diff --git a/src/components/demo-components/dropzone-demo/AdvancedDropzoneCodeJS.jsx b/src/components/demo-components/dropzone-demo/AdvancedDropzoneCodeJS.jsx
deleted file mode 100644
index aadbaaec013459db608ec9a0242ccbf2e5df3818..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/AdvancedDropzoneCodeJS.jsx
+++ /dev/null
@@ -1,292 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const AdvancedDropzoneCodeJS = (props) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default AdvancedDropzoneCodeJS;
-
-const splittedCodeJS = `<Dropzone
-  onChange={updateFiles}
-  minHeight="195px"
-  value={extFiles}
-  accept="image/*, video/*"
-  maxFiles={3}
-  maxFileSize={2 * 1024*1024}
-  label="Drag'n drop files here or click to browse"
-  uploadConfig={{
-    // autoUpload: true
-    url: BASE_URL + "/file/28048465460",
-    cleanOnUpload: true,
-  }}
-  onUploadStart={handleStart}
-  onUploadFinish={handleFinish}
-  //fakeUpload
-  actionButtons={{
-    position: "after",
-    abortButton: {},
-    deleteButton: {},
-    uploadButton: {},
-  }}
->
-    {extFiles.map((file) => (
-      <FileMosaic
-        {...file}
-        key={file.id}
-        onDelete={onDelete}
-        onSee={handleSee}
-        onWatch={handleWatch}
-        onAbort={handleAbort}
-        onCancel={handleCancel}
-        resultOnTooltip
-        preview
-        info
-      />
-    ))}
-</Dropzone>
-<FullScreen
-  open={imageSrc !== undefined}
-  onClose={() => setImageSrc(undefined)}
->
-  <ImagePreview src={imageSrc} />
-</FullScreen>
-<FullScreen
-  open={videoSrc !== undefined}
-  onClose={() => setVideoSrc(undefined)}
->
-  <VideoPreview src={videoSrc} autoPlay controls />
-</FullScreen>`;
-const completeCodeJS = `import {
-  Dropzone,
-  FileMosaic,
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-} from "@files-ui/react";
-
-const BASE_URL =
- "https://files-ui-express-static-file-storage.vercel.app/39d33dff2d41b522c1ea276c4b82507f96b9699493d2e7b3f5c864ba743d9503";
-
-export default function AdvancedDropzoneDemo() {
- const [extFiles, setExtFiles] = React.useState([]);
- const [imageSrc, setImageSrc] = React.useState(undefined);
- const [videoSrc, setVideoSrc] = React.useState(undefined);
- 
- const updateFiles = (incommingFiles) => {
-   console.log("incomming files", incommingFiles);
-   setExtFiles(incommingFiles);
- };
- const onDelete = (id) => {
-   setExtFiles(extFiles.filter((x) => x.id !== id));
- };
- const handleSee = (imageSource) => {
-   setImageSrc(imageSource);
- };
- const handleWatch = (videoSource) => {
-   setVideoSrc(videoSource);
- };
- const handleStart = (filesToUpload) => {
-   console.log("advanced demo start upload", filesToUpload);
- };
- const handleFinish = (uploadedFiles) => {
-   console.log("advanced demo finish upload", uploadedFiles);
- };
- const handleAbort = (id) => {
-   setExtFiles(
-     extFiles.map((ef) => {
-       if (ef.id === id) {
-         return { ...ef, uploadStatus: "aborted" };
-       } else return { ...ef };
-     })
-   );
- };
- const handleCancel = (id) => {
-   setExtFiles(
-     extFiles.map((ef) => {
-       if (ef.id === id) {
-         return { ...ef, uploadStatus: undefined };
-       } else return { ...ef };
-     })
-   );
- };
- return (
-   <>
-     <Dropzone
-        onChange={updateFiles}
-        minHeight="195px"
-        value={extFiles}
-        accept="image/*, video/*"
-        maxFiles={3}
-        maxFileSize={2 * 1024*1024}
-        label="Drag'n drop files here or click to browse"
-        uploadConfig={{
-          // autoUpload: true
-          url: BASE_URL + "/file/28048465460",
-          cleanOnUpload: true,
-        }}
-        onUploadStart={handleStart}
-        onUploadFinish={handleFinish}
-        //fakeUpload
-        actionButtons={{
-          position: "after",
-          abortButton: {},
-          deleteButton: {},
-          uploadButton: {},
-        }}
-     >
-       {extFiles.map((file) => (
-         <FileMosaic
-           {...file}
-           key={file.id}
-           onDelete={onDelete}
-           onSee={handleSee}
-           onWatch={handleWatch}
-           onAbort={handleAbort}
-           onCancel={handleCancel}
-           resultOnTooltip
-           alwaysActive
-           preview
-           info
-         />
-       ))}
-     </Dropzone>
-     <FullScreen
-       open={imageSrc !== undefined}
-       onClose={() => setImageSrc(undefined)}
-     >
-       <ImagePreview src={imageSrc} />
-     </FullScreen>
-     <FullScreen
-       open={videoSrc !== undefined}
-       onClose={() => setVideoSrc(undefined)}
-     >
-       <VideoPreview src={videoSrc} autoPlay controls />
-     </FullScreen>
-   </>
- );
-}`;
-
-const completeCodeTS = `import {
-  Dropzone,
-  ExtFile,
-  FileMosaic,
-  FileMosaicProps,
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
- } from "@files-ui/react";
-
- const BASE_URL =
- "https://files-ui-express-static-file-storage.vercel.app/39d33dff2d41b522c1ea276c4b82507f96b9699493d2e7b3f5c864ba743d9503";
-
-export default function AdvancedDropzoneDemo() {
- const [extFiles, setExtFiles] = React.useState<ExtFile[]>([]);
- const [imageSrc, setImageSrc] = React.useState<File | string | undefined>(
-   undefined
- );
- const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-   undefined
- );
- const updateFiles = (incommingFiles: ExtFile[]) => {
-   console.log("incomming files", incommingFiles);
-   setExtFiles(incommingFiles);
- };
- const onDelete = (id: FileMosaicProps["id"]) => {
-   setExtFiles(extFiles.filter((x) => x.id !== id));
- };
- const handleSee = (imageSource: File | string | undefined) => {
-   setImageSrc(imageSource);
- };
- const handleWatch = (videoSource: File | string | undefined) => {
-   setVideoSrc(videoSource);
- };
- const handleStart = (filesToUpload: ExtFile[]) => {
-   console.log("advanced demo start upload", filesToUpload);
- };
- const handleFinish = (uploadedFiles: ExtFile[]) => {
-   console.log("advanced demo finish upload", uploadedFiles);
- };
- const handleAbort = (id: FileMosaicProps["id"]) => {
-   setExtFiles(
-     extFiles.map((ef) => {
-       if (ef.id === id) {
-         return { ...ef, uploadStatus: "aborted" };
-       } else return { ...ef };
-     })
-   );
- };
- const handleCancel = (id: FileMosaicProps["id"]) => {
-   setExtFiles(
-     extFiles.map((ef) => {
-       if (ef.id === id) {
-         return { ...ef, uploadStatus: undefined };
-       } else return { ...ef };
-     })
-   );
- };
- return (
-   <>
-     <Dropzone
-       onChange={updateFiles}
-       minHeight="195px"
-       value={extFiles}
-       maxFiles={3}
-       // FmaxFileSize={2998000 * 20}
-       label="Drag'n drop files here or click to browse"
-       // accept=".png,image/*, video/*"
-       uploadConfig={{
-         // autoUpload: true
-         url: BASE_URL + "/file/28048465460",
-         cleanOnUpload: true,
-      }}
-       onUploadStart={handleStart}
-       onUploadFinish={handleFinish}
-       //fakeUpload
-       actionButtons={{
-         position: "after",
-         abortButton: {},
-         deleteButton: {},
-         uploadButton: {},
-      }}
-     >
-       {extFiles.map((file) => (
-         <FileMosaic
-           {...file}
-           key={file.id}
-           onDelete={onDelete}
-           onSee={handleSee}
-           onWatch={handleWatch}
-           onAbort={handleAbort}
-           onCancel={handleCancel}
-           resultOnTooltip
-           alwaysActive
-           preview
-           info
-         />
-       ))}
-     </Dropzone>
-     <FullScreen
-       open={imageSrc !== undefined}
-       onClose={() => setImageSrc(undefined)}
-     >
-       <ImagePreview src={imageSrc} />
-     </FullScreen>
-     <FullScreen
-       open={videoSrc !== undefined}
-       onClose={() => setVideoSrc(undefined)}
-     >
-       <VideoPreview src={videoSrc} autoPlay controls />
-     </FullScreen>
-   </>
- );
-}`;
-const splittedCodeTS = splittedCodeJS;
diff --git a/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.tsx b/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.tsx
deleted file mode 100644
index ed88efba1021abd5ea7adb757f2ef0332684890d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.tsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import * as React from "react";
-import {
-  Dropzone,
-  ExtFile,
-  FileMosaic,
-  FileMosaicProps,
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-} from "../../../files-ui";
-
-const BASE_URL =
-  "https://files-ui-express-static-file-storage.vercel.app/39d33dff2d41b522c1ea276c4b82507f96b9699493d2e7b3f5c864ba743d9503";
-
-export default function AdvancedDropzoneDemo() {
-  const [extFiles, setExtFiles] = React.useState<ExtFile[]>([]);
-  const [imageSrc, setImageSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-  const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-  const updateFiles = (incommingFiles: ExtFile[]) => {
-    console.log("incomming files", incommingFiles);
-    setExtFiles(incommingFiles);
-  };
-  const onDelete = (id: FileMosaicProps["id"]) => {
-    setExtFiles(extFiles.filter((x) => x.id !== id));
-  };
-  const handleSee = (imageSource: File | string | undefined) => {
-    setImageSrc(imageSource);
-  };
-  const handleWatch = (videoSource: File | string | undefined) => {
-    setVideoSrc(videoSource);
-  };
-  const handleStart = (filesToUpload: ExtFile[]) => {
-    console.log("advanced demo start upload", filesToUpload);
-  };
-  const handleFinish = (uploadedFiles: ExtFile[]) => {
-    console.log("advanced demo finish upload", uploadedFiles);
-  };
-  const handleAbort = (id: FileMosaicProps["id"]) => {
-    setExtFiles(
-      extFiles.map((ef) => {
-        if (ef.id === id) {
-          return { ...ef, uploadStatus: "aborted" };
-        } else return { ...ef };
-      })
-    );
-  };
-  const handleCancel = (id: FileMosaicProps["id"]) => {
-    setExtFiles(
-      extFiles.map((ef) => {
-        if (ef.id === id) {
-          return { ...ef, uploadStatus: undefined };
-        } else return { ...ef };
-      })
-    );
-  };
-  return (
-    <>
-      <Dropzone
-        onChange={updateFiles}
-        minHeight="195px"
-        value={extFiles}
-        accept="image/*, video/*"
-        maxFiles={3}
-        maxFileSize={2 * 1024*1024}
-        label="Drag'n drop files here or click to browse"
-        // accept=".png,image/*, video/*"
-        uploadConfig={{
-          // autoUpload: true
-          url: BASE_URL + "/file/28048465460",
-          cleanOnUpload: true,
-        }}
-        onUploadStart={handleStart}
-        onUploadFinish={handleFinish}
-        //fakeUpload
-        actionButtons={{
-          position: "after",
-          abortButton: {},
-          deleteButton: {},
-          uploadButton: {},
-        }}
-      >
-        {extFiles.map((file) => (
-          <FileMosaic
-            {...file}
-            key={file.id}
-            onDelete={onDelete}
-            onSee={handleSee}
-            onWatch={handleWatch}
-            onAbort={handleAbort}
-            onCancel={handleCancel}
-            resultOnTooltip
-            preview
-            info
-          />
-        ))}
-      </Dropzone>
-      <FullScreen
-        open={imageSrc !== undefined}
-        onClose={() => setImageSrc(undefined)}
-      >
-        <ImagePreview src={imageSrc} />
-      </FullScreen>
-      <FullScreen
-        open={videoSrc !== undefined}
-        onClose={() => setVideoSrc(undefined)}
-      >
-        <VideoPreview src={videoSrc} autoPlay controls />
-      </FullScreen>
-    </>
-  );
-}
diff --git a/src/components/demo-components/dropzone-demo/BasicDropzoneCodeJS.jsx b/src/components/demo-components/dropzone-demo/BasicDropzoneCodeJS.jsx
deleted file mode 100644
index c1576e5d498f067063262b6e6bd85835936cd28e..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/BasicDropzoneCodeJS.jsx
+++ /dev/null
@@ -1,180 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const BasicDropzoneCode = ({ splittedOnly = false, button = false }) => {
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={button ? completeCodeJSButton : completeCodeJS}
-      codeCompleteTS={button ? completeCodeTSButton : completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/basic-demo-js-blssi1"
-      codeSandboxTS="https://codesandbox.io/s/basic-demo-js-blssi1"
-      codeSplittedJS={button ? splittedCodeJSButton : splittedCodeJS}
-      codeSplittedTS={button ? splittedCodeTSButton : splittedCodeTS}
-    />
-  );
-};
-export default BasicDropzoneCode;
-
-const splittedCodeJSButton = `<FileInputButton onChange={updateFiles} value={files} />
-
-{files.map((file) => (
-  <FileCard key={file.id} {...file} onDelete={removeFile} info />
-))}`;
-const splittedCodeTSButton = `<FileInputButton onChange={updateFiles} value={files} />
-
-{files.map((file: ExtFile) => (
-  <FileCard key={file.id} {...file} onDelete={removeFile} info />
-))}`;
-
-const completeCodeJSButton = `import { FileInputButton, FileCard } from "@files-ui/react";
-import * as React from "react";
-
-export default function BasicDemoFileInputButton() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton onChange={updateFiles} value={files} />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info />
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-const completeCodeTSButton = `import { FileInputButton, FileCard, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-export default function BasicDemoFileInputButton() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: number | string | undefined) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton onChange={updateFiles} value={files} />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file: ExtFile) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info />
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-
-//////////
-const splittedCodeJS = `<Dropzone
-  onChange={updateFiles}
-  value={files}
->
-  {files.map((file) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const splittedCodeTS = `<Dropzone
-  onChange={updateFiles}
-  value={files}
->
-  {files.map((file: ExtFile) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info={true}/>
-    ))}
-</Dropzone>`;
-const completeCodeJS = `import { Dropzone,FileMosaic } from "@files-ui/react";
-import * as React from "react";
-
-export default function BasicDemoDropzone() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-}`;
-
-const completeCodeTS = `import { Dropzone, FileMosaic, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-export default function BasicDemoDropzone() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-    >
-      {files.map((file:ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info={true} />
-        ))}
-    </Dropzone>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/BasicDropzoneDemo.jsx b/src/components/demo-components/dropzone-demo/BasicDropzoneDemo.jsx
deleted file mode 100644
index 8285ea9377181bfa0268ebd956e9aa5455d9a30e..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/BasicDropzoneDemo.jsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import {
-  Dropzone,
-  FileCard,
-  FileInputButton,
-  FileMosaic,
-} from "../../../files-ui";
-import * as React from "react";
-export default function BasicDemoDropzone({ button }) {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  if (button) {
-    return (
-      <div
-        style={{
-          display: "flex",
-          alignItems: "center",
-          justifyContent: "space-evenly",
-          gap: "10px",
-          flexWrap: "wrap",
-          width: "100%",
-        }}
-      >
-        <FileInputButton onChange={updateFiles} value={files} />
-        {files.length > 0 && (
-          <div
-            style={{
-              display: "flex",
-              justifyContent:"center",
-              flexWrap:"wrap",
-              gap:"5px",
-              minWidth:"50%"
-            }}
-          >
-            {files.map((file) => (
-              <FileCard key={file.id} {...file} onDelete={removeFile} info />
-            ))}
-          </div>
-        )}
-      </div>
-    );
-  }
-  return (
-    <Dropzone onChange={updateFiles} value={files}>
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-}
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneActionButtons.jsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneActionButtons.jsx
deleted file mode 100644
index 1c9e4015fc722a789d37376528855cbfeaddd82b..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneActionButtons.jsx
+++ /dev/null
@@ -1,282 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoActionButtons = ({ splittedOnly = false, button }) => {
-  if (button)
-    return (
-      <ShowDemoCode
-        splittedOnly={splittedOnly}
-        codeCompleteJS={completeCodeJSButton}
-        codeCompleteTS={completeCodeTSButton}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJSButton}
-        codeSplittedTS={splittedCodeTSButton}
-      />
-    );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoActionButtons;
-
-const splittedCodeJSButton = `<FileInputButton
-  onChange={updateFiles}
-  value={files}
-  autoClean
-  uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-  fakeUpload
-  actionButtons={{
-    position: "bottom",
-    uploadButton: { style: { textTransform: "uppercase" } },
-    abortButton: {},
-    cleanButton: {},
-    deleteButton: {},
-  }}
-/>
-{files.map((file) => (
-  <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-))}`;
-const splittedCodeTSButton = `<FileInputButton
-  onChange={updateFiles}
-  value={files}
-  autoClean
-  uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-  fakeUpload
-  actionButtons={{
-    position: "bottom",
-    uploadButton: { style: { textTransform: "uppercase" } },
-    abortButton: {},
-    cleanButton: {},
-    deleteButton: {},
-  }}
-/>
-{files.map((file: ExtFile) => (
-    <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-))}`;
-const completeCodeJSButton = `import { FileInputButton, FileCard } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        autoClean
-        uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-        fakeUpload
-        actionButtons={{
-          position: "bottom",
-          uploadButton: { style: { textTransform: "uppercase" } },
-          abortButton: {},
-          cleanButton: {},
-          deleteButton: {},
-        }}
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-const completeCodeTSButton = `import { FileInputButton, FileCard, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: number | string | undefined) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        autoClean
-        uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-        fakeUpload
-        actionButtons={{
-          position: "bottom",
-          uploadButton: { style: { textTransform: "uppercase" } },
-          abortButton: {},
-          cleanButton: {},
-          deleteButton: {},
-        }}
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file: ExtFile) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-
-/////
-
-const splittedCodeJS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    autoClean
-    uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-    fakeUpload
-    actionButtons={{
-      position: "bottom",
-      uploadButton: { style: { textTransform: "uppercase" } },
-      abortButton: {},
-      cleanButton: {},
-      deleteButton: {},
-    }}
->
-  {files.map((file) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const splittedCodeTS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    autoClean
-    uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-    fakeUpload
-    actionButtons={{
-      position: "bottom",
-      uploadButton: { style: { textTransform: "uppercase" } },
-      abortButton: {},
-      cleanButton: {},
-      deleteButton: {},
-    }}
->
-  {files.map((file: ExtFile) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone, FileMosaic } from "@files-ui/react";
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        autoClean
-        uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-        fakeUpload
-        actionButtons={{
-            position: "bottom",
-            uploadButton: { style: { textTransform: "uppercase" } },
-            abortButton: {},
-            cleanButton: {},
-            deleteButton: {},
-        }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};`;
-
-const completeCodeTS = `import * as React from "react";
-import { Dropzone, FileMosaic, ExtFile } from "@files-ui/react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        autoClean
-        uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-        fakeUpload
-        actionButtons={{
-            position: "bottom",
-            uploadButton: { style: { textTransform: "uppercase" } },
-            abortButton: {},
-            cleanButton: {},
-            deleteButton: {},
-        }}
-    >
-      {files.map((file:ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneBehaviour.tsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneBehaviour.tsx
deleted file mode 100644
index a48d1107fe35c39d02b869ccefc9600440a61833..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneBehaviour.tsx
+++ /dev/null
@@ -1,376 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneBehaviour = ({ splittedOnly = false, button=false }) => {
-  if(button) return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJSButton}
-      codeCompleteTS={completeCodeTSButton}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJSButton}
-      codeSplittedTS={splittedCodeTSButton}
-    />
-  );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneBehaviour;
-
-const splittedCodeJSButton = `<FileInputButton onChange={updateFilesAdd} value={filesAdd} label="add"/>
-
-{filesAdd.map((file) => (
-  <FileCard key={file.id} {...file} onDelete={removeFileAdd} info preview />
-))}
-
-<FileInputButton
-  onChange={updateFilesReplace}
-  value={filesReplace}
-  variant="outlined"
-  label="replace"
-  behaviour="replace"
-/>
-{filesReplace.map((file) => (
-  <FileCard key={file.id} {...file} onDelete={removeFileReplace} info preview />
-))}`;
-
-const splittedCodeTSButton = splittedCodeJSButton;
-const completeCodeJSButton = `import * as React from "react";
-import { Dropzone, FileCard } from "@files-ui/react";
-
-export default function App() {
-    const [filesAdd, setFilesAdd] = React.useState([]);
-    const [filesReplace, setFilesReplace] = React.useState([]);
-
-    const updateFilesAdd = (incommingFiles) => {
-      setFilesAdd(incommingFiles);
-    };
-    const updateFilesReplace = (incommingFiles) => {
-      setFilesReplace(incommingFiles);
-    };
-    const removeFileAdd = (id) => {
-      setFilesAdd(filesAdd.filter((x) => x.id !== id));
-    };
-    const removeFileReplace = (id) => {
-      setFilesReplace(filesReplace.filter((x) => x.id !== id));
-    };
-
-    return (
-      <div style={mainContainerStyle}>
-        <div style={itemContainerStyle}>
-          <FileInputButton
-              onChange={updateFilesAdd}
-              value={filesAdd}
-              label="add"
-            />
-            {filesAdd.map((file) => (
-              <FileCard
-                key={file.id}
-                {...file}
-                onDelete={removeFileAdd}
-                info
-                preview
-              />
-            ))}
-        </div>
-        <div style={itemContainerStyle}>
-          <FileInputButton
-            onChange={updateFilesReplace}
-            value={filesReplace}
-            variant="outlined"
-            label="replace"
-            behaviour="replace"
-          />
-          {filesReplace.map((file) => (
-            <FileCard
-              key={file.id}
-              {...file}
-              onDelete={removeFileReplace}
-              info
-              preview
-            />
-          ))}
-        </div>
-      </div>
-    );
-};
-  
-const mainContainerStyle = {
-  display: "flex",
-  justifyContent: "space-evenly",
-  gap: "40px",
-  flexWrap: "wrap",
-  width: "100%",
-};
-const itemContainerStyle = {
-  display: "flex",
-  flexDirection: "column",
-  minWidth: "40%",
-  gap: "5px",
-  alignItems: "center",
-};`;
-
-const completeCodeTSButton = `import * as React from "react";
-import { FileInputButton, ExtFile, FileCard, FileCardProps } from "@files-ui/react";
-
-export default function App() {
-    const [filesAdd, setFilesAdd] = React.useState<ExtFile[]>([]);
-    const [filesReplace, setFilesReplace] = React.useState<ExtFile[]>([]);
-
-    const updateFilesAdd = (incommingFiles:ExtFile[]) => {
-      setFilesAdd(incommingFiles);
-    };
-    const updateFilesReplace = (incommingFiles:ExtFile[]) => {
-      setFilesReplace(incommingFiles);
-    };
-    const removeFileAdd = (id:FileCardProps["id"]) => {
-      setFilesAdd(filesAdd.filter((x) => x.id !== id));
-    };
-    const removeFileReplace = (id:FileCardProps["id"]) => {
-      setFilesReplace(filesReplace.filter((x) => x.id !== id));
-    };
-
-    return (
-      <div style={mainContainerStyle}>
-        <div style={itemContainerStyle}>
-          <FileInputButton
-            onChange={updateFilesAdd}
-            value={filesAdd}
-            label="add"
-          />
-          {filesAdd.map((file) => (
-            <FileCard
-              key={file.id}
-              {...file}
-              onDelete={removeFileAdd}
-              info
-              preview
-            />
-          ))}
-        </div>
-        <div style={itemContainerStyle}>
-          <FileInputButton
-            onChange={updateFilesReplace}
-            value={filesReplace}
-            variant="outlined"
-            label="replace"
-            behaviour="replace"
-          />
-          {filesReplace.map((file) => (
-            <FileCard
-              key={file.id}
-              {...file}
-              onDelete={removeFileReplace}
-              info
-              preview
-            />
-          ))}
-        </div>
-      </div>
-    );
-};
-  
-const mainContainerStyle: React.CSSProperties = {
-  display: "flex",
-  justifyContent: "space-evenly",
-  gap: "40px",
-  flexWrap: "wrap",
-  width: "100%",
-};
-const itemContainerStyle: React.CSSProperties = {
-  display: "flex",
-  flexDirection: "column",
-  minWidth: "40%",
-  gap: "5px",
-  alignItems: "center",
-};`;
-
-
-
-
-//////
-const splittedCodeJS = `<Dropzone
-  style={{ width: "min(100% , 420px)" }}
-  onChange={updateFilesAdd}
-  value={filesAdd}
-  label="Dropzone with behaviour=add"
-  behaviour={"add"}
->
-  {filesAdd.length > 0 &&
-    filesAdd.map((file) => (
-      <FileMosaic
-        key={file.id}
-        {...file}
-        onDelete={removeFileAdd}
-        info
-        preview
-      />
-    ))}
-</Dropzone>
-<Dropzone
-  style={{ width: "min(100% , 420px)" }}
-  onChange={updateFilesReplace}
-  value={filesReplace}
-  label="Dropzone with behaviour=replace"
-  behaviour={"replace"}
->
-  {filesReplace.length > 0 &&
-    filesReplace.map((file) => (
-      <FileMosaic
-        key={file.id}
-        {...file}
-        onDelete={removeFileReplace}
-        info
-        preview
-      />
-    ))}
-</Dropzone>`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone, FileMosaic } from "@files-ui/react";
-
-const DemoDropzoneBehaviour = () => {
-    const [filesAdd, setFilesAdd] = React.useState([]);
-    const [filesReplace, setFilesReplace] = React.useState([]);
-
-    const updateFilesAdd = (incommingFiles) => {
-      setFilesAdd(incommingFiles);
-    };
-    const updateFilesReplace = (incommingFiles) => {
-      setFilesReplace(incommingFiles);
-    };
-    const removeFileAdd = (id) => {
-      setFilesAdd(filesAdd.filter((x) => x.id !== id));
-    };
-    const removeFileReplace = (id) => {
-      setFilesReplace(filesReplace.filter((x) => x.id !== id));
-    };
-
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <Dropzone
-          style={{ width: "min(100% , 420px)" }}
-          onChange={updateFilesAdd}
-          value={filesAdd}
-          label="Dropzone with behaviour=add"
-          behaviour={"add"}
-        >
-          {filesAdd.length > 0 &&
-            filesAdd.map((file) => (
-              <FileMosaic
-                key={file.id}
-                {...file}
-                onDelete={removeFileAdd}
-                info
-                preview
-              />
-            ))}
-        </Dropzone>
-        <Dropzone
-          style={{ width: "min(100% , 420px)" }}
-          onChange={updateFilesReplace}
-          value={filesReplace}
-          label="Dropzone with behaviour=replace"
-          behaviour={"replace"}
-        >
-          {filesReplace.length > 0 &&
-            filesReplace.map((file) => (
-              <FileMosaic
-                key={file.id}
-                {...file}
-                onDelete={removeFileReplace}
-                info
-                preview
-              />
-            ))}
-        </Dropzone>
-      </div>
-    );
-  };
-  export default DemoDropzoneBehaviour;`;
-
-const completeCodeTS = `import * as React from "react";
-import { Dropzone, ExtFile, FileMosaic, FileMosaicProps } from "@files-ui/react";
-
-const DemoDropzoneBehaviour = () => {
-    const [filesAdd, setFilesAdd] = React.useState<ExtFile[]>([]);
-    const [filesReplace, setFilesReplace] = React.useState<ExtFile[]>([]);
-
-    const updateFilesAdd = (incommingFiles:ExtFile[]) => {
-      setFilesAdd(incommingFiles);
-    };
-    const updateFilesReplace = (incommingFiles:ExtFile[]) => {
-      setFilesReplace(incommingFiles);
-    };
-    const removeFileAdd = (id:FileMosaicProps["id"]) => {
-      setFilesAdd(filesAdd.filter((x) => x.id !== id));
-    };
-    const removeFileReplace = (id:FileMosaicProps["id"]) => {
-      setFilesReplace(filesReplace.filter((x) => x.id !== id));
-    };
-
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <Dropzone
-          style={{ width: "min(100% , 420px)" }}
-          onChange={updateFilesAdd}
-          value={filesAdd}
-          label="Dropzone with behaviour=add"
-          behaviour={"add"}
-        >
-          {filesAdd.length > 0 &&
-            filesAdd.map((file) => (
-              <FileMosaic
-                key={file.id}
-                {...file}
-                onDelete={removeFileAdd}
-                info
-                preview
-              />
-            ))}
-        </Dropzone>
-        <Dropzone
-          style={{ width: "min(100% , 420px)" }}
-          onChange={updateFilesReplace}
-          value={filesReplace}
-          label="Dropzone with behaviour=replace"
-          behaviour={"replace"}
-        >
-          {filesReplace.length > 0 &&
-            filesReplace.map((file) => (
-              <FileMosaic
-                key={file.id}
-                {...file}
-                onDelete={removeFileReplace}
-                info
-                preview
-              />
-            ))}
-        </Dropzone>
-      </div>
-    );
-  };
-  export default DemoDropzoneBehaviour;`;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneClickable.tsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneClickable.tsx
deleted file mode 100644
index db3c823a30aa8f5cd3374f30dc6ad39f573e026d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneClickable.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneClickable = ({ splittedOnly = false }) => {
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneClickable;
-
-const splittedCodeJS = `<Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-<Dropzone style={{ width: "300px" }} clickable={false}>
-  {/**Files */}
-</Dropzone>`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone } from "@files-ui/react";
-
-const DemoDropzoneRipple = () => {
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-        <Dropzone style={{ width: "300px" }} clickable={false}>
-            {/**Files */}
-        </Dropzone>
-      </div>
-    );
-  };
-  export default DemoDropzoneRipple;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneCustomValidation.jsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneCustomValidation.jsx
deleted file mode 100644
index 6f36973e274fb59b45799fa4e2bae68dbe887142..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneCustomValidation.jsx
+++ /dev/null
@@ -1,249 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneCustomValidation = ({
-  splittedOnly = false,
-  button = false,
-}) => {
-  if (button)
-    return (
-      <ShowDemoCode
-        splittedOnly={splittedOnly}
-        codeCompleteJS={completeCodeJSButton}
-        codeCompleteTS={completeCodeTSButton}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJSButton}
-        codeSplittedTS={splittedCodeTSButton}
-      />
-    );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneCustomValidation;
-
-const splittedCodeJSButton = ``;
-const splittedCodeTSButton = ``;
-const completeCodeJSButton = `import { FileInputButton, FileCard } from "@files-ui/react";
-import * as React from "react";
-
-//validate files
-// file name must start with the following prefix: "test_file"
-// (e.g. a valid file name could be "test_file_photo.png")
-const myOwnValidation = (file) => {
-  let errorList= [];
-  let validResult = true;
-  const regExPrefix = /\\btest_file\\w+/;
-  if (!file.name.match(regExPrefix)) {
-    validResult = false;
-    errorList.push('Prefix "test_file" was not present in the file name');
-  }
-  return { valid: validResult, errors: errorList };
-};
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={280 * 1024}
-        maxFiles={2}
-        actionButtons={{ position: "bottom", cleanButton: {} }}
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info />
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-const completeCodeTSButton =
-  `import { FileInputButton, FileCard, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-//validate files
-// file name must start with the following prefix: "test_file"
-// (e.g. a valid file name could be "test_file_photo.png")
-const myOwnValidation = (file: File): ValidateFileResponse => {
-  let errorList: string[] = [];
-  let validResult: boolean = true;
-  ` +
-  // eslint-disable-next-line
-  `const regExPrefix: RegExp = /\btest_file\w+/;
-  if (!file.name.match(regExPrefix)) {
-    validResult = false;
-    errorList.push('Prefix "test_file" was not present in the file name');
-  }
-  return { valid: validResult, errors: errorList };
-};
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: number | string | undefined) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={280 * 1024}
-        maxFiles={2}
-        actionButtons={{ position: "bottom", cleanButton: {} }}
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file: ExtFile) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info />
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-
-/////
-
-const splittedCodeJS = ``;
-const splittedCodeTS = ``;
-const completeCodeJS = `import { Dropzone, FileMosaic } from "@files-ui/react";
-import * as React from "react";
-
-//validate files
-// file name must start with the following prefix: "test_file"
-// (e.g. a valid file name could be "test_file_photo.png")
-const myOwnValidation = (file) => {
-  let errorList= [];
-  let validResult = true;
-  const regExPrefix = /\\btest_file\\w+/;
-  if (!file.name.match(regExPrefix)) {
-    validResult = false;
-    errorList.push('Prefix "test_file" was not present in the file name');
-  }
-  return { valid: validResult, errors: errorList };
-};
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      cleanFiles
-      validator={myOwnValidation}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-}`;
-
-const completeCodeTS = `import { Dropzone, FileMosaic, ExtFile, ValidateFileResponse } from "@files-ui/react";
-import * as React from "react";
-
-//validate files
-// file name must start with the following prefix: "test_file"
-// (e.g. a valid file name could be "test_file_photo.png")
-const myOwnValidation = (file: File): ValidateFileResponse => {
-  let errorList: string[] = [];
-  let validResult: boolean = true;
-  const regExPrefix: RegExp = /\\btest_file\\w+/;
-  if (!file.name.match(regExPrefix)) {
-    validResult = false;
-    errorList.push('Prefix "test_file" was not present in the file name');
-  }
-  return { valid: validResult, errors: errorList };
-};
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      cleanFiles
-      validator={myOwnValidation}
-    >
-      {files.map((file:ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info={true} />
-        ))}
-    </Dropzone>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneDisabled.tsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneDisabled.tsx
deleted file mode 100644
index 67fd4ef5b12ea4d98b288e683c52834f0f1c8d17..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneDisabled.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneDisabled = ({ splittedOnly = false, button = false }) => {
-  if (button)
-    return (
-      <ShowDemoCode
-        splittedOnly={splittedOnly}
-        codeCompleteJS={completeCodeJSButton}
-        codeCompleteTS={completeCodeTSButton}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJSButton}
-        codeSplittedTS={splittedCodeTSButton}
-      />
-    );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneDisabled;
-
-
-
-const splittedCodeJSButton = `<FileInputButton>{"input enabled"}</FileInputButton>
-<FileInputButton disabled>{"input disabled"}</FileInputButton>`;
-const splittedCodeTSButton = splittedCodeJSButton;
-const completeCodeJSButton = `import { FileInputButton } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "40px",
-        flexWrap: "wrap",
-      }}
-    >
-      <FileInputButton>{"input enabled"}</FileInputButton>
-      <FileInputButton disabled>{"input disabled"}</FileInputButton>
-    </div>
-  );
-}`;
-const completeCodeTSButton = completeCodeJSButton;
-
-/////
-
-
-const splittedCodeJS = `<Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-<Dropzone style={{ width: "300px" }} disabled>
-  {"Dropzone is disabled"}
-  {/**Files */}
-</Dropzone>`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone } from "@files-ui/react";
-
-const DemoDropzoneDisabled = () => {
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-        <Dropzone style={{ width: "300px" }} disabled>
-          {"Dropzone is disabled"}
-          {/**Files */}
-        </Dropzone>
-      </div>
-    );
-  };
-  export default DemoDropzoneDisabled;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneDropLayer.tsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneDropLayer.tsx
deleted file mode 100644
index 1a9fff8892afba49bf04cc16b6d2651d83030a18..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneDropLayer.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneDropLayer = ({ splittedOnly = false }) => {
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneDropLayer;
-
-const splittedCodeJS = `<Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-<Dropzone style={{ width: "300px" }} dropOnLayer={false}>
-  {/**Files */}
-</Dropzone>`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone } from "@files-ui/react";
-
-const DemoDropzoneRipple = () => {
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-        <Dropzone style={{ width: "300px" }} dropOnLayer={false}>
-          {/**Files */}
-        </Dropzone>
-      </div>
-    );
-  };
-  export default DemoDropzoneRipple;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneFooterConfig.jsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneFooterConfig.jsx
deleted file mode 100644
index b3204ff92b26c1b801ed73736941553bed426490..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneFooterConfig.jsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneFooterConfig = ({ splittedOnly = false }) => {
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneFooterConfig;
-
-const splittedCodeJS = `<Dropzone
-  onChange={updateFiles}
-  value={files}
-  footerConfig={{ customMessage: "This is a custom message..." }}
->
-  {files.map((file) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const splittedCodeTS = `<Dropzone
-  onChange={updateFiles}
-  value={files}
-  footerConfig={{ customMessage: "This is a custom message..." }}
->
-  {files.map((file: ExtFile) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone, FileMosaic } from "@files-ui/react";
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      footerConfig={{ customMessage: "This is a custom message..." }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};`;
-
-const completeCodeTS = `import * as React from "react";
-import { Dropzone, FileMosaic, ExtFile } from "@files-ui/react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      footerConfig={{ customMessage: "This is a custom message..." }}
-    >
-      {files.map((file:ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneHeaderConfig.jsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneHeaderConfig.jsx
deleted file mode 100644
index 126005c8f79dc4c1ccdee7b626ab451101f5a209..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneHeaderConfig.jsx
+++ /dev/null
@@ -1,137 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneHeaderConfig = ({ splittedOnly = false }) => {
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneHeaderConfig;
-
-const splittedCodeJS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    headerConfig={{
-      customHeader: (
-        <div style={{ display: "flex", justifyContent: "flex-end" }}>
-          <button
-            style={{ backgroundColor: "teal", color: "white" }}
-            onClick={removeAllFiles}
-          >
-            delete files
-          </button>
-        </div>
-      ),
-    }}
->
-  {files.map((file) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const splittedCodeTS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    headerConfig={{
-      customHeader: (
-        <div style={{ display: "flex", justifyContent: "flex-end" }}>
-          <button
-            style={{ backgroundColor: "teal", color: "white" }}
-            onClick={removeAllFiles}
-          >
-            delete files
-          </button>
-        </div>
-      ),
-    }}
->
-  {files.map((file: ExtFile) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone, FileMosaic } from "@files-ui/react";
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const removeAllFiles = (evt) => {
-    evt.stopPropagation();
-    setFiles([]);
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        headerConfig={{
-          customHeader: (
-            <div style={{ display: "flex", justifyContent: "flex-end" }}>
-              <button
-                style={{ backgroundColor: "teal", color: "white" }}
-                onClick={removeAllFiles}
-              >
-                delete files
-              </button>
-            </div>
-          ),
-        }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};`;
-
-const completeCodeTS = `import * as React from "react";
-import { Dropzone, FileMosaic, ExtFile } from "@files-ui/react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  const removeAllFiles = (evt) => {
-    evt.stopPropagation();
-    setFiles([]);
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        headerConfig={{
-          customHeader: (
-            <div style={{ display: "flex", justifyContent: "flex-end" }}>
-              <button
-                style={{ backgroundColor: "teal", color: "white" }}
-                onClick={removeAllFiles}
-              >
-                delete files
-              </button>
-            </div>
-          ),
-        }}
-    >
-      {files.map((file:ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneRipple.jsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneRipple.jsx
deleted file mode 100644
index 0c168bc0a6f9c2ec317d62b5ed122f3905ced177..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneRipple.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneRipple = ({ splittedOnly = false, button = false }) => {
-  if (button)
-    return (
-      <ShowDemoCode
-        splittedOnly={splittedOnly}
-        codeCompleteJS={completeCodeJSButton}
-        codeCompleteTS={completeCodeTSButton}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJSButton}
-        codeSplittedTS={splittedCodeTSButton}
-      />
-    );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneRipple;
-
-const splittedCodeJSButton = `<FileInputButton>{"ripple enabled"}</FileInputButton>
-<FileInputButton disableRipple>{"ripple disabled"}</FileInputButton>`;
-const splittedCodeTSButton = splittedCodeJSButton;
-const completeCodeJSButton = `import { FileInputButton } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "40px",
-        flexWrap: "wrap",
-      }}
-    >
-      <FileInputButton>{"ripple enabled"}</FileInputButton>
-      <FileInputButton disableRipple>{"ripple disabled"}</FileInputButton>
-    </div>
-  );
-}`;
-const completeCodeTSButton = completeCodeJSButton;
-
-/////
-const splittedCodeJS = `<Dropzone style={{ width: "300px" }}>{"ripple enabled"}</Dropzone>
-<Dropzone style={{ width: "300px" }} disableRipple>
-  {"ripple disabled"}
-</Dropzone>`;
-
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone } from "@files-ui/react";
-
-const DemoDropzoneRipple = () => {
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <Dropzone style={{ width: "300px" }}>{"ripple enabled"}</Dropzone>
-        <Dropzone style={{ width: "300px" }} disableRipple>
-        {"ripple disabled"}
-        </Dropzone>
-      </div>
-    );
-  };
-  export default DemoDropzoneRipple;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneUploading.jsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneUploading.jsx
deleted file mode 100644
index 5033cfb09ae48ffe3826f13cfdf3a87e26a92f5e..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneUploading.jsx
+++ /dev/null
@@ -1,345 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneUploading = ({
-  splittedOnly = false,
-  button = false,
-}) => {
-  if (button)
-    return (
-      <ShowDemoCode
-        splittedOnly={splittedOnly}
-        codeCompleteJS={completeCodeJSButton}
-        codeCompleteTS={completeCodeTSButton}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJSButton}
-        codeSplittedTS={splittedCodeTSButton}
-      />
-    );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneUploading;
-
-const splittedCodeJSButton = `<FileInputButton
-  onChange={updateFiles}
-  value={files}
-  accept={"image/*"}
-  maxFileSize={28 * 1024 * 1024}
-  maxFiles={2}
-  actionButtons={{
-    position: "bottom",
-    uploadButton: {},
-    abortButton: {},
-  }}
-  uploadConfig={{
-    url: "https://www.myawsomeserver.com/upload",
-    method: "POST",
-    headers: {
-      Authorization:
-        "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-    },
-    cleanOnUpload: true,
-  }}
-  onUploadFinish={handleFinishUpload}
-  fakeUpload
-/>
-{files.map((file) => (
-  <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-))}`;
-const splittedCodeTSButton = `<FileInputButton
-  onChange={updateFiles}
-  value={files}
-  accept={"image/*"}
-  maxFileSize={28 * 1024 * 1024}
-  maxFiles={2}
-  actionButtons={{
-    position: "bottom",
-    uploadButton: {},
-    abortButton: {},
-  }}
-  uploadConfig={{
-    url: "https://www.myawsomeserver.com/upload",
-    method: "POST",
-    headers: {
-      Authorization:
-        "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-    },
-    cleanOnUpload: true,
-  }}
-  onUploadFinish={handleFinishUpload}
-  fakeUpload
-/>
-{files.map((file: ExtFile) => (
-    <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-))}`;
-const completeCodeJSButton = `import { FileInputButton, FileCard } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const handleFinishUpload=(uploadedFiles)=>{
-    console.log("Upload has finished", uploadedFiles);
-  }
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={28 * 1024 * 1024}
-        maxFiles={2}
-        actionButtons={{
-          position: "bottom",
-          uploadButton: {},
-          abortButton: {},
-        }}
-        uploadConfig={{
-          url: "https://www.myawsomeserver.com/upload",
-          method: "POST",
-          headers: {
-            Authorization:
-              "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-          },
-          cleanOnUpload: true,
-        }}
-        onUploadFinish={handleFinishUpload}
-        fakeUpload
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-const completeCodeTSButton = `import { FileInputButton, FileCard, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: number | string | undefined) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const handleFinishUpload=(uploadedFiles:ExtFile[])=>{
-    console.log("Upload has finished", uploadedFiles);
-  }
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={28 * 1024 * 1024}
-        maxFiles={2}
-        actionButtons={{
-          position: "bottom",
-          uploadButton: {},
-          abortButton: {},
-        }}
-        uploadConfig={{
-          url: "https://www.myawsomeserver.com/upload",
-          method: "POST",
-          headers: {
-            Authorization:
-              "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-          },
-          cleanOnUpload: true,
-        }}
-        onUploadFinish={handleFinishUpload}
-        fakeUpload
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file: ExtFile) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info preview/>
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-
-/////
-
-const splittedCodeJS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    accept={"image/*"}
-    maxFileSize={28 * 1024*1024}
-    maxFiles={2}
-    actionButtons={{ position: "bottom", uploadButton: {}, abortButton: {} }}
-    uploadConfig={{
-        url: "https://www.myawsomeserver.com/upload",
-        method: "POST",
-        headers: {
-            Authorization:
-            "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-        },
-        cleanOnUpload: true,
-    }}
-    onUploadFinish={handleFinishUpload}
-    fakeUpload
->
-  {files.map((file) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info preview/>
-    ))}
-</Dropzone>`;
-const splittedCodeTS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    accept={"image/*"}
-    maxFileSize={28 * 1024*1024}
-    maxFiles={2}
-    actionButtons={{ position: "bottom", uploadButton: {}, abortButton: {} }}
-    uploadConfig={{
-        url: "https://www.myawsomeserver.com/upload",
-        method: "POST",
-        headers: {
-            Authorization:
-            "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-        },
-        cleanOnUpload: true,
-    }}
-    onUploadFinish={handleFinishUpload}
-    fakeUpload
->
-  {files.map((file: ExtFile) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info preview/>
-    ))}
-</Dropzone>`;
-const completeCodeJS = `import { Dropzone,FileMosaic } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={28 * 1024*1024}
-        maxFiles={2}
-        actionButtons={{ position: "bottom", uploadButton: {}, abortButton: {} }}
-        uploadConfig={{
-            url: "https://www.myawsomeserver.com/upload",
-            method: "POST",
-            headers: {
-                Authorization:
-                "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-            },
-            cleanOnUpload: true,
-        }}
-        fakeUpload
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info preview/>
-        ))}
-    </Dropzone>
-  );
-}`;
-
-const completeCodeTS = `import { Dropzone, FileMosaic, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={28 * 1024*1024}
-        maxFiles={2}
-        actionButtons={{ position: "bottom", uploadButton: {}, abortButton: {} }}
-        uploadConfig={{
-            url: "https://www.myawsomeserver.com/upload",
-            method: "POST",
-            headers: {
-                Authorization:
-                "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-            },
-            cleanOnUpload: true,
-        }}
-        fakeUpload
-    >
-      {files.map((file:ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info preview/>
-        ))}
-    </Dropzone>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneValidation.jsx b/src/components/demo-components/dropzone-demo/CodeDemoDropzoneValidation.jsx
deleted file mode 100644
index 5b372d464080d5cc2c3078f87cf2309a2ccc16e6..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDemoDropzoneValidation.jsx
+++ /dev/null
@@ -1,236 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneValidation = ({ splittedOnly = false, button=false }) => {
-  if(button)
-  return  (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJSButton}
-      codeCompleteTS={completeCodeTSButton}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJSButton}
-      codeSplittedTS={splittedCodeTSButton}
-    />
-  );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneValidation;
-const splittedCodeJSButton = `<FileInputButton
-  onChange={updateFiles}
-  value={files}
-  accept={"image/*"}
-  maxFileSize={28 * 1024}
-  maxFiles={2}
-  actionButtons={{ position: "bottom", cleanButton: {} }}
-/>
-{files.map((file) => (
-  <FileCard key={file.id} {...file} onDelete={removeFile} info />
-))}`;
-const splittedCodeTSButton = `<FileInputButton
-  onChange={updateFiles}
-  value={files}
-  accept={"image/*"}
-  maxFileSize={28 * 1024}
-  maxFiles={2}
-  actionButtons={{ position: "bottom", cleanButton: {} }}
-/>
-{files.map((file: ExtFile) => (
-  <FileCard key={file.id} {...file} onDelete={removeFile} info />
-))}`;
-const completeCodeJSButton =`import { FileInputButton, FileCard } from "@files-ui/react";
-import * as React from "react";
-
-export default function DemoFileInputButtonValidation() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={28 * 1024}
-        maxFiles={2}
-        actionButtons={{ position: "bottom", cleanButton: {} }}
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info />
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-const completeCodeTSButton = `import { FileInputButton, FileCard, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-export default function BasicDemoFileInputButton() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: number | string | undefined) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "space-evenly",
-        gap: "10px",
-        flexWrap: "wrap",
-        width: "100%",
-      }}
-    >
-      <FileInputButton
-        onChange={updateFiles}
-        value={files}
-        accept={"image/*"}
-        maxFileSize={28 * 1024}
-        maxFiles={2}
-        actionButtons={{ position: "bottom", cleanButton: {} }}
-      />
-      {files.length > 0 && (
-        <div
-          style={{
-            display: "flex",
-            justifyContent:"center",
-            flexWrap:"wrap",
-            gap:"5px",
-            minWidth:"50%"
-          }}
-        >
-          {files.map((file: ExtFile) => (
-            <FileCard key={file.id} {...file} onDelete={removeFile} info />
-          ))}
-        </div>
-      )}
-    </div>
-  );
-}`;
-
-/////
-const splittedCodeJS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    accept="image/*"
-    maxFileSize={28 * 1024}
-    maxFiles={2}
-    //cleanFiles
-    actionButtons={{ position: "bottom", cleanButton: {} }}
->
-  {files.map((file) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info/>
-    ))}
-</Dropzone>`;
-const splittedCodeTS = `<Dropzone
-    onChange={updateFiles}
-    value={files}
-    accept="image/*"
-    maxFileSize={28 * 1024}
-    maxFiles={2}
-    //cleanFiles
-    actionButtons={{ position: "bottom", cleanButton: {} }}
->
-  {files.map((file: ExtFile) => (
-      <FileMosaic key={file.id} {...file} onDelete={removeFile} info={true}/>
-    ))}
-</Dropzone>`;
-const completeCodeJS = `import { Dropzone, FileMosaic } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        accept="image/*"
-        maxFileSize={28 * 1024}
-        maxFiles={2}
-        //cleanFiles
-        actionButtons={{ position: "bottom", cleanButton: {} }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-}`;
-
-const completeCodeTS = `import { Dropzone, FileMosaic, ExtFile } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  return (
-    <Dropzone
-        onChange={updateFiles}
-        value={files}
-        accept="image/*"
-        maxFileSize={28 * 1024}
-        maxFiles={2}
-        //cleanFiles
-        actionButtons={{ position: "bottom", cleanButton: {} }}
-    >
-      {files.map((file:ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info={true} />
-        ))}
-    </Dropzone>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/CodeDropzoneDemoLabel.tsx b/src/components/demo-components/dropzone-demo/CodeDropzoneDemoLabel.tsx
deleted file mode 100644
index 41c9dc54d71c68a736e6ba1db4ac73c62c06be9d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDropzoneDemoLabel.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneLabel = ({ splittedOnly = false, button = false }) => {
-  if (button)
-    return (
-      <ShowDemoCode
-        splittedOnly={splittedOnly}
-        codeCompleteJS={completeCodeJSButton}
-        codeCompleteTS={completeCodeTSButton}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJSButton}
-        codeSplittedTS={splittedCodeTSButton}
-      />
-    );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneLabel;
-
-const splittedCodeJSButton = `<FileInputButton/>
-<FileInputButton>{"Label as children"}</FileInputButton>
-<FileInputButton label={"Files ui ❤️"}/>`;
-const splittedCodeTSButton = splittedCodeJSButton;
-const completeCodeJSButton = `import { FileInputButton } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "40px",
-        flexWrap: "wrap",
-      }}
-    >
-      <FileInputButton/>
-      <FileInputButton>{"Label as children"}</FileInputButton>
-      <FileInputButton label={"Files ui ❤️"}/>
-    </div>
-  );
-}`;
-const completeCodeTSButton = completeCodeJSButton;
-
-/////
-
-const splittedCodeJS = `<Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-<Dropzone
-  style={{ width: "300px" }}
-  label={"Files ui ❤️"}
->
-  {/**Files */}
-</Dropzone>`;
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone } from "@files-ui/react";
-
-const DemoDropzoneLabel = () => {
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-        <Dropzone
-          style={{ width: "300px" }}
-          label={"Files ui ❤️"}
-        >
-          {/**Files */}
-        </Dropzone>
-      </div>
-    );
-  };
-  export default DemoDropzoneLabel;`;
-
-const completeCodeTS = completeCodeJS;
diff --git a/src/components/demo-components/dropzone-demo/CodeDropzoneDemoStyling.jsx b/src/components/demo-components/dropzone-demo/CodeDropzoneDemoStyling.jsx
deleted file mode 100644
index ddf64a75be3b828efef0fcde3b23cc3043b2fac1..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/CodeDropzoneDemoStyling.jsx
+++ /dev/null
@@ -1,215 +0,0 @@
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-const CodeDemoDropzoneStyling = ({ splittedOnly = false, button }) => {
-  if (button)
-    return (
-      <ShowDemoCode
-        splittedOnly={splittedOnly}
-        codeCompleteJS={completeCodeJSButton}
-        codeCompleteTS={completeCodeTSButton}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJSButton}
-        codeSplittedTS={splittedCodeTSButton}
-      />
-    );
-  return (
-    <ShowDemoCode
-      splittedOnly={splittedOnly}
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoDropzoneStyling;
-
-const splittedCodeJSButton = `<FileInputButton>Default color</FileInputButton>
-<FileInputButton color="#6200EE">color="#6200EE"</FileInputButton>
-
-<FileInputButton textColor="teal" color="aliceblue">
-  textColor="teal"
-</FileInputButton>
-
-<FileInputButton>{"Contained"}</FileInputButton>
-<FileInputButton variant="outlined">outlined</FileInputButton>
-<FileInputButton variant="text">{"Text"}</FileInputButton>
-
-<FileInputButton textTransform="uppercase">
-  {"Text transform uppercase"}
-</FileInputButton>
-<FileInputButton textTransform="capitalize">
-  {"Text transform capitalize"}
-</FileInputButton>
-<FileInputButton textTransform="lowercase">
-  {"Text transform LOWERCASE"}
-</FileInputButton>
-<FileInputButton textTransform="none">
-  {"Text transform unset"}
-</FileInputButton>`;
-const splittedCodeTSButton = splittedCodeJSButton;
-const completeCodeJSButton = `import { FileInputButton } from "@files-ui/react";
-import * as React from "react";
-
-export default function App() {
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "center",
-        flexDirection: "column",
-        gap: "20px",
-      }}
-    >
-      <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-        <FileInputButton>Default color</FileInputButton>
-        <FileInputButton color="#6200EE">color="#6200EE"</FileInputButton>
-      </div>
-      <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-        <FileInputButton textColor="teal" color="aliceblue">
-          textColor="teal"
-        </FileInputButton>
-      </div>
-      <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-        <FileInputButton>{"Contained"}</FileInputButton>
-        <FileInputButton variant="outlined">outlined</FileInputButton>
-        <FileInputButton variant="text">{"Text"}</FileInputButton>
-      </div>
-
-      <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-        <FileInputButton textTransform="uppercase">
-          {"Text transform uppercase"}
-        </FileInputButton>
-        <FileInputButton textTransform="capitalize">
-          {"Text transform capitalize"}
-        </FileInputButton>
-        <FileInputButton textTransform="lowercase">
-          {"Text transform LOWERCASE"}
-        </FileInputButton>
-        <FileInputButton textTransform="none">
-          {"Text transform unset"}
-        </FileInputButton>
-      </div>
-    </div>
-  );
-}`;
-const completeCodeTSButton = completeCodeJSButton;
-
-/////
-
-const splittedCodeJS = `<Dropzone color="#6200EE">{/** files */}</Dropzone>
-<Dropzone
-    minHeight="120px"
-    header={false}
-    footer={false}
->
-  {/** files */}
-</Dropzone>
-<Dropzone
-    background="radial-gradient(circle at 18.7% 37.8%, rgb(250, 250, 250) 0%, rgb(225, 234, 238) 90%);"
->
-  {/** files */}
-</Dropzone>`;
-const splittedCodeTS = `<Dropzone color="#6200EE">{/** files */}</Dropzone>
-<Dropzone
-    minHeight="120px"
-    header={false}
-    footer={false}
->
-  {/** files */}
-</Dropzone>
-<Dropzone
-    background="radial-gradient(circle at 18.7% 37.8%, rgb(250, 250, 250) 0%, rgb(225, 234, 238) 90%);"
->
-  {/** files */}
-</Dropzone>`;
-const completeCodeJS = `import * as React from "react";
-import { Dropzone } from "@files-ui/react";
-
-export default function App() {
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "20px",
-        flexWrap: "wrap",
-        alignItems:"flex-start"
-      }}
-    >
-        <Dropzone
-            style={{ width: "300px" }}
-            onChange={updateFiles}
-            value={files}
-            color="#6200EE"
-        >
-          {/** Files*/}
-        </Dropzone>
-        <Dropzone
-            style={{ width: "300px" }}
-            minHeight="120px"
-            header={false}
-            footer={false}
-        >
-          {/** Files*/}
-        </Dropzone>
-        <Dropzone
-          style={{ width: "300px" }}
-          background="radial-gradient(circle at 18.7% 37.8%, rgb(250, 250, 250) 0%, rgb(225, 234, 238) 90%);"
-        >
-          {/** Files*/}
-        </Dropzone>
-    </div>
-  );
-};`;
-
-const completeCodeTS = `import * as React from "react";
-import { Dropzone, FileMosaic, ExtFile } from "@files-ui/react";
-
-export default function App() {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: string | number | undefined) => {
-    setFiles(files.filter((x: ExtFile) => x.id !== id));
-  };
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "20px",
-        flexWrap: "wrap",
-        alignItems:"flex-start"
-      }}
-    >
-        <Dropzone
-          style={{ width: "300px" }}
-          color="#6200EE"
-        >
-          {/** Files*/}
-        </Dropzone>
-        <Dropzone
-          style={{ width: "300px" }}
-          minHeight="120px"
-          header={false}
-          footer={false}
-        >
-          {/** Files*/}
-        </Dropzone>
-        <Dropzone
-          style={{ width: "300px" }}
-          onChange={updateFiles}
-          value={files}
-          background="radial-gradient(circle at 18.7% 37.8%, rgb(250, 250, 250) 0%, rgb(225, 234, 238) 90%);"
-        >
-          {/** Files*/}
-        </Dropzone>
-    </div>
-  );
-}`;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneActionButtons.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneActionButtons.jsx
deleted file mode 100644
index f59e7e79dbc5ba38c4759f3622ee7fd123674635..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneActionButtons.jsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileCard, FileInputButton, FileMosaic } from "../../../files-ui";
-
-const DemoActionButtons = ({ button }) => {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-
-  if (button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          alignItems: "center",
-          justifyContent: "space-evenly",
-          gap: "10px",
-          flexWrap: "wrap",
-          width: "100%",
-        }}
-      >
-        <FileInputButton
-          onChange={updateFiles}
-          value={files}
-          autoClean
-          uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-          fakeUpload
-          actionButtons={{
-            position: "after",
-            uploadButton: { style: { textTransform: "uppercase" } },
-            abortButton: {},
-            cleanButton: {},
-            deleteButton: {},
-          }}
-        />
-        {files.length > 0 && (
-          <div
-            style={{
-              display: "flex",
-              justifyContent: "center",
-              flexWrap: "wrap",
-              gap: "5px",
-              minWidth: "50%",
-            }}
-          >
-            {files.map((file) => (
-              <FileCard
-                key={file.id}
-                {...file}
-                onDelete={removeFile}
-                info
-                preview
-              />
-            ))}
-          </div>
-        )}
-      </div>
-    );
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      autoClean
-      uploadConfig={{ url: "https://www.myawsomeserver.com/upload" }}
-      fakeUpload
-      actionButtons={{
-        position: "after",
-        uploadButton: { style: { textTransform: "uppercase" } },
-        abortButton: {},
-        cleanButton: {},
-        deleteButton: {},
-      }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};
-export default DemoActionButtons;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneBehaviour.tsx b/src/components/demo-components/dropzone-demo/DemoDropzoneBehaviour.tsx
deleted file mode 100644
index c260d4259d653b92e888ea1cadf641b0d8d27448..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneBehaviour.tsx
+++ /dev/null
@@ -1,123 +0,0 @@
-import * as React from "react";
-import {
-  Dropzone,
-  ExtFile,
-  FileCard,
-  FileCardProps,
-  FileInputButton,
-  FileMosaic,
-  //FileMosaicProps,
-} from "../../../files-ui";
-
-const mainContainerStyle: React.CSSProperties = {
-  display: "flex",
-  justifyContent: "space-evenly",
-  gap: "40px",
-  flexWrap: "wrap",
-  width: "100%",
-};
-const itemContainerStyle: React.CSSProperties = {
-  display: "flex",
-  flexDirection: "column",
-  minWidth: "40%",
-  gap: "5px",
-  alignItems: "center",
-};
-
-const DemoDropzoneBehaviour = ({ button = false }) => {
-  const [filesAdd, setFilesAdd] = React.useState<ExtFile[]>([]);
-  const [filesReplace, setFilesReplace] = React.useState<ExtFile[]>([]);
-
-  const updateFilesAdd = (incommingFiles: ExtFile[]) => {
-    setFilesAdd(incommingFiles);
-  };
-  const updateFilesReplace = (incommingFiles: ExtFile[]) => {
-    setFilesReplace(incommingFiles);
-  };
-  const removeFileAdd = (id: FileCardProps["id"]) => {
-    setFilesAdd(filesAdd.filter((x) => x.id !== id));
-  };
-  const removeFileReplace = (id: FileCardProps["id"]) => {
-    setFilesReplace(filesReplace.filter((x) => x.id !== id));
-  };
-  if (button)
-    return (
-      <div style={mainContainerStyle}>
-        <div style={itemContainerStyle}>
-          <FileInputButton
-            onChange={updateFilesAdd}
-            value={filesAdd}
-            label="add"
-          />
-          {filesAdd.map((file) => (
-            <FileCard
-              key={file.id}
-              {...file}
-              onDelete={removeFileAdd}
-              info
-              preview
-            />
-          ))}
-        </div>
-        <div style={itemContainerStyle}>
-          <FileInputButton
-            onChange={updateFilesReplace}
-            value={filesReplace}
-            variant="outlined"
-            label="replace"
-            behaviour="replace"
-          />
-          {filesReplace.map((file) => (
-            <FileCard
-              key={file.id}
-              {...file}
-              onDelete={removeFileReplace}
-              info
-              preview
-            />
-          ))}
-        </div>
-      </div>
-    );
-  return (
-    <div style={mainContainerStyle}>
-      <Dropzone
-        style={{ width: "min(100% , 420px)" }}
-        onChange={updateFilesAdd}
-        value={filesAdd}
-        label="Dropzone with behaviour=add"
-        behaviour={"add"}
-      >
-        {filesAdd.length > 0 &&
-          filesAdd.map((file) => (
-            <FileMosaic
-              key={file.id}
-              {...file}
-              onDelete={removeFileAdd}
-              info
-              preview
-            />
-          ))}
-      </Dropzone>
-      <Dropzone
-        style={{ width: "min(100% , 420px)" }}
-        onChange={updateFilesReplace}
-        value={filesReplace}
-        label="Dropzone with behaviour=replace"
-        behaviour={"replace"}
-      >
-        {filesReplace.length > 0 &&
-          filesReplace.map((file) => (
-            <FileMosaic
-              key={file.id}
-              {...file}
-              onDelete={removeFileReplace}
-              info
-              preview
-            />
-          ))}
-      </Dropzone>
-    </div>
-  );
-};
-export default DemoDropzoneBehaviour;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneClickable.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneClickable.jsx
deleted file mode 100644
index 4037a97d7d8751f753165eddec07b888d6e178cd..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneClickable.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import * as React from "react";
-import { Dropzone } from "../../../files-ui";
-
-const DemoDropzoneClickable = (props) => {
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "40px",
-        flexWrap: "wrap",
-      }}
-    >
-      <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-      <Dropzone style={{ width: "300px" }} clickable={false}>
-        {/**Files */}
-      </Dropzone>
-    </div>
-  );
-};
-export default DemoDropzoneClickable;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneCustomValidation.tsx b/src/components/demo-components/dropzone-demo/DemoDropzoneCustomValidation.tsx
deleted file mode 100644
index f99096f18c79fd4b133c8a4929656f97d1d28bf3..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneCustomValidation.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import * as React from "react";
-import {
-  Dropzone,
-  ExtFile,
-  FileMosaic,
-  FileMosaicProps,
-  ValidateFileResponse,
-  FileInputButton,
-  FileCard,
-} from "../../../files-ui";
-
-//validate files
-// file name must start with the following prefix: "test_file"
-// (e.g. a valid file name could be "test_file_photo.png")
-const myOwnValidation = (file: File): ValidateFileResponse => {
-  let errorList: string[] = [];
-  let validResult: boolean = true;
-  const regExPrefix: RegExp = /\btest_file\w+/;
-  if (!file.name.match(regExPrefix)) {
-    validResult = false;
-    errorList.push('Prefix "test_file" was not present in the file name');
-  }
-  return { valid: validResult, errors: errorList };
-};
-const DemoDropzoneCustomValidation = (props: { button: boolean }) => {
-  const [files, setFiles] = React.useState<ExtFile[]>([]);
-  const updateFiles = (incommingFiles: ExtFile[]) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id: FileMosaicProps["id"]) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  if (props.button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          alignItems: "center",
-          justifyContent: "space-evenly",
-          gap: "10px",
-          flexWrap: "wrap",
-          width: "100%",
-        }}
-      >
-        <FileInputButton
-          onChange={updateFiles}
-          value={files}
-          accept={"image/*"}
-          maxFileSize={280 * 1024}
-          maxFiles={2}
-          //autoClean
-          validator={myOwnValidation}
-        />
-        {files.length > 0 && (
-          <div
-            style={{
-              display: "flex",
-              justifyContent: "center",
-              flexWrap: "wrap",
-              gap: "5px",
-              minWidth: "50%",
-            }}
-          >
-            {files.map((file) => (
-              <FileCard key={file.id} {...file} onDelete={removeFile} info />
-            ))}
-          </div>
-        )}
-      </div>
-    );
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      accept={"image/*"}
-      maxFileSize={28 * 1024}
-      maxFiles={2}
-      cleanFiles
-      validator={myOwnValidation}
-    >
-      {files.map((file: ExtFile) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};
-export default DemoDropzoneCustomValidation;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneDisabled.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneDisabled.jsx
deleted file mode 100644
index 016d95186e6afbbb013a9baedd02d9d6cdcb86d6..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneDisabled.jsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileInputButton } from "../../../files-ui";
-
-const DemoDropzoneDisabled = ({ button }) => {
-  if (button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <FileInputButton>{"input enabled"}</FileInputButton>
-        <FileInputButton disabled>{"input disabled"}</FileInputButton>
-      </div>
-    );
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "40px",
-        flexWrap: "wrap",
-      }}
-    >
-      <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-      <Dropzone style={{ width: "300px" }} disabled>
-        {"Dropzone is disabled"}
-        {/**Files */}
-      </Dropzone>
-    </div>
-  );
-};
-export default DemoDropzoneDisabled;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneDropLayer.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneDropLayer.jsx
deleted file mode 100644
index 3a6edfc3d4defd3b18aff2a0cf5fc8e33731b721..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneDropLayer.jsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import * as React from "react";
-import { Dropzone } from "../../../files-ui";
-
-const DemoDropzoneDropLayer = () => {
-  return (
-    <div style={{
-      display: "flex",
-      justifyContent: "space-evenly",
-      gap: "40px",
-      flexWrap: "wrap",
-    }}>
-      <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-      <Dropzone style={{ width: "300px" }} dropOnLayer={false}>
-        {/**Files */}
-      </Dropzone>
-    </div>
-  );
-};
-export default DemoDropzoneDropLayer;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneFooterConfig.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneFooterConfig.jsx
deleted file mode 100644
index ca5016eef958448597e8e9eb39a9b6df5d6b213f..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneFooterConfig.jsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileMosaic } from "../../../files-ui";
-
-const DemoDropzoneFooterConfig = (props) => {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      footerConfig={{ customMessage: "This is a custom message..." }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};
-export default DemoDropzoneFooterConfig;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneHeaderConfig.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneHeaderConfig.jsx
deleted file mode 100644
index 6d06508e00973de66f56be3a746a84456f1e9500..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneHeaderConfig.jsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileMosaic } from "../../../files-ui";
-
-const DemoDropzoneHeaderConfig = (props) => {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const removeAllFiles = (evt) => {
-    evt.stopPropagation();
-    setFiles([]);
-  };
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      headerConfig={{
-        customHeader: (
-          <div style={{ display: "flex", justifyContent: "flex-end" }}>
-            <button
-              style={{ backgroundColor: "teal", color: "white" }}
-              onClick={removeAllFiles}
-            >
-              delete files
-            </button>
-          </div>
-        ),
-      }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};
-export default DemoDropzoneHeaderConfig;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneLabel.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneLabel.jsx
deleted file mode 100644
index 6679b3f8b85b0d4ec95a0dd7b416dada8b79b8bd..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneLabel.jsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileInputButton } from "../../../files-ui";
-
-const DemoDropzoneLabel = ({ button }) => {
-  if (button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-         <FileInputButton/>
-         <FileInputButton>{"Label as children"}</FileInputButton>
-         <FileInputButton label={"Files ui ❤️"}/>
-      </div>
-    );
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "40px",
-        flexWrap: "wrap",
-      }}
-    >
-      <Dropzone style={{ width: "300px" }}>{/**Files */}</Dropzone>
-      <Dropzone style={{ width: "300px" }} label={"Files ui ❤️"}>
-        {/**Files */}
-      </Dropzone>
-    </div>
-  );
-};
-export default DemoDropzoneLabel;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneRiple.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneRiple.jsx
deleted file mode 100644
index a1fed07846fb87a96dacc3dc19b0fdd4e027c05c..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneRiple.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import * as React from "react";
-
-const DemoDropzoneRiple = props =>{
-    return(
-        <div>
-        DemoDropzoneRiple
-        </div>
-    )
-}
-export default DemoDropzoneRiple;
\ No newline at end of file
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneRipple.tsx b/src/components/demo-components/dropzone-demo/DemoDropzoneRipple.tsx
deleted file mode 100644
index 78cb805c486529d5fc2f2e856e2a74b039f6b3da..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneRipple.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileInputButton } from "../../../files-ui";
-
-const DemoDropzoneRipple = ({ button = false }) => {
-  if (button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          gap: "40px",
-          flexWrap: "wrap",
-        }}
-      >
-        <FileInputButton>{"ripple enabled"}</FileInputButton>
-        <FileInputButton disableRipple>{"ripple disabled"}</FileInputButton>
-      </div>
-    );
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "40px",
-        flexWrap: "wrap",
-      }}
-    >
-      <Dropzone style={{ width: "300px" }}>ripple enabled </Dropzone>
-      <Dropzone style={{ width: "300px" }} disableRipple>
-        ripple disabled
-      </Dropzone>
-    </div>
-  );
-};
-export default DemoDropzoneRipple;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneStyling.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneStyling.jsx
deleted file mode 100644
index d64d8d371c1e5cebb54826deeffccb43ada34f3c..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneStyling.jsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileInputButton } from "../../../files-ui";
-
-const DemoDropzoneStyling = ({ button }) => {
-  if (button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          flexDirection: "column",
-          gap: "20px",
-        }}
-      >
-        <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-          <FileInputButton>Default color</FileInputButton>
-          <FileInputButton color="#6200EE">Color= "#6200EE"</FileInputButton>
-        </div>
-        <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-          <FileInputButton textColor="teal" color="aliceblue">
-            textColor="teal"
-          </FileInputButton>
-        </div>
-        <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-          <FileInputButton>Contained</FileInputButton>
-          <FileInputButton variant="outlined">Outlined</FileInputButton>
-          <FileInputButton variant="text">Text</FileInputButton>
-        </div>
-
-        <div style={{ display: "flex", gap: "10px", flexWrap: "wrap" }}>
-          <FileInputButton textTransform="uppercase">
-            Text transform uppercase
-          </FileInputButton>
-          <FileInputButton textTransform="capitalize">
-            Text transform capitalize
-          </FileInputButton>
-          <FileInputButton textTransform="lowercase">
-            Text transform LOWERCASE
-          </FileInputButton>
-          <FileInputButton textTransform="none">
-            Text transform unset
-          </FileInputButton>
-        </div>
-      </div>
-    );
-  return (
-    <div
-      style={{
-        display: "flex",
-        justifyContent: "space-evenly",
-        gap: "20px",
-        flexWrap: "wrap",
-        alignItems: "flex-start",
-      }}
-    >
-      <Dropzone style={{ width: "300px" }} color="#6200EE">
-        {/**Files */}
-      </Dropzone>
-      <Dropzone
-        style={{ width: "300px" }}
-        minHeight="120px"
-        header={false}
-        footer={false}
-      >
-        {/**Files */}
-      </Dropzone>
-      <Dropzone
-        style={{ width: "300px" }}
-        background="radial-gradient(circle at 18.7% 37.8%, rgb(250, 250, 250) 0%, rgb(225, 234, 238) 90%);"
-      >
-        {/**Files */}
-      </Dropzone>
-    </div>
-  );
-};
-export default DemoDropzoneStyling;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneUploading.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneUploading.jsx
deleted file mode 100644
index 65e6adab23f12ae923ccf736b7aaa0609c977c25..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneUploading.jsx
+++ /dev/null
@@ -1,112 +0,0 @@
-import * as React from "react";
-import {
-  Dropzone,
-  FileCard,
-  FileInputButton,
-  FileMosaic,
-} from "../../../files-ui";
-
-const DemoDropzoneUploading = ({ button }) => {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const handleFinishUpload = (uploadedFiles) => {
-    console.log("Upload has finished", uploadedFiles);
-  };
-  if (button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          alignItems: "center",
-          justifyContent: "space-evenly",
-          gap: "10px",
-          flexWrap: "wrap",
-          width: "100%",
-        }}
-      >
-        <FileInputButton
-          onChange={updateFiles}
-          value={files}
-          accept={"image/*"}
-          maxFileSize={28 * 1024 * 1024}
-          maxFiles={2}
-          actionButtons={{
-            position: "after",
-            uploadButton: {},
-            abortButton: {},
-          }}
-          uploadConfig={{
-            url: "https://www.myawsomeserver.com/upload",
-            method: "POST",
-            headers: {
-              Authorization:
-                "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-            },
-            cleanOnUpload: true,
-          }}
-          onUploadFinish={handleFinishUpload}
-          fakeUpload
-        />
-        {files.length > 0 && (
-          <div
-            style={{
-              display: "flex",
-              justifyContent: "center",
-              flexWrap: "wrap",
-              gap: "5px",
-              minWidth: "50%",
-            }}
-          >
-            {files.map((file) => (
-              <FileCard
-                key={file.id}
-                {...file}
-                onDelete={removeFile}
-                info
-                preview
-              />
-            ))}
-          </div>
-        )}
-      </div>
-    );
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      accept={"image/*"}
-      maxFileSize={28 * 1024 * 1024}
-      maxFiles={2}
-      actionButtons={{ position: "after", uploadButton: {}, abortButton: {} }}
-      uploadConfig={{
-        url: "https://www.myawsomeserver.com/upload",
-        method: "POST",
-        headers: {
-          Authorization:
-            "bearer HTIBI/IBYG/&GU&/GV%&G/&IC%&V/Ibi76bfh8g67gg68g67i6g7G&58768&/(&/(FR&G/&H%&/",
-        },
-        cleanOnUpload: true,
-      }}
-      onUploadFinish={handleFinishUpload}
-      fakeUpload
-    >
-      {files.map((file) => (
-        <FileMosaic
-          key={file.id}
-          {...file}
-          onDelete={removeFile}
-          info
-          preview
-        />
-      ))}
-    </Dropzone>
-  );
-};
-export default DemoDropzoneUploading;
diff --git a/src/components/demo-components/dropzone-demo/DemoDropzoneValidation.jsx b/src/components/demo-components/dropzone-demo/DemoDropzoneValidation.jsx
deleted file mode 100644
index 0590b74f987894f19e45596485bedb1c17e19b5d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/dropzone-demo/DemoDropzoneValidation.jsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import * as React from "react";
-import {
-  Dropzone,
-  FileCard,
-  FileInputButton,
-  FileMosaic,
-} from "../../../files-ui";
-
-const DemoDropzoneValidation = ({ button = false }) => {
-  const [files, setFiles] = React.useState([]);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  if (button)
-    return (
-      <div
-        style={{
-          display: "flex",
-          alignItems: "center",
-          justifyContent: "space-evenly",
-          gap: "10px",
-          flexWrap: "wrap",
-          width: "100%",
-        }}
-      >
-        <FileInputButton
-          onChange={updateFiles}
-          value={files}
-          accept={"image/*"}
-          maxFileSize={28 * 1024}
-          maxFiles={2}
-          actionButtons={{ position: "bottom", cleanButton: {} }}
-        />
-        {files.length > 0 && (
-          <div
-            style={{
-              display: "flex",
-              justifyContent:"center",
-              flexWrap:"wrap",
-              gap:"5px",
-              minWidth:"50%"
-            }}
-          >
-            {files.map((file) => (
-              <FileCard key={file.id} {...file} onDelete={removeFile} info />
-            ))}
-          </div>
-        )}
-      </div>
-    );
-  return (
-    <Dropzone
-      onChange={updateFiles}
-      value={files}
-      accept={"image/*"}
-      maxFileSize={28 * 1024}
-      maxFiles={2}
-      //cleanFiles
-      actionButtons={{ position: "bottom", cleanButton: {} }}
-    >
-      {files.map((file) => (
-          <FileMosaic key={file.id} {...file} onDelete={removeFile} info />
-        ))}
-    </Dropzone>
-  );
-};
-export default DemoDropzoneValidation;
diff --git a/src/components/demo-components/file-card-demo/CodeJSFileCardBasic.jsx b/src/components/demo-components/file-card-demo/CodeJSFileCardBasic.jsx
deleted file mode 100644
index 80b8e737ac5dd1876cd0724b25433dcd6d42f975..0000000000000000000000000000000000000000
--- a/src/components/demo-components/file-card-demo/CodeJSFileCardBasic.jsx
+++ /dev/null
@@ -1,117 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileCardBasic = ({ card }) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS(card)}
-      codeSplittedTS={splittedCodeTS(card)}
-    />
-  );
-};
-export default CodeJSFileCardBasic;
-
-const splittedCodeJS = (card) => `<>
-  {value ? (
-    <${!card ? "FileMosaic" : "FileCard"} {...value} onDelete={removeFile} />
-  ) : (
-    <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-  )}
-  <${!card ? "FileMosaic" : "FileCard"} {...sampleFileProps} />
-</>
-
-// file props
-const sampleFileProps = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};`;
-
-const completeCodeJS = (card) => `import * as React from "react";
-import { InputButton, FileCard } from "@files-ui/react";
-
-const sampleFileProps = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-
-export default function App() {
-  const [value, setValue] = React.useState(undefined);
-
-  const updateFiles = (incommingFiles) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {value ? (
-        <${
-          !card ? "FileMosaic" : "FileCard"
-        } {...value} onDelete={removeFile} info/>
-      ) : (
-        <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-      )}
-      <${!card ? "FileMosaic" : "FileCard"} {...sampleFileProps} info/>
-    </div>
-  );
-};`;
-
-const splittedCodeTS = (card) => `<>
-  {value ? (
-    <${!card ? "FileMosaic" : "FileCard"} {...value} onDelete={removeFile} info/>
-  ) : (
-    <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-  )}
-  <${!card ? "FileMosaic" : "FileCard"} {...sampleFileProps} info/>
-</>
-
-// file props
-const sampleFileProps: ExtFile = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};`;
-const completeCodeTS = (card) => `import * as React from "react";
-import { InputButton, FileCard, ExtFile } from "@files-ui/react";
-
-const sampleFileProps:ExtFile = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-
-export default function App() {
-  const [value, setValue] = React.useState<ExtFile | undefined>(undefined);
-
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {value ? (
-        <${
-          !card ? "FileMosaic" : "FileCard"
-        } {...value} onDelete={removeFile} info/>
-      ) : (
-        <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-      )}
-      <${!card ? "FileMosaic" : "FileCard"} {...sampleFileProps} info/>
-    </div>
-  );
-};`;
diff --git a/src/components/demo-components/file-card-demo/DemoFileCardBasic.jsx b/src/components/demo-components/file-card-demo/DemoFileCardBasic.jsx
deleted file mode 100644
index 88b6d771258838b30b09dce2816d365c6f9be4fd..0000000000000000000000000000000000000000
--- a/src/components/demo-components/file-card-demo/DemoFileCardBasic.jsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import * as React from "react";
-import { FileCard, FileInputButton, FileMosaic } from "../../../files-ui";
-
-const sampleFileProps = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-const DemoFileCardBasic = (props) => {
-  const [value, setValue] = React.useState(undefined);
-
-  const updateFile = (incommingFiles) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <>
-      {value ? (
-        <FileCard {...value} onDelete={removeFile} info/>
-      ) : (
-        <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-      )}
-      <FileCard {...sampleFileProps} info/>
-    </>
-  );
-};
-export default DemoFileCardBasic;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileCardActions.tsx b/src/components/demo-components/filemosaic-demo/CodeJSFileCardActions.tsx
deleted file mode 100644
index 48015be11943dd2450d507e89fc8055ae78b6db2..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileCardActions.tsx
+++ /dev/null
@@ -1,170 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileCardActions = (props: { card?: boolean }) => {
-  const { card } = props;
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS(card)}
-      codeSplittedTS={splittedCodeTS(card)}
-    />
-  );
-};
-export default CodeJSFileCardActions;
-
-const splittedCodeJS = (card?: boolean) => ``;
-const splittedCodeTS = (card?: boolean) => ``;
-
-const completeCodeJS = (card?: boolean) => `import * as React from "react";
-import {
-  ${card?"FileCard":"FileMosaic"},
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-} from "@files-ui/react";
-
-const sampleFile = {
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "actions sampleFile.jsx",
-  valid: true,
-};
-const IMG_URL =
-  "https://w0.peakpx.com/wallpaper/635/84/HD-wallpaper-thanos-and-iron-man-avengers-clouds-cloudy-face-to-face-her-iron-man-marvel-thanos-war.jpg";
-const VIDEO_URL =
-  "https://srv23.y2mate.is/download?file=cd448fa7c7fe6c301970e890794fb682137140";
-
-const Demo${card?"FileCard":"FileMosaic"}Actions = ({ card }) => {
-  const [imgSrc, setImgSrc] = React.useState(undefined);
-  const [videoSrc, setVideoSrc] = React.useState(undefined);
-  const handleDelete = (id) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  const handleSee = (imageSource) => {
-    console.log("watch image:", imageSource);
-    setImgSrc(imageSource);
-  };
-  const handleWatch = (videoSource) => {
-    console.log("watch video:", videoSource);
-    setVideoSrc(videoSource);
-  };
-  const handleDownload = (fileId, downloadUrl) => {
-    console.log("download file id", fileId);
-    console.log("download url", downloadUrl);
-  };
-  return (
-    <>
-      <${card?"FileCard":"FileMosaic"} id={0} {...sampleFile} onDelete={handleDelete} />
-      <${card?"FileCard":"FileMosaic"} id={1} {...sampleFile} info />
-      <${card?"FileCard":"FileMosaic"} id={2} {...sampleFile} onSee={handleSee} imageUrl={IMG_URL} />
-      <${card?"FileCard":"FileMosaic"}
-        id={3}
-        {...sampleFile}
-        onWatch={handleWatch}
-        videoUrl={VIDEO_URL}
-      />
-      <${card?"FileCard":"FileMosaic"} id={4} {...sampleFile} downloadUrl={IMG_URL} />
-      <${card?"FileCard":"FileMosaic"}
-        id={5}
-        {...sampleFile}
-        onDownload={handleDownload}
-        downloadUrl={VIDEO_URL}
-      />
-      <FullScreen
-        open={imgSrc !== undefined}
-        onClose={() => setImgSrc(undefined)}
-      >
-        <ImagePreview src={imgSrc} />
-      </FullScreen>
-      <FullScreen
-        open={videoSrc !== undefined}
-        onClose={() => setVideoSrc(undefined)}
-      >
-        <VideoPreview src={videoSrc} autoPlay controls />
-      </FullScreen>
-    </>
-  );
-};
-export default Demo${card?"FileCard":"FileMosaic"}Actions;`;
-
-const completeCodeTS = (card?: boolean) => `import * as React from "react";
-import {
-  ${card?"FileCard":"FileMosaic"},
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-  ExtFile,
-} from "@files-ui/react";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "actions sampleFile.jsx",
-  valid: true,
-};
-const IMG_URL =
-  "https://w0.peakpx.com/wallpaper/635/84/HD-wallpaper-thanos-and-iron-man-avengers-clouds-cloudy-face-to-face-her-iron-man-marvel-thanos-war.jpg";
-const VIDEO_URL =
-  "https://srv23.y2mate.is/download?file=cd448fa7c7fe6c301970e890794fb682137140";
-
-const Demo${card?"FileCard":"FileMosaic"}Actions = (props: { card?: boolean }) => {
-  const [imgSrc, setImgSrc] = React.useState<string | undefined>(undefined);
-  const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-  const handleDelete = (id: string | number | undefined) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  const handleSee = (imageSource: string | undefined) => {
-    console.log("watch image:", imageSource);
-    setImgSrc(imageSource);
-  };
-  const handleWatch = (videoSource: File | string | undefined) => {
-    console.log("watch video:", videoSource);
-    setVideoSrc(videoSource);
-  };
-  const handleDownload = (
-    fileId: string | number | undefined,
-    downloadUrl?: string | undefined
-  ) => {
-    console.log("download file id", fileId);
-    console.log("download url", downloadUrl);
-  };
-  return (
-    <>
-      <${card?"FileCard":"FileMosaic"} id={0} {...sampleFile} onDelete={handleDelete} />
-      <${card?"FileCard":"FileMosaic"} id={1} {...sampleFile} info />
-      <${card?"FileCard":"FileMosaic"} id={2} {...sampleFile} onSee={handleSee} imageUrl={IMG_URL} />
-      <${card?"FileCard":"FileMosaic"}
-        id={3}
-        {...sampleFile}
-        onWatch={handleWatch}
-        videoUrl={VIDEO_URL}
-      />
-      <${card?"FileCard":"FileMosaic"} id={4} {...sampleFile} downloadUrl={IMG_URL} />
-      <${card?"FileCard":"FileMosaic"}
-        id={5}
-        {...sampleFile}
-        onDownload={handleDownload}
-        downloadUrl={VIDEO_URL}
-      />
-      <FullScreen
-        open={imgSrc !== undefined}
-        onClose={() => setImgSrc(undefined)}
-      >
-        <ImagePreview src={imgSrc} />
-      </FullScreen>
-      <FullScreen
-        open={videoSrc !== undefined}
-        onClose={() => setVideoSrc(undefined)}
-      >
-        <VideoPreview src={videoSrc} autoPlay controls />
-      </FullScreen>
-    </>
-  );
-};
-export default Demo${card?"FileCard":"FileMosaic"}Actions;`;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicBasic.jsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicBasic.jsx
deleted file mode 100644
index 9a62cdfb5e94e3e482c7f766aee2dd499bb585a4..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicBasic.jsx
+++ /dev/null
@@ -1,113 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileMosaicBasic = (props) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeJSFileMosaicBasic;
-
-const splittedCodeJS = `<>
-  {value ? (
-    <FileMosaic {...value} onDelete={removeFile} />
-  ) : (
-    <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-  )}
-  <FileMosaic {...sampleFileProps} />
-</>
-
-// file props
-const sampleFileProps = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};`;
-
-const completeCodeJS = `import * as React from "react";
-import { InputButton, FileMosaic } from "@files-ui/react";
-
-const sampleFileProps = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-
-export default function App() {
-  const [value, setValue] = React.useState(undefined);
-
-  const updateFiles = (incommingFiles) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {value ? (
-        <FileMosaic {...value} onDelete={removeFile} info/>
-      ) : (
-        <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-      )}
-      <FileMosaic {...sampleFileProps} info/>
-    </div>
-  );
-};`;
-
-const splittedCodeTS = `<>
-  {value ? (
-    <FileMosaic {...value} onDelete={removeFile} info/>
-  ) : (
-    <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-  )}
-  <FileMosaic {...sampleFileProps} info/>
-</>
-
-// file props
-const sampleFileProps: ExtFile = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};`;
-const completeCodeTS = `import * as React from "react";
-import { InputButton, FileMosaic, ExtFile } from "@files-ui/react";
-
-const sampleFileProps:ExtFile = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-
-export default function App() {
-  const [value, setValue] = React.useState<ExtFile | undefined>(undefined);
-
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {value ? (
-        <FileMosaic {...value} onDelete={removeFile} info/>
-      ) : (
-        <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-      )}
-      <FileMosaic {...sampleFileProps} info/>
-    </div>
-  );
-};`;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode.tsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode.tsx
deleted file mode 100644
index 44516d3b9a7e95421558a400f97c9e34455b273e..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode.tsx
+++ /dev/null
@@ -1,267 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileMosaicDarkMode = (props: { card?: boolean }) => {
-  const { card } = props;
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS(card)}
-      codeSplittedTS={splittedCodeTS(card)}
-    />
-  );
-};
-export default CodeJSFileMosaicDarkMode;
-
-const splittedCodeJS = (card?: boolean) =>
-  card
-    ? ""
-    : `<>
-  <${
-    card ? "FileCard" : "FileMosaic"
-  } {...sampleFileProps} info onDelete={removeFile} />
-  <${
-    card ? "FileCard" : "FileMosaic"
-  } {...sampleFileProps} info onDelete={removeFile} darkMode/>
-</>`;
-const splittedCodeTS = (card?: boolean) =>
-  card
-    ? ""
-    : `<>
-  <${
-    card ? "FileCard" : "FileMosaic"
-  } {...sampleFileProps} info onDelete={removeFile} />
-  <${
-    card ? "FileCard" : "FileMosaic"
-  } {...sampleFileProps} info onDelete={removeFile} darkMode/>
-</>`;
-
-const completeCodeJS = (card?: boolean) =>
-  card
-    ? `import { ${card ? "FileCard" : "FileMosaic"} } from "@files-ui/react";
-const sampleFilePropsCard = (elevationNumber) => {
-  return {
-    id: "fileId",
-    size: 28 * 1024 * 1024,
-    type: "text/plain",
-    name: "elevation=" + elevationNumber + ".jsx",
-    valid: true,
-  };
-};
-const Demo${card ? "FileCard" : "FileMosaic"}DarkMode = () => {
-  const removeFile = (id) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  return (
-    <>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          flexDirection: "column",
-          backgroundColor: "white",
-          alignItems: "center",
-          padding: "25px 0",
-          flexGrow: 1,
-          gap: "7px",
-        }}
-      >
-        {[0, 4, 16, 24].map((elevation) => (
-          <FileCard
-            key={elevation}
-            {...sampleFilePropsCard(elevation)}
-            onDelete={removeFile}
-            info
-            elevation={elevation}
-          />
-        ))}
-      </div>
-      <div
-        style={{
-          display: "flex",
-          flexDirection: "column",
-          justifyContent: "center",
-          backgroundColor: "#121212",
-          alignItems: "center",
-          padding: "25px 0",
-          flexGrow: 1,
-          gap: "7px",
-        }}
-      >
-        {[0, 4, 16, 24].map((elevation) => (
-          <FileCard
-            key={elevation}
-            {...sampleFilePropsCard(elevation)}
-            onDelete={removeFile}
-            darkMode
-            info
-            elevation={elevation}
-          />
-        ))}
-      </div>
-    </>
-  );
-export default Demo${card ? "FileCard" : "FileMosaic"}DarkMode;`
-    : `import * as React from "react";
-import { ${card ? "FileCard" : "FileMosaic"} } from "@files-ui/react";
-
-const sampleFileProps = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-const Demo${card ? "FileCard" : "FileMosaic"}DarkMode = () => {
-  const removeFile = (id) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  return (
-    <div style={{ display: "flex", flexWrap: "wrap" }}>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          backgroundColor: "white",
-          padding: "25px 0",
-          flexGrow:1
-        }}
-      >
-        <${
-          card ? "FileCard" : "FileMosaic"
-        } {...sampleFileProps} info onDelete={removeFile} />
-      </div>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          backgroundColor: "#121212",
-          padding: "25px 0",
-          flexGrow:1
-        }}
-      >
-        <${
-          card ? "FileCard" : "FileMosaic"
-        } {...sampleFileProps} info darkMode onDelete={removeFile} />
-      </div>
-    </div>
-  );
-};
-export default Demo${card ? "FileCard" : "FileMosaic"}DarkMode;`;
-
-const completeCodeTS = (card?: boolean) =>
-  card
-    ? `import { ${
-        card ? "FileCard" : "FileMosaic"
-      }, ExtFile, FileCardProps } from "@files-ui/react";
-const sampleFilePropsCard = (elevationNumber: number): ExtFile => {
-  return {
-    id: "fileId",
-    size: 28 * 1024 * 1024,
-    type: "text/plain",
-    name: "elevation=" + elevationNumber + ".jsx",
-    valid: true,
-  };
-};
-const Demo${card ? "FileCard" : "FileMosaic"}DarkMode = () => {
-  const removeFile = (id: string | number | undefined) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  return (
-    <>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          flexDirection: "column",
-          backgroundColor: "white",
-          alignItems: "center",
-          padding: "25px 0",
-          flexGrow: 1,
-          gap: "7px",
-        }}
-      >
-        {[0, 4, 16, 24].map((elevation) => (
-          <FileCard
-            key={elevation}
-            {...sampleFilePropsCard(elevation)}
-            onDelete={removeFile}
-            info
-            elevation={elevation as FileCardProps["elevation"]}
-          />
-        ))}
-      </div>
-      <div
-        style={{
-          display: "flex",
-          flexDirection: "column",
-          justifyContent: "center",
-          backgroundColor: "#121212",
-          alignItems: "center",
-          padding: "25px 0",
-          flexGrow: 1,
-          gap: "7px",
-        }}
-      >
-        {[0, 4, 16, 24].map((elevation) => (
-          <FileCard
-            key={elevation}
-            {...sampleFilePropsCard(elevation)}
-            onDelete={removeFile}
-            darkMode
-            info
-            elevation={elevation as FileCardProps["elevation"]}
-          />
-        ))}
-      </div>
-    </>
-  );
-export default Demo${card ? "FileCard" : "FileMosaic"}DarkMode;
-`
-    : `import * as React from "react";
-import { ExtFile, ${card ? "FileCard" : "FileMosaic"} } from "@files-ui/react";
-
-const sampleFileProps: ExtFile = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-const Demo${card ? "FileCard" : "FileMosaic"}DarkMode = () => {
-  const removeFile = (id: string | number | undefined) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  return (
-    <div style={{ display: "flex", flexWrap: "wrap" }}>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          backgroundColor: "white",
-          padding: "25px 0",
-          flexGrow:1
-        }}
-      >
-        <${
-          card ? "FileCard" : "FileMosaic"
-        } {...sampleFileProps} info onDelete={removeFile} />
-      </div>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          backgroundColor: "#121212",
-          padding: "25px 0",
-          flexGrow:1
-        }}
-      >
-        <${
-          card ? "FileCard" : "FileMosaic"
-        } {...sampleFileProps} info darkMode onDelete={removeFile} />
-      </div>
-    </div>
-  );
-};
-export default Demo${card ? "FileCard" : "FileMosaic"}DarkMode;`;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview.tsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview.tsx
deleted file mode 100644
index 4ea1437c8f46e20d6d8e516a70665cb19d79e857..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview.tsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileMosaicImagePreview = (props:{card:boolean}) => {
-  const {card}=props;
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS(card)}
-      codeSplittedTS={splittedCodeTS(card)}
-    />
-  );
-};
-export default CodeJSFileMosaicImagePreview;
-
-const splittedCodeJS = (card:boolean)=>`<>
-  {value ? (
-    <${card?"FileCard":"FileMosaic"} {...value} onDelete={removeFile} info preview/>
-  ) : (
-    <FileInputButton onChange={updateFile} accept="image/*"/>
-  )}
-  <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info/>
-</>
-
-// file props
-const sampleFileProps = {
-    id: "fileId",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "Thor arrives wakanda.jpg",
-    imageUrl:"https://cdn.wallpapersafari.com/0/95/1zms6H.jpg"
-};`;
-
-const completeCodeJS = (card:boolean)=>`import * as React from "react";
-import { InputButton, ${card?"FileCard":"FileMosaic"} } from "@files-ui/react";
-
-const sampleFileProps = {
-    id: "fileId",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "Thor arrives wakanda.jpg",
-    imageUrl:"https://cdn.wallpapersafari.com/0/95/1zms6H.jpg"
-};
-
-export default function App() {
-  const [value, setValue] = React.useState(undefined);
-
-  const updateFiles = (incommingFiles) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {value ? (
-        <${card?"FileCard":"FileMosaic"} {...value} onDelete={removeFile} info preview/>
-      ) : (
-        <FileInputButton onChange={updateFile} accept="image/*"/>
-      )}
-      <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info/>
-    </div>
-  );
-};`;
-
-const splittedCodeTS = (card:boolean)=>`<>
-{value ? (
-  <${card?"FileCard":"FileMosaic"} {...value} onDelete={removeFile} info preview/>
-) : (
-  <FileInputButton onChange={updateFile} accept="image/*"/>
-)}
-<${card?"FileCard":"FileMosaic"} {...sampleFileProps} info/>
-</>
-
-// file props
-const sampleFileProps: ExtFile = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor arrives wakanda.jpg",
-  imageUrl:"https://cdn.wallpapersafari.com/0/95/1zms6H.jpg"
-};`;
-const completeCodeTS = (card:boolean)=>`import * as React from "react";
-import { InputButton, ${card?"FileCard":"FileMosaic"}, ExtFile } from "@files-ui/react";
-
-const sampleFileProps: ExtFile = {
-    id: "fileId",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "Thor arrives wakanda.jpg",
-    imageUrl:"https://cdn.wallpapersafari.com/0/95/1zms6H.jpg"
-};
-
-export default function App() {
-  const [value, setValue] = React.useState<ExtFile | undefined>(undefined);
-
-  const updateFiles = (incommingFiles:ExtFile[]) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {value ? (
-        <${card?"FileCard":"FileMosaic"} {...value} onDelete={removeFile} info preview/>
-      ) : (
-        <FileInputButton onChange={updateFile} accept="image/*"/>
-      )}
-      <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info/>
-    </div>
-  );
-};`;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicSmartImgFit.jsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicSmartImgFit.jsx
deleted file mode 100644
index 7a3802a95e928e499a216a70ce25059aa43973a3..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicSmartImgFit.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileMosaicSmartImgFit = (card) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS(card)}
-      codeSplittedTS={splittedCodeTS(card)}
-    />
-  );
-};
-export default CodeJSFileMosaicSmartImgFit;
-
-const splittedCodeJS = (card)=>``;
-const splittedCodeTS = (card)=>``;
-
-const completeCodeTS = (card)=>`import * as React from "react";
-import { ${card?"FileCard":"FileMosaic"}, ExtFile } from "@files-ui/react";
-
-export default function App() {
-  return (
-    <>
-        <${card?"FileCard":"FileMosaic"}  {...landscapeImage} info smartImgFit={false}/>
-        <${card?"FileCard":"FileMosaic"}  {...landscapeImage} info smartImgFit={"orientation"}/>
-        <${card?"FileCard":"FileMosaic"}  {...landscapeImage} info smartImgFit={"center"}/>
-        <${card?"FileCard":"FileMosaic"}  {...portraitImage} info smartImgFit={false}/>
-        <${card?"FileCard":"FileMosaic"}  {...portraitImage} info smartImgFit={"orientation"}/>
-        <${card?"FileCard":"FileMosaic"}  {...portraitImage} info smartImgFit={"center"}/>
-    </>
-  );
-};
-const landscapeImage: ExtFile = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "image/gif",
-  name: "(landscape)Thor arrives wakanda.gif",
-  imageUrl:
-    "https://64.media.tumblr.com/078a5af7a51d438b1c1ee5bd77f1b1e5/tumblr_p81qv7KIPa1rvufhzo3_r1_400.gif",
-};
-const portraitImage: ExtFile = {
-  id: "fileId-2",
-  size: 28 * 1024 * 1024,
-  type: "image/gif",
-  name: "(portrait)Iron man in stark tower.gif",
-  imageUrl: "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};`;
-
-const completeCodeJS = (card)=>`import * as React from "react";
-import { ${card?"FileCard":"FileMosaic"} } from "@files-ui/react";
-
-export default function App() {
-  return (
-    <>
-      <${card?"FileCard":"FileMosaic"}  {...landscapeImage} info smartImgFit={false}/>
-      <${card?"FileCard":"FileMosaic"}  {...landscapeImage} info smartImgFit={"orientation"}/>
-      <${card?"FileCard":"FileMosaic"}  {...landscapeImage} info smartImgFit={"center"}/>
-      <${card?"FileCard":"FileMosaic"}  {...portraitImage} info smartImgFit={false}/>
-      <${card?"FileCard":"FileMosaic"}  {...portraitImage} info smartImgFit={"orientation"}/>
-      <${card?"FileCard":"FileMosaic"}  {...portraitImage} info smartImgFit={"center"}/>
-    </>
-  );
-};
-const landscapeImage = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "image/gif",
-  name: "(landscape)Thor arrives wakanda.gif",
-  imageUrl:
-    "https://64.media.tumblr.com/078a5af7a51d438b1c1ee5bd77f1b1e5/tumblr_p81qv7KIPa1rvufhzo3_r1_400.gif",
-};
-const portraitImage = {
-  id: "fileId-2",
-  size: 28 * 1024 * 1024,
-  type: "image/gif",
-  name: "(portrait)Iron man in stark tower.gif",
-  imageUrl: "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};`;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus.jsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus.jsx
deleted file mode 100644
index 6daac5179658221e44b380226e00a458a90c8b07..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus.jsx
+++ /dev/null
@@ -1,268 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileMosaicUploadStatus = ({card}) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS(card)}
-      codeSplittedTS={splittedCodeTS(card)}
-    />
-  );
-};
-export default CodeJSFileMosaicUploadStatus;
-
-const splittedCodeJS =(card)=> ``;
-
-const splittedCodeTS =(card)=> ``;
-
-const completeCodeJS =(card)=> `import * as React from "react";
-import {
-  ${card?"FileCard":"FileMosaic"},
-  useFakeProgress,
-} from "@files-ui/react";
-
-const Demo${card?"FileCard":"FileMosaic"}UploadStatus = () => {
-  const progress = useFakeProgress();
-
-  const [status1, setStatus1] = React.useState("uploading");
-  const [status2, setStatus2] = React.useState("uploading");
-  const [status3, setStatus3] = React.useState("uploading");
-
-  React.useEffect(() => {
-    //schedule an interval
-    const _myInterval = setInterval(() => {
-      //set the uploadstatus result
-      setStatus1((_status) => setNextUploadState(_status, "aborted"));
-      setStatus2((_status) => setNextUploadState(_status, "error"));
-      setStatus3((_status) => setNextUploadState(_status, "success"));
-    }, 5000);
-
-    //clean
-    return () => {
-      console.log("clear interval", _myInterval);
-      clearInterval(_myInterval);
-    };
-  }, []);
-
-  const handleCancel = (id) => {
-    console.log("Upload canceled in file: " + id);
-  };
-  const handleAbort = (id) => {
-    console.log("Upload aborted in file: " + id);
-  };
-  return (
-    <>
-      <FlexRowContainer>
-        <${card?"FileCard":"FileMosaic"} {...preparingFile} />
-        <${card?"FileCard":"FileMosaic"} {...preparingFile} onCancel={handleCancel} />
-      </FlexRowContainer>
-
-      <FlexRowContainer>
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} />
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} progress={progress} />
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} />
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} progress={progress} />
-      </FlexRowContainer>
-
-      <FlexRowContainer>
-        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[0]} uploadStatus={status1} />
-        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[1]} uploadStatus={status2} />
-        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[2]} uploadStatus={status3} />
-      </FlexRowContainer>
-    </>
-  );
-};
-export default Demo${card?"FileCard":"FileMosaic"}UploadStatus;
-
-const FlexRowContainer = ({ children }) => {
-  return (
-    <div
-      style={{
-        display: "flex",
-        flexWrap: "wrap",
-        justifyContent: "space-evenly",
-        width: "100%",
-      }}
-    >
-      {children}
-    </div>
-  );
-};
-
-const setNextUploadState = (
-  prevState,
-  nextStatus
-) => {
-  if (prevState === "uploading") return nextStatus;
-  else return "uploading";
-};
-
-const preparingFile = {
-  id: "fileId-0",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "preparing file.jsx",
-  uploadStatus: "preparing",
-};
-
-const uploadingFile = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "image/png",
-  name: "uploading file.png",
-  uploadStatus: "uploading",
-};
-
-const uploadResultFiles = [
-  {
-    id: "fileId-2",
-    size: 28 * 1024 * 1024,
-    type: "image/gif",
-    name: "upload aborted file.gif",
-    uploadMessage: "Upload was aborted by the user",
-  },
-  {
-    id: "fileId-3",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "upload with error file.jpg",
-    uploadMessage:
-      "File couldn't be uploaded to Files-ui earthquakes. File was too big.",
-  },
-  {
-    id: "fileId-4",
-    size: 28 * 1024 * 1024,
-    type: "image/png",
-    name: "successfully uploaded file.png",
-    uploadMessage: "File was uploaded correctly to Files-ui earthquakes",
-  },
-];`;
-
-const completeCodeTS =(card)=> `import * as React from "react";
-import {
-  ${card?"FileCard":"FileMosaic"},
-  useFakeProgress,
-  ExtFile,
-  UPLOADSTATUS,
-} from "@files-ui/react";
-
-const Demo${card?"FileCard":"FileMosaic"}UploadStatus = () => {
-  const progress = useFakeProgress();
-
-  const [status1, setStatus1] = React.useState<UPLOADSTATUS>("uploading");
-  const [status2, setStatus2] = React.useState<UPLOADSTATUS>("uploading");
-  const [status3, setStatus3] = React.useState<UPLOADSTATUS>("uploading");
-
-  React.useEffect(() => {
-    //schedule an interval
-    const _myInterval = setInterval(() => {
-      //set the uploadstatus result
-      setStatus1((_status) => setNextUploadState(_status, "aborted"));
-      setStatus2((_status) => setNextUploadState(_status, "error"));
-      setStatus3((_status) => setNextUploadState(_status, "success"));
-    }, 5000);
-
-    //clean
-    return () => {
-      console.log("clear interval", _myInterval);
-      clearInterval(_myInterval as NodeJS.Timer);
-    };
-  }, []);
-
-  const handleCancel = (id: string | number | undefined) => {
-    console.log("Upload canceled in file: " + id);
-  };
-  const handleAbort = (id: string | number | undefined) => {
-    console.log("Upload aborted in file: " + id);
-  };
-  return (
-    <>
-      <FlexRowContainer>
-        <${card?"FileCard":"FileMosaic"} {...preparingFile} />
-        <${card?"FileCard":"FileMosaic"} {...preparingFile} onCancel={handleCancel} />
-      </FlexRowContainer>
-
-      <FlexRowContainer>
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} />
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} progress={progress} />
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} />
-        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} progress={progress} />
-      </FlexRowContainer>
-
-      <FlexRowContainer>
-        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[0]} uploadStatus={status1} />
-        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[1]} uploadStatus={status2} />
-        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[2]} uploadStatus={status3} />
-      </FlexRowContainer>
-    </>
-  );
-};
-export default Demo${card?"FileCard":"FileMosaic"}UploadStatus;
-
-const FlexRowContainer = (props: { children: React.ReactNode }) => {
-  return (
-    <div
-      style={{
-        display: "flex",
-        flexWrap: "wrap",
-        justifyContent: "space-evenly",
-        width: "100%",
-      }}
-    >
-      {props.children}
-    </div>
-  );
-};
-
-const setNextUploadState = (
-  prevState: UPLOADSTATUS,
-  nextStatus: UPLOADSTATUS
-): UPLOADSTATUS => {
-  if (prevState === "uploading") return nextStatus;
-  else return "uploading";
-};
-
-const preparingFile: ExtFile = {
-  id: "fileId-0",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "preparing file.jsx",
-  uploadStatus: "preparing",
-};
-
-const uploadingFile: ExtFile = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "image/png",
-  name: "uploading file.png",
-  uploadStatus: "uploading",
-};
-
-const uploadResultFiles: ExtFile[] = [
-  {
-    id: "fileId-2",
-    size: 28 * 1024 * 1024,
-    type: "image/gif",
-    name: "upload aborted file.gif",
-    uploadMessage: "Upload was aborted by the user",
-  },
-  {
-    id: "fileId-3",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "upload with error file.jpg",
-    uploadMessage:
-      "File couldn't be uploaded to Files-ui earthquakes. File was too big.",
-  },
-  {
-    id: "fileId-4",
-    size: 28 * 1024 * 1024,
-    type: "image/png",
-    name: "successfully uploaded file.png",
-    uploadMessage: "File was uploaded correctly to Files-ui earthquakes",
-  },
-];`;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation.jsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation.jsx
deleted file mode 100644
index 3bd8a473455ac2df4a8e9c3ba6fdf132319df5da..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation.jsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileMosaicValidation = (card) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS(card)}
-      codeSplittedTS={splittedCodeTS(card)}
-    />
-  );
-};
-export default CodeJSFileMosaicValidation;
-
-const splittedCodeJS = (card)=>``;
-const splittedCodeTS = (card)=>``;
-
-const completeCodeJS = (card)=>`import * as React from "react";
-import { ${card?"FileCard":"FileMosaic"} } from "@files-ui/react";
-
-export default function App() {
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {sampleFilesProps.map((extFile) => (
-        <${card?"FileCard":"FileMosaic"} key={extFile.id} valid={extFile.valid} {...extFile} info/>
-      ))}
-    </div>
-  );
-};
-
-const sampleFilesProps = [
-  {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "text/plain",
-    name: "file created from props.jsx",
-  },
-  {
-    id: "fileId-2",
-    size: 28 * 1024 * 1024,
-    type: "image/png",
-    name: "valid file created from props.png",
-    valid: false,
-    errors: ["File is too big", "File type is not allowed"]
-  },
-  {
-    id: "fileId-3",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "non valid file created from props.jpg",
-    valid: true,
-  },
-];`;
-
-const completeCodeTS = (card)=>`import * as React from "react";
-import { ${card?"FileCard":"FileMosaic"}, ExtFile } from "@files-ui/react";
-
-export default function App() {
-  return (
-    <div style={{display:"flex", gap:"10px"}}>
-      {sampleFilesProps.map((extFile: ExtFile) => (
-        <${card?"FileCard":"FileMosaic"} key={extFile.id} valid={extFile.valid} {...extFile} info/>
-      ))}
-    </div>
-  );
-};
-
-const sampleFilesProps: ExtFile[] = [
-  {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "text/plain",
-    name: "file created from props.jsx",
-  },
-  {
-    id: "fileId-2",
-    size: 28 * 1024 * 1024,
-    type: "image/png",
-    name: "valid file created from props.png",
-    valid: false,
-    errors: ["File is too big", "File type is not allowed"]
-  },
-  {
-    id: "fileId-3",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "non valid file created from props.jpg",
-    valid: true,
-  },
-];`;
diff --git a/src/components/demo-components/filemosaic-demo/DemoContainerFileMosaic.jsx b/src/components/demo-components/filemosaic-demo/DemoContainerFileMosaic.jsx
deleted file mode 100644
index 9e63d14e64fcacc2a0cf34ada2709eb2138fe016..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoContainerFileMosaic.jsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Paper, Stack, Box } from "@mui/material";
-import * as React from "react";
-
-const DemoContainerFileMosaic = ({ children, card }) => {
-  return (
-    <Paper
-      variant="outlined"
-      style={{
-        padding: "25px",
-        display: "flex",
-        alignItems: "center",
-        justifyContent: "center",
-      }}
-    >
-      <Box
-        sx={{
-          display: "flex",
-          gap: "20px",
-          flexWrap: "wrap",
-          flexDirection: { xs: card ? "column" : undefined, md: "row" },
-          justifyContent: {
-            xs: "center",
-            md: "space-evenly",
-          },
-          alignItems: { xs: "center" },
-        }}
-      >
-        {children}
-      </Box>
-    </Paper>
-  );
-};
-export default DemoContainerFileMosaic;
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileCradActions.tsx b/src/components/demo-components/filemosaic-demo/DemoFileCradActions.tsx
deleted file mode 100644
index 08e9359493b5e2273ce20df6f51787eeefebe47d..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileCradActions.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-import * as React from "react";
-import {
-  FileCard,
-  FileMosaic,
-  FullScreen,
-  ImagePreview,
-  VideoPreview,
-  ExtFile,
-} from "../../../files-ui";
-
-const sampleFile: ExtFile = {
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "actions sampleFile.jsx",
-  valid: true,
-};
-const IMG_URL =
-  "https://w0.peakpx.com/wallpaper/635/84/HD-wallpaper-thanos-and-iron-man-avengers-clouds-cloudy-face-to-face-her-iron-man-marvel-thanos-war.jpg";
-const VIDEO_URL =
-  "https://srv23.y2mate.is/download?file=cd448fa7c7fe6c301970e890794fb682137140";
-
-const DemoFileCardActions = (props: { card?: boolean }) => {
-  const [imgSrc, setImgSrc] = React.useState<string | undefined>(undefined);
-  const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-  const handleDelete = (id: string | number | undefined) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  const handleSee = (imageSource: string | undefined) => {
-    console.log("watch image:", imageSource);
-    setImgSrc(imageSource);
-  };
-  const handleWatch = (videoSource: File | string | undefined) => {
-    console.log("watch video:", videoSource);
-    setVideoSrc(videoSource);
-  };
-  const handleDownload = (
-    fileId: string | number | undefined,
-    downloadUrl?: string | undefined
-  ) => {
-    console.log("download file id", fileId);
-    console.log("download url", downloadUrl);
-  };
-  if (props.card)
-    return (
-      <>
-        <FileCard id={0} {...sampleFile} onDelete={handleDelete} />
-        <FileCard id={1} {...sampleFile} info />
-        <FileCard id={2} {...sampleFile} onSee={handleSee} imageUrl={IMG_URL} />
-        <FileCard
-          id={3}
-          {...sampleFile}
-          onWatch={handleWatch}
-          videoUrl={VIDEO_URL}
-        />
-        <FileCard id={4} {...sampleFile} downloadUrl={IMG_URL} />
-        <FileCard
-          id={5}
-          {...sampleFile}
-          onDownload={handleDownload}
-          downloadUrl={VIDEO_URL}
-        />
-        <FullScreen
-          open={imgSrc !== undefined}
-          onClose={() => setImgSrc(undefined)}
-        >
-          <ImagePreview src={imgSrc} />
-        </FullScreen>
-        <FullScreen
-          open={videoSrc !== undefined}
-          onClose={() => setVideoSrc(undefined)}
-        >
-          <VideoPreview src={videoSrc} autoPlay controls />
-        </FullScreen>
-      </>
-    );
-  return (
-    <>
-      <FileMosaic id={0} {...sampleFile} onDelete={handleDelete} />
-      <FileMosaic id={1} {...sampleFile} info />
-      <FileMosaic id={2} {...sampleFile} onSee={handleSee} imageUrl={IMG_URL} />
-      <FileMosaic
-        id={3}
-        {...sampleFile}
-        onWatch={handleWatch}
-        videoUrl={VIDEO_URL}
-      />
-      <FileMosaic id={4} {...sampleFile} downloadUrl={IMG_URL} />
-      <FileMosaic
-        id={5}
-        {...sampleFile}
-        onDownload={handleDownload}
-        downloadUrl={VIDEO_URL}
-      />
-      <FullScreen
-        open={imgSrc !== undefined}
-        onClose={() => setImgSrc(undefined)}
-      >
-        <ImagePreview src={imgSrc} />
-      </FullScreen>
-      <FullScreen
-        open={videoSrc !== undefined}
-        onClose={() => setVideoSrc(undefined)}
-      >
-        <VideoPreview src={videoSrc} autoPlay controls />
-      </FullScreen>
-    </>
-  );
-};
-export default DemoFileCardActions;
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicBasic.jsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicBasic.jsx
deleted file mode 100644
index 20bb19ebcde31b6421015b16034230206e515234..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicBasic.jsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import * as React from "react";
-import { FileInputButton, FileMosaic } from "../../../files-ui";
-
-const sampleFileProps = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-};
-const DemoFileMosaicBasic = (props) => {
-  const [value, setValue] = React.useState(undefined);
-
-  const updateFile = (incommingFiles) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  return (
-    <>
-      {value ? (
-        <FileMosaic {...value} onDelete={removeFile} info/>
-      ) : (
-        <FileInputButton value={value ? [value] : []} onChange={updateFile} />
-      )}
-      <FileMosaic {...sampleFileProps} info/>
-    </>
-  );
-};
-export default DemoFileMosaicBasic;
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicDarkMode.tsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicDarkMode.tsx
deleted file mode 100644
index fa2b44deed4d27b2c422e926ad30cea6e90a06ea..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicDarkMode.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import * as React from "react";
-import {
-  ExtFile,
-  FileCard,
-  FileCardProps,
-  FileMosaic,
-} from "../../../files-ui";
-const sampleFileProps = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "sampleFile" + ".jsx",
-  valid: true,
-};
-const sampleFilePropsCard = (elevationNumber: number): ExtFile => {
-  return {
-    id: "fileId",
-    size: 28 * 1024 * 1024,
-    type: "text/plain",
-    name: "elevation=" + elevationNumber + ".jsx",
-    valid: true,
-  };
-};
-
-const DemoFileMosaicDarkMode = (props: { card?: boolean }) => {
-  const removeFile = (id: string | number | undefined) => {
-    console.log("delete button clicked on file: " + id);
-  };
-  if (props.card)
-    return (
-      <>
-        <div
-          style={{
-            display: "flex",
-            justifyContent: "center",
-            flexDirection: "column",
-            backgroundColor: "white",
-            alignItems: "center",
-            padding: "25px 0",
-            flexGrow: 1,
-            gap: "7px",
-          }}
-        >
-          {[0, 4, 16, 24].map((elevation) => (
-            <FileCard
-              key={elevation}
-              {...sampleFilePropsCard(elevation)}
-              onDelete={removeFile}
-              info
-              elevation={elevation as FileCardProps["elevation"]}
-              darkMode={false}
-            />
-          ))}
-        </div>
-        <div
-          style={{
-            display: "flex",
-            flexDirection: "column",
-            justifyContent: "center",
-            backgroundColor: "#121212",
-            alignItems: "center",
-            padding: "25px 0",
-            flexGrow: 1,
-            gap: "7px",
-          }}
-        >
-          {[0, 4, 16, 24].map((elevation) => (
-            <FileCard
-              key={elevation}
-              {...sampleFilePropsCard(elevation)}
-              onDelete={removeFile}
-              darkMode
-              info
-              elevation={elevation as FileCardProps["elevation"]}
-            />
-          ))}
-        </div>
-      </>
-    );
-  return (
-    <>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          minWidth: "50%",
-          backgroundColor: "white",
-          padding: "15px 0",
-          flexGrow: 1,
-        }}
-      >
-        <FileMosaic {...sampleFileProps} info onDelete={removeFile} darkMode={false}/>
-      </div>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "center",
-          minWidth: "50%",
-          backgroundColor: "#121212",
-          padding: "15px 0",
-          flexGrow: 1,
-        }}
-      >
-        <FileMosaic {...sampleFileProps} info darkMode onDelete={removeFile} />
-      </div>
-    </>
-  );
-};
-export default DemoFileMosaicDarkMode;
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicFileIcons.jsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicFileIcons.jsx
deleted file mode 100644
index 2fd69c6be58010031b58058105299afcc1609111..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicFileIcons.jsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import * as React from "react";
-import {
-  FileMosaic,
-  createListOfMultiTypeFile,
-  FileCard,
-} from "../../../files-ui";
-
-/* const sampleFileProps = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "file created from props.jsx",
-}; */
-const DemoFileMosaicFileIcons = ({ card }) => {
-  const [files, setFiles] = React.useState([]);
-
-  const removeFile = (id) => {
-    console.log("delete button clicked on file: " + id);
-  };
-
-  React.useEffect(() => {
-    const validateFiles = createListOfMultiTypeFile(28 * 1024 * 1024).map(
-      (x, index) => {
-        return {
-          id: index,
-          size: 28 * 1024 * 1024,
-          type: x.type,
-          name: x.name,
-        };
-      }
-    );
-    //console.log(validateFiles);
-    setFiles(validateFiles);
-  }, []);
-  return (
-    <>
-      {files.map((f, index) => (
-        <>
-          {" "}
-          {card ? (
-            <FileCard {...f} key={f.id} onDelete={removeFile} info />
-          ) : (
-            <FileMosaic {...f} key={f.id} onDelete={removeFile} info />
-          )}
-        </>
-      ))}
-    </>
-  );
-};
-export default DemoFileMosaicFileIcons;
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicImagePreview.tsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicImagePreview.tsx
deleted file mode 100644
index 0185a47df1a2a3b89a92d07238d817bbe7bc8d6c..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicImagePreview.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import * as React from "react";
-import {
-  FileCard,
-  FileInputButton,
-  FileMosaic,
-  ExtFile,
-} from "../../../files-ui";
-
-interface DemoFileMosaicImagePreviewProps {
-  card?: boolean;
-}
-
-const sampleFileProps: ExtFile = {
-  id: "fileId",
-  size: 28 * 1024 * 1024,
-  type: "image/jpeg",
-  name: "Thor arrives wakanda.jpg",
-  imageUrl: "https://cdn.wallpapersafari.com/0/95/1zms6H.jpg",
-};
-const DemoFileMosaicImagePreview: React.FC<DemoFileMosaicImagePreviewProps> = (
-  props: DemoFileMosaicImagePreviewProps
-) => {
-  const [value, setValue] = React.useState<ExtFile | undefined>(undefined);
-
-  const updateFile = (incommingFiles: ExtFile[]) => {
-    console.log("incomming extFiles", incommingFiles);
-    setValue(incommingFiles[0]);
-  };
-
-  const removeFile = () => {
-    setValue(undefined);
-  };
-  if (props.card)
-    return (
-      <>
-        {value ? (
-          <FileCard {...value} onDelete={removeFile} info preview />
-        ) : (
-          <FileInputButton
-            value={value ? [value] : []}
-            onChange={updateFile}
-            accept="image/*"
-          />
-        )}
-        <FileCard {...sampleFileProps} info />
-      </>
-    );
-  return (
-    <>
-      {value ? (
-        <FileMosaic {...value} onDelete={removeFile} info preview />
-      ) : (
-        <FileInputButton
-          value={value ? [value] : []}
-          onChange={updateFile}
-          accept="image/*"
-        />
-      )}
-      <FileMosaic {...sampleFileProps} info />
-    </>
-  );
-};
-export default DemoFileMosaicImagePreview;
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicImgPreview.tsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicImgPreview.tsx
deleted file mode 100644
index 4391bcc1de7cff373e43274d7f5c09d44b1942e4..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicImgPreview.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as React from "react";
-import { FileMosaic, FileInputButton, ExtFile } from "../../../files-ui";
-interface DemoFileMosaicImgPreviewProps {}
-const sampleFileProps: ExtFile = {
-  id: ":0:",
-  size: 28 * 1024 * 1024,
-  type: "image/png",
-  name: "Thor arrives Wakanda.png",
-  imageUrl:
-    "https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.disneylatino.com%2Fnovedades%2Favengers-la-escena-postcredito-de-thor-que-fue-clave-en-infinity-war&psig=AOvVaw2wijpnp7AqNfVNPszdMkOw&ust=1677372146505000&source=images&cd=vfe&ved=0CBAQjRxqFwoTCIj_pqy4r_0CFQAAAAAdAAAAABAQ",
-};
-const DemoFileMosaicImgPreview: React.FC<DemoFileMosaicImgPreviewProps> = (
-  props: DemoFileMosaicImgPreviewProps
-) => {
-  const [value, setValue] = React.useState<ExtFile | undefined>(undefined);
-
-  const updateFiles = (incommingFiles: ExtFile[]) => {
-    console.log("incomming extFiles", incommingFiles);
-
-    setValue(incommingFiles[0]);
-  };
-  const removeFile = () => {
-    setValue(undefined);
-  };
-
-  return (
-    <>
-      {value ? (
-        <FileMosaic {...value} onDelete={removeFile} alwaysActive info />
-      ) : (
-        <FileInputButton
-          label="Browse File..."
-          onChange={updateFiles}
-          textTransform="uppercase"
-          accept="image/*"
-        />
-      )}
-      <FileMosaic {...sampleFileProps} onDelete={() => {}} alwaysActive info />
-    </>
-  );
-};
-export default DemoFileMosaicImgPreview;
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicSmartImgFit.tsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicSmartImgFit.tsx
deleted file mode 100644
index 26735bf367cc277ebc90b29bb8bfd966bb3b9132..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicSmartImgFit.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import * as React from "react";
-import { ExtFile, FileCard, FileMosaic } from "../../../files-ui";
-
-const DemoFileMosaicSmartImgFit = (props: { card: boolean }) => {
-  if (props.card)
-    return (
-      <>
-        <FileCard {...landscapeImage} info smartImgFit={false} />
-        <FileCard {...landscapeImage} info smartImgFit={"orientation"} />
-        <FileCard {...landscapeImage} info smartImgFit={"center"} />
-        <FileCard {...portraitImage} info smartImgFit={false} />
-        <FileCard {...portraitImage} info smartImgFit={"orientation"} />
-        <FileCard {...portraitImage} info smartImgFit={"center"} />
-      </>
-    );
-  return (
-    <>
-      <FileMosaic {...landscapeImage} info smartImgFit={false} />
-      <FileMosaic {...landscapeImage} info smartImgFit={"orientation"} />
-      <FileMosaic {...landscapeImage} info smartImgFit={"center"} />
-      <FileMosaic {...portraitImage} info smartImgFit={false} />
-      <FileMosaic {...portraitImage} info smartImgFit={"orientation"} />
-      <FileMosaic {...portraitImage} info smartImgFit={"center"} />
-    </>
-  );
-};
-export default DemoFileMosaicSmartImgFit;
-
-const landscapeImage: ExtFile = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "image/gif",
-  name: "(landscape)Thor arrives wakanda.gif",
-  imageUrl:
-    "https://64.media.tumblr.com/078a5af7a51d438b1c1ee5bd77f1b1e5/tumblr_p81qv7KIPa1rvufhzo3_r1_400.gif",
-};
-const portraitImage: ExtFile = {
-  id: "fileId-2",
-  size: 28 * 1024 * 1024,
-  type: "image/gif",
-  name: "(portrait)Iron man in stark tower.gif",
-  imageUrl: "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicUpload.scss b/src/components/demo-components/filemosaic-demo/DemoFileMosaicUpload.scss
deleted file mode 100644
index a90ac865c623c3bae5d76277dff42be8d8bd97b0..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicUpload.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-/* .flex-container-group-group {
-  display: flex;
-  flex-direction: row;
-  gap: 10px;
-} */
-.flex-container-group-card {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: wrap;
-  gap: 10px;
-}
-.flex-container-group-mosaic {
-    display: flex;
-    flex-direction: row;
-    flex-wrap: wrap;
-    gap: 10px;
-    align-items: center;
-    justify-content: center;
-  }
-  
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus.tsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus.tsx
deleted file mode 100644
index 607c78af64534731b4cbc0f784411659f8e0cf70..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus.tsx
+++ /dev/null
@@ -1,164 +0,0 @@
-import * as React from "react";
-import {
-  FileMosaic,
-  useFakeProgress,
-  ExtFile,
-  UPLOADSTATUS,
-  FileCard,
-} from "../../../files-ui";
-import TypeHighlight from "../../typeHighlight/TypeHighlight";
-
-import "./DemoFileMosaicUpload.scss";
-const DemoFileMosaicUploadStatus = (props: { card?: boolean }) => {
-  const progress = useFakeProgress();
-
-  const [status1, setStatus1] = React.useState<UPLOADSTATUS>("uploading");
-  const [status2, setStatus2] = React.useState<UPLOADSTATUS>("uploading");
-  const [status3, setStatus3] = React.useState<UPLOADSTATUS>("uploading");
-
-  React.useEffect(() => {
-    //schedule an interval
-    const _myInterval = setInterval(() => {
-      //set the uploadstatus result
-      setStatus1((_status) => setNextUploadState(_status, "aborted"));
-      setStatus2((_status) => setNextUploadState(_status, "error"));
-      setStatus3((_status) => setNextUploadState(_status, "success"));
-    }, 5000);
-
-    //clean
-    return () => {
-      console.log("clear interval", _myInterval);
-      clearInterval(_myInterval as NodeJS.Timer);
-    };
-  }, []);
-
-  const handleCancel = (id: string | number | undefined) => {
-    console.log("Upload canceled in file: " + id);
-  };
-  const handleAbort = (id: string | number | undefined) => {
-    console.log("Upload aborted in file: " + id);
-  };
-  if (props.card)
-    return (
-      <>
-        <FlexRowContainer card title={"preparing stage"}>
-          <FileCard {...preparingFile}  onClick={()=>alert("haaaaaa")}/>
-          <FileCard {...preparingFile} onCancel={handleCancel}  onClick={()=>alert("haaaaaa")}/>
-        </FlexRowContainer>
-
-        <FlexRowContainer card title={"uploading stage"}>
-          <FileCard {...uploadingFile}  onClick={()=>alert("haaaaaa")}/>
-          <FileCard {...uploadingFile} progress={progress} onClick={()=>alert("haaaaaa")} />
-          <FileCard {...uploadingFile} onAbort={handleAbort}  onClick={()=>alert("haaaaaa")}/>
-          <FileCard
-            {...uploadingFile}
-            onAbort={handleAbort}
-            progress={progress} onClick={()=>alert("haaaaaa")}
-          />
-        </FlexRowContainer>
-
-        <FlexRowContainer card title={"upload result stage"}>
-          <FileCard {...uploadResultFiles[0]} uploadStatus={status1}  onClick={()=>alert("haaaaaa")}/>
-          <FileCard {...uploadResultFiles[1]} uploadStatus={status2}  onClick={()=>alert("haaaaaa")}/>
-          <FileCard {...uploadResultFiles[2]} uploadStatus={status3}  onClick={()=>alert("haaaaaa")}/>
-        </FlexRowContainer>
-      </>
-    );
-  return (
-    <>
-      <FlexRowContainer title={"preparing stage"}>
-        <FileMosaic {...preparingFile}  onClick={()=>alert("haaaaaa")}/>
-        <FileMosaic {...preparingFile} onCancel={handleCancel}  onClick={()=>alert("haaaaaa")}/>
-      </FlexRowContainer>
-
-      <FlexRowContainer title={"uploading stage"}>
-        <FileMosaic {...uploadingFile}  onClick={()=>alert("haaaaaa")}/>
-        <FileMosaic {...uploadingFile} progress={progress}  onClick={()=>alert("haaaaaa")}/>
-        <FileMosaic {...uploadingFile} onAbort={handleAbort}  onClick={()=>alert("haaaaaa")}/>
-        <FileMosaic
-          {...uploadingFile}
-          onAbort={handleAbort}
-          progress={progress}
-           onClick={()=>alert("haaaaaa")}
-        />
-      </FlexRowContainer>
-
-      <FlexRowContainer title={"upload result stage"}>
-        <FileMosaic {...uploadResultFiles[0]} uploadStatus={status1} onClick={()=>alert("haaaaaa")} />
-        <FileMosaic {...uploadResultFiles[1]} uploadStatus={status2} onClick={()=>alert("haaaaaa")} />
-        <FileMosaic {...uploadResultFiles[2]} uploadStatus={status3} onClick={()=>alert("haaaaaa")}/>
-      </FlexRowContainer>
-    </>
-  );
-};
-export default DemoFileMosaicUploadStatus;
-
-const FlexRowContainer = (props: {
-  children: React.ReactNode;
-  card?: boolean;
-  title?: string;
-}) => {
-  const { children, card, title } = props;
-  return (
-    <React.Fragment>
-      {!card && <h4 style={{ margin: 0 }}>{title}</h4>}
-      <div
-        className={
-          card ? "flex-container-group-card" : "flex-container-group-mosaic"
-        }
-      >
-        {card && <h4 style={{ margin: 0 }}>{title}</h4>}
-        {children}
-      </div>
-    </React.Fragment>
-  );
-};
-
-const setNextUploadState = (
-  prevState: UPLOADSTATUS,
-  nextStatus: UPLOADSTATUS
-): UPLOADSTATUS => {
-  if (prevState === "uploading") return nextStatus;
-  else return "uploading";
-};
-
-const preparingFile: ExtFile = {
-  id: "fileId-0",
-  size: 28 * 1024 * 1024,
-  type: "text/plain",
-  name: "preparing file.jsx",
-  uploadStatus: "preparing",
-};
-
-const uploadingFile: ExtFile = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "image/png",
-  name: "uploading file.png",
-  uploadStatus: "uploading",
-};
-
-const uploadResultFiles: ExtFile[] = [
-  {
-    id: "fileId-2",
-    size: 28 * 1024 * 1024,
-    type: "image/gif",
-    name: "upload aborted file.gif",
-    uploadMessage: "Upload was aborted by the user",
-  },
-  {
-    id: "fileId-3",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "upload with error file.jpg",
-    uploadMessage:
-      "File couldn't be uploaded to Files-ui earthquakes. File was too big.",
-  },
-  {
-    id: "fileId-4",
-    size: 28 * 1024 * 1024,
-    type: "image/png",
-    name: "successfully uploaded file.png",
-    uploadMessage: "File was uploaded correctly to Files-ui earthquakes",
-  },
-];
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicValidation.jsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicValidation.jsx
deleted file mode 100644
index 5d0f5aa78b01359204b717a01d6bd23cce319dc4..0000000000000000000000000000000000000000
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicValidation.jsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as React from "react";
-import { FileCard, FileMosaic } from "../../../files-ui";
-
-const DemoFileMosaicValidation = ({ card }) => {
-  if (card)
-    return (
-      <>
-        {sampleFilesProps.map((extFile) => (
-          <FileCard key={extFile.id} {...extFile} info />
-        ))}
-      </>
-    );
-
-  return (
-    <>
-      {sampleFilesProps.map((extFile) => (
-        <FileMosaic key={extFile.id} {...extFile} info />
-      ))}
-    </>
-  );
-};
-export default DemoFileMosaicValidation;
-
-const sampleFilesProps = [
-  {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "text/plain",
-    name: "file created from props.jsx",
-  },
-  {
-    id: "fileId-2",
-    size: 28 * 1024 * 1024,
-    type: "image/png",
-    name: "valid file created from props.png",
-    valid: false,
-    errors: ["File is too big", "File type is not allowed"],
-  },
-  {
-    id: "fileId-3",
-    size: 28 * 1024 * 1024,
-    type: "image/jpeg",
-    name: "non valid file created from props.jpg",
-    valid: true,
-  },
-];
\ No newline at end of file
diff --git a/src/components/demo-components/fullsceen/CodeDemoFullScreenImg.tsx b/src/components/demo-components/fullsceen/CodeDemoFullScreenImg.tsx
deleted file mode 100644
index 190f11db5e904b34aee6c00a06b02b281bef1439..0000000000000000000000000000000000000000
--- a/src/components/demo-components/fullsceen/CodeDemoFullScreenImg.tsx
+++ /dev/null
@@ -1,113 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoFullScrrenImg = () => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoFullScrrenImg;
-
-const splittedCodeJS = `<FileCard id={0} {...imageSample} onSee={handleSee} />
-<FileMosaic id={0} {...imageSample} onSee={handleSee} />
-<FullScreen
-  open={imgSrc !== undefined}
-  onClose={() => setImgSrc(undefined)}
->
-  <ImagePreview src={imgSrc} />
-</FullScreen>
-
-const imageSample = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "image/gif",
-    name: "Iron man in stark tower.gif",
-    imageUrl:
-      "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};`;
-
-const completeCodeJS = `import * as React from "react";
-import { FileCard, FileMosaic, FullScreen, ImagePreview } from "@files-ui/react";
-
-const imageSample = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "image/gif",
-    name: "Iron man in stark tower.gif",
-    imageUrl:
-        "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};
-
-export default function App() {
-    const [imgSrc, setImgSrc] = React.useState(undefined);
-    const handleSee = (imageSource) => {
-      setImgSrc(imageSource);
-    };
-    return (
-      <>
-        <FileCard id={0} {...imageSample} onSee={handleSee} />
-        <FileMosaic id={0} {...imageSample} onSee={handleSee} />
-        <FullScreen
-          open={imgSrc !== undefined}
-          onClose={() => setImgSrc(undefined)}
-        >
-          <ImagePreview src={imgSrc} />
-        </FullScreen>
-      </>
-    );
-};`;
-
-const splittedCodeTS = `<FileCard id={0} {...imageSample} onSee={handleSee} />
-<FileMosaic id={0} {...imageSample} onSee={handleSee} />
-<FullScreen
-  open={imgSrc !== undefined}
-  onClose={() => setImgSrc(undefined)}
->
-  <ImagePreview src={imgSrc} />
-</FullScreen>
-
-const imageSample: ExtFile = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "image/gif",
-    name: "Iron man in stark tower.gif",
-    imageUrl:
-      "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};`;
-const completeCodeTS = `import * as React from "react";
-import { ExtFile, FileCard, FileMosaic, FullScreen, ImagePreview } from "@files-ui/react";
-
-const imageSample: ExtFile = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "image/gif",
-    name: "Iron man in stark tower.gif",
-    imageUrl:
-        "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};
-
-export default function App() {
-    const [imgSrc, setImgSrc] = React.useState<string | undefined>(undefined);
-    const handleSee = (imageSource: string | undefined) => {
-      setImgSrc(imageSource);
-    };
-    return (
-      <>
-        <FileCard id={0} {...imageSample} onSee={handleSee} />
-        <FileMosaic id={0} {...imageSample} onSee={handleSee} />
-        <FullScreen
-          open={imgSrc !== undefined}
-          onClose={() => setImgSrc(undefined)}
-        >
-          <ImagePreview src={imgSrc} />
-        </FullScreen>
-      </>
-    );
-};`;
diff --git a/src/components/demo-components/fullsceen/CodeDemoFullScreenVid.tsx b/src/components/demo-components/fullsceen/CodeDemoFullScreenVid.tsx
deleted file mode 100644
index f355012a7f137469bb9a14bbaa1670133847418c..0000000000000000000000000000000000000000
--- a/src/components/demo-components/fullsceen/CodeDemoFullScreenVid.tsx
+++ /dev/null
@@ -1,112 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoFullScrrenVid = () => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeDemoFullScrrenVid;
-
-const splittedCodeJS = `<FileCard id={0} {...videoSample} onWatch={handleWatch} />
-<FileMosaic id={0} {...videoSample} onWatch={handleWatch} />
-<FullScreen
-  open={videoSrc !== undefined}
-  onClose={() => setVideoSrc(undefined)}
->
-  <VideoPreview src={videoSrc} autoPlay controls />
-</FullScreen>
-
-const videoSample = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "video/mp4",
-    name: "Thor arrives wakanda.mp4",
-    videoUrl: ThorArrivesWakandaEN,
-};`;
-
-const completeCodeJS = `import * as React from "react";
-import { FileCard, FileMosaic, FullScreen, ImagePreview } from "@files-ui/react";
-
-const videoSample = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "video/mp4",
-    name: "Thor arrives wakanda.mp4",
-    videoUrl: ThorArrivesWakandaEN,
-};
-
-export default function App() {
-  const [videoSrc, setVideoSrc] = React.useState(undefined);
-  const handleWatch = (videoSource) => {
-    setVideoSrc(videoSource);
-  };
-  return (
-    <>
-      <FileCard id={0} {...videoSample} onWatch={handleWatch} />
-      <FileMosaic id={0} {...videoSample} onWatch={handleWatch} />
-      <FullScreen
-        open={videoSrc !== undefined}
-        onClose={() => setVideoSrc(undefined)}
-      >
-        <VideoPreview src={videoSrc} autoPlay controls />
-      </FullScreen>
-    </>
-  );
-};`;
-
-const splittedCodeTS = `<FileCard id={0} {...videoSample} onWatch={handleWatch} />
-<FileMosaic id={0} {...videoSample} onWatch={handleWatch} />
-<FullScreen
-  open={videoSrc !== undefined}
-  onClose={() => setVideoSrc(undefined)}
->
-  <VideoPreview src={videoSrc} autoPlay controls />
-</FullScreen>
-
-const videoSample: ExtFile = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "video/mp4",
-    name: "Thor arrives wakanda.mp4",
-    videoUrl: ThorArrivesWakandaEN,
-};`;
-
-const completeCodeTS = `import * as React from "react";
-import { ExtFile, FileCard, FileMosaic, FullScreen, ImagePreview } from "@files-ui/react";
-
-const videoSample: ExtFile = {
-    id: "fileId-1",
-    size: 28 * 1024 * 1024,
-    type: "video/mp4",
-    name: "Thor arrives wakanda.mp4",
-    videoUrl: ThorArrivesWakandaEN,
-};
-
-export default function App() {
-  const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-  const handleWatch = (videoSource: File | string | undefined) => {
-    setVideoSrc(videoSource);
-  };
-  return (
-    <>
-      <FileCard id={0} {...videoSample} onWatch={handleWatch} />
-      <FileMosaic id={0} {...videoSample} onWatch={handleWatch} />
-      <FullScreen
-        open={videoSrc !== undefined}
-        onClose={() => setVideoSrc(undefined)}
-      >
-        <VideoPreview src={videoSrc} autoPlay controls />
-      </FullScreen>
-    </>
-  );
-};`;
diff --git a/src/components/demo-components/fullsceen/DemoFullScreenImg.tsx b/src/components/demo-components/fullsceen/DemoFullScreenImg.tsx
deleted file mode 100644
index 6959c4e9f1746c0d10dab0e26e729ed2b4ef96c3..0000000000000000000000000000000000000000
--- a/src/components/demo-components/fullsceen/DemoFullScreenImg.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import * as React from "react";
-import {
-  ExtFile,
-  FileCard,
-  FileMosaic,
-  FullScreen,
-  ImagePreview,
-} from "../../../files-ui";
-
-const DemoFullScreenImg = () => {
-  const [imgSrc, setImgSrc] = React.useState<string | undefined>(undefined);
-  const handleSee = (imageSource: string | undefined) => {
-    setImgSrc(imageSource);
-  };
-  return (
-    <>
-      <FileCard id={0} {...imageSample} onSee={handleSee} />
-      <FileMosaic id={0} {...imageSample} onSee={handleSee} />
-      <FullScreen
-        open={imgSrc !== undefined}
-        onClose={() => setImgSrc(undefined)}
-      >
-        <ImagePreview src={imgSrc} />
-      </FullScreen>
-    </>
-  );
-};
-export default DemoFullScreenImg;
-
-const imageSample: ExtFile = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "image/gif",
-  name: "Iron man in stark tower.gif",
-  imageUrl:
-    "https://i.pinimg.com/originals/b6/1d/6a/b61d6a1079d8e54932dcde9dc260dd2e.gif",
-};
diff --git a/src/components/demo-components/fullsceen/DemoFullScreenVid.tsx b/src/components/demo-components/fullsceen/DemoFullScreenVid.tsx
deleted file mode 100644
index 763f7f6d972484d8ff1895fd5f1a4b1e467e00f6..0000000000000000000000000000000000000000
--- a/src/components/demo-components/fullsceen/DemoFullScreenVid.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import * as React from "react";
-import {
-  ExtFile,
-  FileCard,
-  FileMosaic,
-  FullScreen,
-  VideoPreview,
-} from "../../../files-ui";
-import { ThorArrivesWakandaEN } from "../../../data/videoLinks";
-
-const DemoFullScreenVid = () => {
-  const [videoSrc, setVideoSrc] = React.useState<File | string | undefined>(
-    undefined
-  );
-  const handleWatch = (videoSource: File | string | undefined) => {
-    setVideoSrc(videoSource);
-  };
-  return (
-    <>
-      <FileCard id={0} {...videoSample} onWatch={handleWatch} />
-      <FileMosaic id={0} {...videoSample} onWatch={handleWatch} />
-      <FullScreen
-        open={videoSrc !== undefined}
-        onClose={() => setVideoSrc(undefined)}
-      >
-        <VideoPreview src={videoSrc} autoPlay controls />
-      </FullScreen>
-    </>
-  );
-};
-export default DemoFullScreenVid;
-
-const videoSample: ExtFile = {
-  id: "fileId-1",
-  size: 28 * 1024 * 1024,
-  type: "video/mp4",
-  name: "Thor arrives wakanda.mp4",
-  videoUrl: ThorArrivesWakandaEN,
-};
diff --git a/src/components/demo-components/global-demo/CodeDemoGlobalConfig.tsx b/src/components/demo-components/global-demo/CodeDemoGlobalConfig.tsx
deleted file mode 100644
index 31888d4eccb185d1b24da6cb8d2f8a4bfb873912..0000000000000000000000000000000000000000
--- a/src/components/demo-components/global-demo/CodeDemoGlobalConfig.tsx
+++ /dev/null
@@ -1,687 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeDemoGlobalConfig = ({ card = false }) => {
-  if (!card)
-    return (
-      <ShowDemoCode
-        codeCompleteJS={completeCodeJS}
-        codeCompleteTS={completeCodeTS}
-        codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-        codeSplittedJS={splittedCodeJS}
-        codeSplittedTS={splittedCodeTS}
-      />
-    );
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJSCard}
-      codeCompleteTS={completeCodeTSCard}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJSCard}
-      codeSplittedTS={splittedCodeTSCard}
-    />
-  );
-};
-export default CodeDemoGlobalConfig;
-
-const splittedCodeJS = `<FilesUiProvider
-    config={{
-        localization: localization,
-        darkMode: darkModeOn,
-        icons: otherIcons ,
-    }}
->
-{/** components here */}
-</FilesUiProvider>`;
-const splittedCodeTS = splittedCodeJS;
-const completeCodeJS = `
-import * as React from "react";
-import {
-  Dropzone,
-  FileMosaic,
-  FilesUiProvider,
-} from "@files-ui/react";
-import { Autocomplete, TextField, Button } from "@mui/material";
-import "./DemoGlobals.css";
-
-const DemoGlobalConfig = () => {
-  const [localization, setLocalization] = React.useState(undefined);
-
-  const [darkModeOn, setDarkModeOn] = React.useState(false);
-  const [otherIcons, setOtherIcons] = React.useState(true);
-
-  const hadleSelect = (value) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-  const iconsConfig = {
-    //local resource
-    docx: "/other_icons/wordicon.png",
-    //external resource
-    pdf: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDw14VqtuvUv74kiT1anhx6eRb_JjOXBxeqA&usqp=CAU",
-  };
-  return (
-    <FilesUiProvider
-      config={{
-        localization: localization,
-        darkMode: darkModeOn,
-        icons: otherIcons ? iconsConfig : undefined,
-      }}
-    >
-      <div className="demo-controls-container">
-        <Autocomplete
-          disablePortal
-          autoSelect
-          size="small"
-          onChange={(e, value) => hadleSelect(value as LanguageItem)}
-          id="combo-box-demo"
-          options={languages}
-          sx={{ width: 300 }}
-          getOptionLabel={(option) => option.language}
-          renderInput={(params) => (
-            <TextField {...params} label="Localization" />
-          )}
-        />
-        <Button
-          variant="contained"
-          onClick={() => setDarkModeOn((_darkModeOn) => !_darkModeOn)}
-        >
-          {darkModeOn ? "turn on light" : "turn off light"}
-        </Button>
-        <Button
-          variant="outlined"
-          onClick={() => setOtherIcons((_otherIcons) => !_otherIcons)}
-        >
-          {!otherIcons ? "Other icons" : "Default icons"}
-        </Button>
-      </div>
-
-      <div
-        className="demo-localization-container"
-        style={{
-          backgroundColor: darkModeOn ? "#121212" : "white",
-        }}
-      >
-        <div className="dropzone-filemosaic-container">
-          <Dropzone
-            value={[]}
-            accept={"image/*"}
-            maxFileSize={28 * 1024 * 1024}
-            maxFiles={10}
-          ></Dropzone>
-        </div>
-
-        <div className="dropzone-filemosaic-container">
-          {extFiles.map((extFile, index) => (
-            <FileMosaic key={index} {...extFile} onDelete={() => {}} info />
-          ))}
-        </div>
-      </div>
-    </FilesUiProvider>
-  );
-};
-export default DemoGlobalConfig;
-
-const languages = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles= [
-  {
-    id: 0,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_global_conf.docx",
-
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];
-`;
-const completeCodeTS = `import * as React from "react";
-import {
-  Dropzone,
-  ExtFile,
-  FileMosaic,
-  Localization,
-  FilesUiProvider,
-  IconsSet,
-} from "@files-ui/react";
-import { Autocomplete, TextField, Button } from "@mui/material";
-import "./DemoGlobals.css";
-
-const DemoGlobalConfig = () => {
-  const [localization, setLocalization] = React.useState<
-    Localization | undefined
-  >(undefined);
-
-  const [darkModeOn, setDarkModeOn] = React.useState<boolean>(false);
-  const [otherIcons, setOtherIcons] = React.useState<boolean>(true);
-
-  const hadleSelect = (value: LanguageItem | null) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-  const iconsConfig: IconsSet = {
-    //local resource
-    docx: "/other_icons/wordicon.png",
-    //external resource
-    pdf: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDw14VqtuvUv74kiT1anhx6eRb_JjOXBxeqA&usqp=CAU",
-  };
-  return (
-    <FilesUiProvider
-      config={{
-        localization: localization,
-        darkMode: darkModeOn,
-        icons: otherIcons ? iconsConfig : undefined,
-      }}
-    >
-      <div className="demo-controls-container">
-        <Autocomplete
-          disablePortal
-          autoSelect
-          size="small"
-          onChange={(e, value) => hadleSelect(value as LanguageItem)}
-          id="combo-box-demo"
-          options={languages}
-          sx={{ width: 300 }}
-          getOptionLabel={(option) => option.language}
-          renderInput={(params) => (
-            <TextField {...params} label="Localization" />
-          )}
-        />
-        <Button
-          variant="contained"
-          onClick={() => setDarkModeOn((_darkModeOn) => !_darkModeOn)}
-        >
-          {darkModeOn ? "turn on light" : "turn off light"}
-        </Button>
-        <Button
-          variant="outlined"
-          onClick={() => setOtherIcons((_otherIcons) => !_otherIcons)}
-        >
-          {!otherIcons ? "Other icons" : "Default icons"}
-        </Button>
-      </div>
-
-      <div
-        className="demo-localization-container"
-        style={{
-          backgroundColor: darkModeOn ? "#121212" : "white",
-        }}
-      >
-        <div className="dropzone-filemosaic-container">
-          <Dropzone
-            value={[]}
-            accept={"image/*"}
-            maxFileSize={28 * 1024 * 1024}
-            maxFiles={10}
-          ></Dropzone>
-        </div>
-
-        <div className="dropzone-filemosaic-container">
-          {extFiles.map((extFile, index) => (
-            <FileMosaic key={index} {...extFile} onDelete={() => {}} info />
-          ))}
-        </div>
-      </div>
-    </FilesUiProvider>
-  );
-};
-export default DemoGlobalConfig;
-
-interface LanguageItem {
-  language: string;
-  value: Localization;
-}
-
-const languages: LanguageItem = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles: ExtFile[] = [
-  {
-    id: 0,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_global_conf.docx",
-
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];`;
-
-const splittedCodeJSCard = splittedCodeJS;
-const splittedCodeTSCard = splittedCodeJS;
-const completeCodeTSCard = `import * as React from "react";
-import {
-  ExtFile,
-  Localization,
-  FileInputButton,
-  FileCard,
-  FilesUiProvider,
-  IconsSet,
-} from "@files-ui/react";
-import { Autocomplete, TextField, Button } from "@mui/material";
-import "./DemoGlobals.css";
-
-const DemoGlobalConfig = () => {
-  const [localization, setLocalization] = React.useState<
-    Localization | undefined
-  >(undefined);
-
-  const [darkModeOn, setDarkModeOn] = React.useState<boolean>(false);
-  const [otherIcons, setOtherIcons] = React.useState<boolean>(true);
-
-  const hadleSelect = (value: LanguageItem | null) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-  const iconsConfig: IconsSet = {
-    //local resource
-    docx: "/other_icons/wordicon.png",
-    //external resource
-    pdf: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDw14VqtuvUv74kiT1anhx6eRb_JjOXBxeqA&usqp=CAU",
-  };
-  return (
-    <FilesUiProvider
-        config={{
-            localization: localization,
-            darkMode: darkModeOn,
-            icons: otherIcons ? iconsConfig : undefined,
-        }}
-    >
-        <div className="demo-controls-container">
-            <Autocomplete
-                disablePortal
-                autoSelect
-                size="small"
-                onChange={(e, value) => hadleSelect(value as LanguageItem)}
-                id="combo-box-demo"
-                options={languages}
-                sx={{ width: 300 }}
-                getOptionLabel={(option) => option.language}
-                renderInput={(params) => (
-                    <TextField {...params} label="Localization" />
-                )}
-            />
-            <Button
-                variant="contained"
-                onClick={() => setDarkModeOn((_darkModeOn) => !_darkModeOn)}
-            >
-                {darkModeOn ? "turn on light" : "turn off light"}
-            </Button>
-            <Button
-                variant="outlined"
-                onClick={() => setOtherIcons((_otherIcons) => !_otherIcons)}
-            >
-                {!otherIcons ? "Other icons" : "Default icons"}
-            </Button>
-        </div>
-        <div
-            className="demo-localization-container"
-            style={{
-                backgroundColor: darkModeOn ? "#121212" : "white",
-            }}
-        >
-            <div className="inputbutton-container">
-                <FileInputButton value={[]} />
-            </div>
-            <div className="filecard-container">
-                {extFiles.map((extFile, index) => (
-                    <FileCard key={index} {...extFile} onDelete={() => {}} info />
-                ))}
-            </div>
-        </div>
-    </FilesUiProvider>
-};
-export default DemoGlobalConfig;
-
-interface LanguageItem {
-  language: string;
-  value: Localization;
-}
-
-const languages = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles: ExtFile[] = [
-  {
-    id: 0,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_global_conf.docx",
-
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];`;
-const completeCodeJSCard = `import * as React from "react";
-import {
-  FileInputButton,
-  FileCard,
-  FilesUiProvider,
-} from "@files-ui/react";
-import { Autocomplete, TextField, Button } from "@mui/material";
-import "./DemoGlobals.css";
-
-const DemoGlobalConfig = () => {
-  const [localization, setLocalization] = React.useState(undefined);
-
-  const [darkModeOn, setDarkModeOn] = React.useState(false);
-  const [otherIcons, setOtherIcons] = React.useState(true);
-
-  const hadleSelect = (value) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-  const iconsConfig = {
-    //local resource
-    docx: "/other_icons/wordicon.png",
-    //external resource
-    pdf: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDw14VqtuvUv74kiT1anhx6eRb_JjOXBxeqA&usqp=CAU",
-  };
-  return (
-    <FilesUiProvider
-        config={{
-            localization: localization,
-            darkMode: darkModeOn,
-            icons: otherIcons ? iconsConfig : undefined,
-        }}
-    >
-        <div className="demo-controls-container">
-            <Autocomplete
-                disablePortal
-                autoSelect
-                size="small"
-                onChange={(e, value) => hadleSelect(value as LanguageItem)}
-                id="combo-box-demo"
-                options={languages}
-                sx={{ width: 300 }}
-                getOptionLabel={(option) => option.language}
-                renderInput={(params) => (
-                    <TextField {...params} label="Localization" />
-                )}
-            />
-            <Button
-                variant="contained"
-                onClick={() => setDarkModeOn((_darkModeOn) => !_darkModeOn)}
-            >
-                {darkModeOn ? "turn on light" : "turn off light"}
-            </Button>
-            <Button
-                variant="outlined"
-                onClick={() => setOtherIcons((_otherIcons) => !_otherIcons)}
-            >
-                {!otherIcons ? "Other icons" : "Default icons"}
-            </Button>
-        </div>
-        <div
-            className="demo-localization-container"
-            style={{
-                backgroundColor: darkModeOn ? "#121212" : "white",
-            }}
-        >
-            <div className="inputbutton-container">
-                <FileInputButton value={[]} />
-            </div>
-            <div className="filecard-container">
-                {extFiles.map((extFile, index) => (
-                    <FileCard key={index} {...extFile} onDelete={() => {}} info />
-                ))}
-            </div>
-        </div>
-    </FilesUiProvider>
-};
-export default DemoGlobalConfig;
-
-const languages = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles = [
-  {
-    id: 0,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_global_conf.docx",
-
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];`;
diff --git a/src/components/demo-components/global-demo/DemoGlobalConfig.tsx b/src/components/demo-components/global-demo/DemoGlobalConfig.tsx
deleted file mode 100644
index 6ae26eadf2c96c25ce4225b1b2db5427aeebde3e..0000000000000000000000000000000000000000
--- a/src/components/demo-components/global-demo/DemoGlobalConfig.tsx
+++ /dev/null
@@ -1,225 +0,0 @@
-import * as React from "react";
-import {
-  Dropzone,
-  ExtFile,
-  FileMosaic,
-  Localization,
-  FileInputButton,
-  FileCard,
-  FilesUiProvider,
-  IconsSet,
-} from "../../../files-ui";
-import { Autocomplete, TextField, Button } from "@mui/material";
-import "./DemoGlobals.css";
-
-const DemoGlobalConfig = (props: { card: boolean }) => {
-  const [localization, setLocalization] = React.useState<
-    Localization | undefined
-  >(undefined);
-
-  const [darkModeOn, setDarkModeOn] = React.useState<boolean>(false);
-  const [otherIcons, setOtherIcons] = React.useState<boolean>(true);
-
-  const hadleSelect = (value: LanguageItem | null) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-  const iconsConfig: IconsSet = {
-    //local resource
-    docx: "/other_icons/wordicon.png",
-    //external resource
-    pdf: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDw14VqtuvUv74kiT1anhx6eRb_JjOXBxeqA&usqp=CAU",
-  };
-  if (props.card)
-    return (
-      <FilesUiProvider
-        config={{
-          localization: localization,
-          darkMode: darkModeOn,
-          icons: otherIcons ? iconsConfig : undefined,
-        }}
-      >
-        <div className="demo-controls-container">
-          <Autocomplete
-            disablePortal
-            autoSelect
-            size="small"
-            onChange={(e, value) => hadleSelect(value as LanguageItem)}
-            id="combo-box-demo"
-            options={languages}
-            sx={{ width: 300 }}
-            getOptionLabel={(option) => option.language}
-            renderInput={(params) => (
-              <TextField {...params} label="Localization" />
-            )}
-          />
-          <Button
-            variant="contained"
-            onClick={() => setDarkModeOn((_darkModeOn) => !_darkModeOn)}
-          >
-            {darkModeOn ? "turn on light" : "turn off light"}
-          </Button>
-          <Button
-            variant="outlined"
-            onClick={() => setOtherIcons((_otherIcons) => !_otherIcons)}
-          >
-            {!otherIcons ? "Other icons" : "Default icons"}
-          </Button>
-        </div>
-        <div
-          className="demo-localization-container"
-          style={{
-            backgroundColor: darkModeOn ? "#121212" : "white",
-          }}
-        >
-          <div className="inputbutton-container">
-            <FileInputButton value={[]} />
-          </div>
-          <div className="filecard-container">
-            {extFiles.map((extFile, index) => (
-              <FileCard key={index} {...extFile} onDelete={() => {}} info />
-            ))}
-          </div>
-        </div>
-      </FilesUiProvider>
-    );
-  return (
-    <FilesUiProvider
-      config={{
-        localization: localization,
-        darkMode: darkModeOn,
-        icons: otherIcons ? iconsConfig : undefined,
-      }}
-    >
-      <div className="demo-controls-container">
-        <Autocomplete
-          disablePortal
-          autoSelect
-          size="small"
-          onChange={(e, value) => hadleSelect(value as LanguageItem)}
-          id="combo-box-demo"
-          options={languages}
-          sx={{ width: 300 }}
-          getOptionLabel={(option) => option.language}
-          renderInput={(params) => (
-            <TextField {...params} label="Localization" />
-          )}
-        />
-        <Button
-          variant="contained"
-          onClick={() => setDarkModeOn((_darkModeOn) => !_darkModeOn)}
-        >
-          {darkModeOn ? "turn on light" : "turn off light"}
-        </Button>
-        <Button
-          variant="outlined"
-          onClick={() => setOtherIcons((_otherIcons) => !_otherIcons)}
-        >
-          {!otherIcons ? "Other icons" : "Default icons"}
-        </Button>
-      </div>
-
-      <div
-        className="demo-localization-container"
-        style={{
-          backgroundColor: darkModeOn ? "#121212" : "white",
-        }}
-      >
-        <div className="dropzone-filemosaic-container">
-          <Dropzone
-            value={[]}
-            accept={"image/*"}
-            maxFileSize={28 * 1024 * 1024}
-            maxFiles={10}
-          ></Dropzone>
-        </div>
-
-        <div className="dropzone-filemosaic-container">
-          {extFiles.map((extFile, index) => (
-            <FileMosaic key={index} {...extFile} onDelete={() => {}} info />
-          ))}
-        </div>
-      </div>
-    </FilesUiProvider>
-  );
-};
-export default DemoGlobalConfig;
-
-interface LanguageItem {
-  language: string;
-  value: Localization;
-}
-
-const languages = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles: ExtFile[] = [
-  {
-    id: 0,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_global_conf.docx",
-
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_global_conf.pdf",
-    type: "application/pdf",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_global_conf.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];
diff --git a/src/components/demo-components/global-demo/DemoGlobals.css b/src/components/demo-components/global-demo/DemoGlobals.css
deleted file mode 100644
index fda985bad43f3f10feb066544191c1b5d324107f..0000000000000000000000000000000000000000
--- a/src/components/demo-components/global-demo/DemoGlobals.css
+++ /dev/null
@@ -1,52 +0,0 @@
-.demo-controls-container {
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-evenly;
-    width: 100%;
-    gap: 5px;
-}
-
-.demo-localization-container {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    gap: 10px;
-    min-height: 50vh;
-    padding: 10px;
-}
-
-.dropzone-filemosaic-container {
-    width: 50%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-wrap: wrap;
-    gap: 1px;
-}
-
-.inputbutton-container {
-    width: 100px;
-}
-
-.filecard-container {
-    gap: 10px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-wrap: wrap;
-}
-
-@media (max-width: 960px) {
-    .demo-localization-container {
-        flex-direction: column;
-    }
-
-    .dropzone-filemosaic-container {
-        width: 100%;
-    }
-
-    .filecard-container {
-        width: 100%;
-        flex-direction: column;
-    }
-}
\ No newline at end of file
diff --git a/src/components/demo-components/icons/JSIcon.jsx b/src/components/demo-components/icons/JSIcon.jsx
deleted file mode 100644
index f4a219decbcf1e54a213d213dbcf7890ff3f2611..0000000000000000000000000000000000000000
--- a/src/components/demo-components/icons/JSIcon.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from "react";
-
-const JSIcon = ({ size = "20px", color = "black" }) => {
-  return (
-    <svg
-      //class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1t8mnmp"
-      focusable="false"
-      aria-hidden="true"
-      viewBox="0 0 24 24"
-      height={size}
-      width={size}
-      fill={color}
-    >
-      <path d="M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z"></path>
-    </svg>
-  );
-};
-export default JSIcon;
diff --git a/src/components/demo-components/icons/TSIcon.jsx b/src/components/demo-components/icons/TSIcon.jsx
deleted file mode 100644
index 889c378bc50c3323227ade6bdd0a14fa07ca55d5..0000000000000000000000000000000000000000
--- a/src/components/demo-components/icons/TSIcon.jsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as React from "react";
-
-const TSIcon = ({ size = "20px", color = "black" }) => {
-  return (
-    <svg
-      focusable="false"
-      aria-hidden="true"
-      viewBox="0 0 24 24"
-      height={size}
-      width={size}
-      fill={color}
-    >
-      <path d="M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z"></path>
-    </svg>
-  );
-};
-export default TSIcon;
diff --git a/src/components/demo-components/localization/CodeJSFileMosaicLocalization.jsx b/src/components/demo-components/localization/CodeJSFileMosaicLocalization.jsx
deleted file mode 100644
index 0f44544e576f17277926417f0edbace0840b9091..0000000000000000000000000000000000000000
--- a/src/components/demo-components/localization/CodeJSFileMosaicLocalization.jsx
+++ /dev/null
@@ -1,314 +0,0 @@
-import * as React from "react";
-import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
-
-const CodeJSFileMosaicLocalization = ({ card }) => {
-  return (
-    <ShowDemoCode
-      codeCompleteJS={completeCodeJS(card)}
-      codeCompleteTS={completeCodeTS(card)}
-      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
-    />
-  );
-};
-export default CodeJSFileMosaicLocalization;
-
-const splittedCodeJS = ``;
-const splittedCodeTS = ``;
-
-const completeCodeJS = (card) => `import * as React from "react";
-import { ${card ? "FileCard" : `FileMosaic`} } from "@files-ui/react";
-import "./styles.css";
-import { Autocomplete, TextField } from "@mui/material";
-
-const App = () => {
-  const [localization, setLocalization] = React.useState(undefined);
-
-  const hadleSelect = (value) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-  return (
-    <>
-      <Autocomplete
-        disablePortal
-        autoSelect
-        size="small"
-        onChange={(e, value) => hadleSelect(value)}
-        id="combo-box-demo"
-        options={languages}
-        sx={{ width: 300 }}
-        getOptionLabel={(option) => option.language}
-        renderInput={(params) => <TextField {...params} label="Localization" />}
-      />
-      ${
-        !card
-          ? `<div className="demo-localization-container">
-        <div className="dropzone-filemosaic-container">
-          <Dropzone
-            accept={"image/*"}
-            maxFileSize={28 * 1024 * 1024}
-            maxFiles={10}
-            localization={localization}
-          ></Dropzone>
-        </div>
-        <div className="dropzone-filemosaic-container">
-          {extFiles.map((extFile, index) => (
-            <FileMosaic
-              key={index}
-              {...extFile}
-              localization={localization}
-              onDelete={() => {}}
-              info
-            />
-          ))}
-        </div>
-      </div>`
-          : `<div className="demo-localization-container">
-        <div className="inputbutton-container">
-          <FileInputButton
-            localization={localization}
-          ></FileInputButton>
-        </div>
-        <div className="filecard-container">
-          {extFiles.map((extFile, index) => (
-            <FileCard
-              key={index}
-              {...extFile}
-              localization={localization}
-              onDelete={() => {}}
-              info
-            />
-          ))}
-        </div>
-      </div>`
-      }
-    </>
-  );
-};
-export default DemoFileMosaicLocalization;
-
-const languages = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles = [
-  {
-    id: 0,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];`;
-
-const completeCodeTS = (card) => `import * as React from "react";
-import { ExtFile, ${
-  card ? "FileCard" : `FileMosaic`
-}, Localization } from "@files-ui/react";
-import "./styles.css";
-import { Autocomplete, TextField } from "@mui/material";
-
-const App = () => {
-  const [localization, setLocalization] = React.useState<
-    Localization | undefined
-  >(undefined);
-
-  const hadleSelect = (value: LanguageItem | null) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-
-  return (
-    <>
-      <Autocomplete
-        disablePortal
-        autoSelect
-        size="small"
-        onChange={(e, value) => hadleSelect(value as LanguageItem)}
-        id="combo-box-demo"
-        options={languages}
-        sx={{ width: 300 }}
-        getOptionLabel={(option) => option.language}
-        renderInput={(params) => <TextField {...params} label="Localization" />}
-      />
-      ${
-        !card
-          ? `<div className="demo-localization-container">
-        <div className="dropzone-filemosaic-container">
-          <Dropzone
-            accept={"image/*"}
-            maxFileSize={28 * 1024 * 1024}
-            maxFiles={10}
-            localization={localization}
-          ></Dropzone>
-        </div>
-        <div className="dropzone-filemosaic-container">
-          {extFiles.map((extFile, index) => (
-            <FileMosaic
-              key={index}
-              {...extFile}
-              localization={localization}
-              onDelete={() => {}}
-              info
-            />
-          ))}
-        </div>
-      </div>`
-          : `<div className="demo-localization-container">
-        <div className="inputbutton-container">
-          <FileInputButton
-            localization={localization}
-          ></FileInputButton>
-        </div>
-        <div className="filecard-container">
-          {extFiles.map((extFile, index) => (
-            <FileCard
-              key={index}
-              {...extFile}
-              localization={localization}
-              onDelete={() => {}}
-              info
-            />
-          ))}
-        </div>
-      </div>`
-      }
-    </>
-  );
-};
-export default DemoFileMosaicLocalization;
-
-interface LanguageItem {
-  language: string;
-  value: Localization;
-}
-
-const languages = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles: ExtFile[] = [
-  {
-    id: 0,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_localization.docx",
-
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];`;
diff --git a/src/components/demo-components/localization/DemoFileMosaicLocalization.tsx b/src/components/demo-components/localization/DemoFileMosaicLocalization.tsx
deleted file mode 100644
index 97ee72424c23150e83a4f069a42906d0d4e4e130..0000000000000000000000000000000000000000
--- a/src/components/demo-components/localization/DemoFileMosaicLocalization.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-import * as React from "react";
-import {
-  Dropzone,
-  ExtFile,
-  FileMosaic,
-  Localization,
-  FileInputButton,
-  FileCard,
-} from "../../../files-ui";
-import { Autocomplete, TextField } from "@mui/material";
-import "./DemoLocalization.css";
-const DemoFileMosaicLocalization = (props: { card: boolean }) => {
-  const [localization, setLocalization] = React.useState<
-    Localization | undefined
-  >(undefined);
-
-  const hadleSelect = (value: LanguageItem | null) => {
-    console.log(value);
-    setLocalization(value?.value);
-  };
-  return (
-    <>
-      <Autocomplete
-        disablePortal
-        autoSelect
-        size="small"
-        onChange={(e, value) => hadleSelect(value as LanguageItem)}
-        id="combo-box-demo"
-        options={languages}
-        sx={{ width: 300 }}
-        getOptionLabel={(option) => option.language}
-        renderInput={(params) => <TextField {...params} label="Localization" />}
-      />
-      {props.card ? (
-        <div className="demo-localization-container">
-          <div className="inputbutton-container">
-            <FileInputButton
-              //style={{ width: "400px" }}
-              value={[]}
-              localization={localization}
-            ></FileInputButton>
-          </div>
-
-          <div className="filecard-container">
-            {extFiles.map((extFile, index) => (
-              <FileCard
-                key={index}
-                {...extFile}
-                localization={localization}
-                onDelete={() => {}}
-                info
-              />
-            ))}
-          </div>
-        </div>
-      ) : (
-        <div className="demo-localization-container">
-          <div className="dropzone-filemosaic-container">
-            <Dropzone
-              //value={[]}
-              accept={"image/*"}
-              maxFileSize={28 * 1024 * 1024}
-              maxFiles={10}
-              //style={{ width: "400px" }}
-              localization={localization}
-            ></Dropzone>
-          </div>
-
-          <div className="dropzone-filemosaic-container">
-            {extFiles.map((extFile, index) => (
-              <FileMosaic
-                key={index}
-                {...extFile}
-                localization={localization}
-                onDelete={() => {}}
-                info
-              />
-            ))}
-          </div>
-        </div>
-      )}
-    </>
-  );
-};
-export default DemoFileMosaicLocalization;
-
-interface LanguageItem {
-  language: string;
-  value: Localization;
-}
-
-const languages = [
-  { language: "Español: ES-es", value: "ES-es" },
-  { language: "English: EN-en", value: "EN-en" },
-  { language: "French: FR-fr", value: "FR-fr" },
-  { language: "Italian: IT-it", value: "IT-it" },
-  { language: "Portuguese: PT-pt", value: "PT-pt" },
-  { language: "Russian: RU-ru", value: "RU-ru" },
-  { language: "Chinese(simplified): ZH-cn", value: "ZH-cn" },
-  { language: "Chinese(traditional): ZH-hk", value: "ZH-hk" },
-];
-const extFiles: ExtFile[] = [
-  {
-    id: 0,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 1,
-    valid: false,
-    name: "file_localization.docx",
-
-    size: 28 * 1024,
-    errors: ["pdf not allowed", "file is too big"],
-  },
-  {
-    id: 2,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-  },
-  {
-    id: 3,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "preparing",
-  },
-  {
-    id: 4,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "uploading",
-    progress: 28,
-  },
-  {
-    id: 5,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "aborted",
-    uploadMessage: "Upload was aborted",
-  },
-  {
-    id: 6,
-    valid: false,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "error",
-    uploadMessage: "there was an error on the server",
-  },
-  {
-    id: 7,
-    valid: true,
-    name: "file_localization.docx",
-    size: 28 * 1024,
-    uploadStatus: "success",
-    uploadMessage: "files-ui <3",
-  },
-];
diff --git a/src/components/demo-components/localization/DemoLocalization.css b/src/components/demo-components/localization/DemoLocalization.css
deleted file mode 100644
index e0ec24b80d681bd778d5d41f611346508d99e696..0000000000000000000000000000000000000000
--- a/src/components/demo-components/localization/DemoLocalization.css
+++ /dev/null
@@ -1,43 +0,0 @@
-.demo-localization-container {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    gap: 10px;
-    min-height: 50vh;
-}
-
-.dropzone-filemosaic-container {
-    width: 50%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-wrap: wrap;
-    gap: 1px;
-}
-
-.inputbutton-container {
-    width: 100px;
-}
-
-.filecard-container {
-    gap: 10px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-wrap: wrap;
-}
-
-@media (max-width: 960px) {
-    .demo-localization-container {
-        flex-direction: column;
-    }
-
-    .dropzone-filemosaic-container {
-        width: 100%;
-    }
-
-    .filecard-container {
-        width: 100%;
-        flex-direction: column;
-    }
-}
\ No newline at end of file
diff --git a/src/components/demo-components/main-page/DropzoneMainPage.jsx b/src/components/demo-components/main-page/DropzoneMainPage.jsx
deleted file mode 100644
index 0c221b9a5fe57d6fa53961e5c8cb463c9222530f..0000000000000000000000000000000000000000
--- a/src/components/demo-components/main-page/DropzoneMainPage.jsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import * as React from "react";
-import { Dropzone, FileMosaic } from "../../../files-ui";
-
-
-import DescParagraph from "../desc-paragraph/DescParagraph";
-import SubTitle from "../sub-title/SubTitle";
-
-const reactFile = {
-  id: "HCVUNULTVJTCRU",
-  name: "A very very long title for a JSX file.jsx",
-  type: "text/plain",
-  size: 280000,
-};
-
-const baseFiles = [reactFile];
-const DropzoneMainPage = ({ darkMode = false }) => {
-  const [files, setFiles] = React.useState(baseFiles);
-  const updateFiles = (incommingFiles) => {
-    //do something with the files
-    console.log("MainPage incommingFiles", incommingFiles);
-
-    setFiles(incommingFiles);
-    //even your own upload implementation
-  };
-  const removeFile = (id) => {
-    setFiles(files.filter((x) => x.id !== id));
-  };
-  const handleSee = (imageSource) => {
-    console.log("handleSee-imageSource");
-  };
-
-  return (
-    <React.Fragment>
-      <SubTitle content={"Try this out!"} darkMode={darkMode} />
-      <DescParagraph darkMode={darkMode}>
-        Have fun with files-ui. Just drag'n drop some files and see the magic
-        happens
-      </DescParagraph>
-      <Dropzone
-        style={{ borderRadius: "16px" }}
-        // minHeight="400px"
-        onChange={updateFiles}
-        value={files}
-        maxFileSize={28 * 1024 * 1024}
-        maxFiles={5}
-        accept=".jpg, .png, application/json, video/*, .pdf"
-        fakeUpload
-        behaviour="add"
-        uploadConfig={{ autoUpload: true, url: "fdbd" }}
-      >
-        {files.map((file) => (
-          <FileMosaic
-            darkMode={darkMode}
-            {...file}
-            preview
-            onDelete={removeFile}
-            key={file.id}
-            info
-            alwaysActive
-            hd
-            onSee={handleSee}
-            resultOnTooltip
-            //uploadMessage="llalalal"
-          />
-        ))}
-      </Dropzone>
-
-      <DescParagraph margin="10px 0" darkMode={darkMode}>
-        <b>Note: </b> Files are not actually uploaded, this is just a demo :D
-      </DescParagraph>
-    </React.Fragment>
-  );
-};
-export default DropzoneMainPage;
diff --git a/src/components/demo-components/sub-title/SubTitle.scss b/src/components/demo-components/sub-title/SubTitle.scss
deleted file mode 100644
index 386c0467b957dc1480265bfaeb704ae0366bdfba..0000000000000000000000000000000000000000
--- a/src/components/demo-components/sub-title/SubTitle.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-.subtitle {
-  font-size: 1.5rem;
-  line-height: 1.5;
-  letter-spacing: 0.1px;
-  //color: #1a2027;
- /*  &.dark-mode{
-    //color:rgba(255, 255, 255, 0.7);
-  } */
-}
diff --git a/src/components/demo-components/sub-title/SubTitle.tsx b/src/components/demo-components/sub-title/SubTitle.tsx
deleted file mode 100644
index 8c2bd5b71d80ce541fbc43f358accd638be1a038..0000000000000000000000000000000000000000
--- a/src/components/demo-components/sub-title/SubTitle.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import * as React from "react";
-import { SubTitleProps } from "./SubTitleProps";
-import "./SubTitle.scss";
-const SubTitle: React.FC<SubTitleProps> = (props: SubTitleProps) => {
-  const { content, darkMode } = props;
-  return <h2 className={darkMode?"subtitle dark-mode":"subtitle"}>{content}</h2>;
-};
-export default SubTitle;
diff --git a/src/components/demo-components/sub-title/SubTitleProps.ts b/src/components/demo-components/sub-title/SubTitleProps.ts
deleted file mode 100644
index 5f5ad0877da3638f1c9838c0776d4443d43d9188..0000000000000000000000000000000000000000
--- a/src/components/demo-components/sub-title/SubTitleProps.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export type SubTitleProps = {
-    content?: string;
-    darkMode?: boolean
-}
\ No newline at end of file
diff --git a/src/components/getting-started/InstallationNPM.jsx b/src/components/getting-started/InstallationNPM.jsx
deleted file mode 100644
index b9d286326d7d4ce80f8349572da1f14e0763cc33..0000000000000000000000000000000000000000
--- a/src/components/getting-started/InstallationNPM.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Clipboard } from "rc-highlight";
-import * as React from "react";
-
-const InstallationNPM = () => {
-  return (
-    <div className="clipboard-container">
-      <span style={{ color: "#60d2ff" }}>
-        <span style={{ color: "white" }}>
-          <b>{" > "}</b>&nbsp;
-        </span>
-        <span style={{ color: "#e2d487" }}>{"npm "}&nbsp;</span>
-        <span style={{ color: "white" }}>{"install "}&nbsp;</span>
-        <span>{"@files-ui/react"} &nbsp;&nbsp;</span>
-      </span>
-      <Clipboard
-        style={{ backgroundColor: "grey" }}
-        code="npm install @files-ui/react"
-        onCopyToClipboard={() => {}}
-      />
-    </div>
-  );
-};
-export default InstallationNPM;
diff --git a/src/components/getting-started/InstallationYarn.jsx b/src/components/getting-started/InstallationYarn.jsx
deleted file mode 100644
index 8236a9baeb4f03d70b6f38fde9d3264fb055ab7a..0000000000000000000000000000000000000000
--- a/src/components/getting-started/InstallationYarn.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Clipboard } from "rc-highlight";
-import * as React from "react";
-
-const InstallationYarn = () => {
-  return (
-    <div className="clipboard-container">
-      <span style={{ color: "#60d2ff" }}>
-        <span style={{ color: "white" }}>
-          <b>{" > "}</b>&nbsp;
-        </span>
-        <span style={{ color: "#e2d487" }}>{"yarn "}&nbsp;</span>
-        <span style={{ color: "white" }}>{"add "}&nbsp;</span>
-        <span>{"@files-ui/react"} &nbsp;&nbsp;</span>
-      </span>
-      <Clipboard
-        style={{ backgroundColor: "grey" }}
-        code="yarn add @files-ui/react"
-        onCopyToClipboard={() => {}}
-      />
-    </div>
-  );
-};
-export default InstallationYarn;
diff --git a/src/components/getting-started/Overview.tsx b/src/components/getting-started/Overview.tsx
deleted file mode 100644
index 632adef375c895e0d90e88c15e75249a39ae7e97..0000000000000000000000000000000000000000
--- a/src/components/getting-started/Overview.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as React from "react";
-import DescParagraph from "../demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../demo-components/sub-title/SubTitle";
-import MainParagraph from "../paragraph-main/MainParagraph";
-
-interface OverviewProps {}
-const Overview: React.FC<OverviewProps> = (props: OverviewProps) => {
-  return (
-    <React.Fragment>
-      <SubTitle content="Overview" />
-      <MainParagraph>
-        Files UI is a library of UI components and utilities for making File
-        Uploads with React.
-      </MainParagraph>
-      <MainParagraph>
-        It includes a comprehensive collection of prebuilt components that are
-        ready for use in production right out of the box.
-      </MainParagraph>
-      <SubTitle content="Key features:" />
-      <DescParagraph>
-        <ul>
-          <li>{"✅ File validation: Validate files before uploading."}</li>
-          <li>{"🎨 File Image previews: See a thumbnail preview"}</li>
-          <li>
-            {
-              "🖼️ Full screen image previews: Add more interacion with a full screen preview of images"
-            }
-          </li>
-          <li>
-            {"🎥 Full screen video previews. Play the video before uploading."}
-          </li>
-          <li>
-            {
-              "👀 status visualization: validation and upload status is shown on a Tooltip or on Info Layer"
-            }
-          </li>
-          <li>
-            {"✈️ File upload: Upload valid files to a server using Axios lib."}
-          </li>
-          <li>{"🎭 Out of the box design and style."}</li>
-          <li>
-            {
-              "🍰 Easy to use. Probably, this is the killer feature you are looking for in a package."
-            }
-          </li>
-        </ul>
-      </DescParagraph>
-    </React.Fragment>
-  );
-};
-export default Overview;
diff --git a/src/components/layout-pages/FooterPage.scss b/src/components/layout-pages/FooterPage.scss
deleted file mode 100644
index f20e45ba0a257ec5db8e02697894ac86162f89eb..0000000000000000000000000000000000000000
--- a/src/components/layout-pages/FooterPage.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-.fui-page-footer-container {
-  display: flex;
-  width: 100%;
-  align-items: center;
-  justify-content: space-between;
-  .redirect-container {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-  }
-  .like-icon-container {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-  }
-
-  @media (max-width: "960px") {
-    .redirect-container {
-      display: none;
-    }
-    .redirect-small-container {
-      display: flex;
-    }
-    .like-icon-container {
-      width: 100%;
-    }
-  }
-}
diff --git a/src/components/layout-pages/FooterPage.tsx b/src/components/layout-pages/FooterPage.tsx
deleted file mode 100644
index 80baaa503062423c8a8f553372101eccc9f36453..0000000000000000000000000000000000000000
--- a/src/components/layout-pages/FooterPage.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import { Button, Divider } from "@mui/material";
-import * as React from "react";
-import KeyboardArrowLeftIcon from "@mui/icons-material/KeyboardArrowLeft";
-import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight";
-import { useNavigate } from "react-router";
-import "./FooterPage.scss";
-
-interface FooterPageProps {
-  labelBefore?: string;
-  labelAfter?: string;
-  linkBefore?: string;
-  linkAfter?: string;
-  page: string;
-}
-const FooterPage: React.FC<FooterPageProps> = (props: FooterPageProps) => {
-  const { labelAfter, labelBefore, linkAfter, linkBefore, page } = props;
-  const redirect = useNavigate();
-  return (
-    <footer>
-      <Divider style={{ width: "100%" }}></Divider>
-      <div className="fui-page-footer-container">
-        <div className="redirect-small-container">
-          {labelBefore && (
-            <Button
-              startIcon={<KeyboardArrowLeftIcon />}
-              onClick={linkBefore ? () => redirect(linkBefore) : undefined}
-            >
-              {labelBefore}
-            </Button>
-          )}
-          {labelAfter && (
-            <Button
-              endIcon={<KeyboardArrowRightIcon />}
-              onClick={labelAfter ? () => redirect(labelAfter) : undefined}
-            >
-              {labelAfter}
-            </Button>
-          )}
-        </div>
-
-        <div className="redirect-container">
-          {labelBefore && (
-            <Button
-              startIcon={<KeyboardArrowLeftIcon />}
-              onClick={linkBefore ? () => redirect(linkBefore) : undefined}
-            >
-              {labelBefore}
-            </Button>
-          )}
-        </div>
-
-        <div className="like-icon-container">like icons</div>
-        <div className="redirect-container">
-          {labelAfter && (
-            <Button
-              endIcon={<KeyboardArrowRightIcon />}
-              onClick={linkAfter ? () => redirect(linkAfter) : undefined}
-            >
-              {labelAfter}
-            </Button>
-          )}
-        </div>
-      </div>
-    </footer>
-  );
-};
-export default FooterPage;
diff --git a/src/components/layout-pages/LayoutPage.scss b/src/components/layout-pages/LayoutPage.scss
deleted file mode 100644
index 9f435c42dba715fb939824fa771825ec76ee6681..0000000000000000000000000000000000000000
--- a/src/components/layout-pages/LayoutPage.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.files-ui-layout {
-  color: #1a2027;
-  &.darkmode {
-    color: rgba(255, 255, 255, 0.7);
-  }
-}
diff --git a/src/components/layout-pages/MainContentContainer.jsx b/src/components/layout-pages/MainContentContainer.jsx
deleted file mode 100644
index 2995cd30e424b75fdb7e0e2815b6635e42696d55..0000000000000000000000000000000000000000
--- a/src/components/layout-pages/MainContentContainer.jsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Box } from "@mui/material";
-import * as React from "react";
-
-const MainContentContainer = ({ children }) => {
-  return (
-    <Box
-   
-      sx={{
-        overflow: "hidden",
-        boxSizing: "border-box",
-        marginLeft: { xl: "240px", lg: "0px" },
-        marginRight: { lg: "240px" },
-        width: {
-          lg: `min(1000px, calc(100% - ${240}px))`,
-        },
-      }}
-    >
-      <Box
-      // className="section-container"
-        sx={{
-          boxSizing: "border-box",
-          width: "100%",
-          //backgroundColor:"grey"
-          
-        }}
-      >
-        {children}
-        
-      </Box>
-    </Box>
-  );
-};
-export default MainContentContainer;
diff --git a/src/components/layout-pages/MainLayoutPage.jsx b/src/components/layout-pages/MainLayoutPage.jsx
deleted file mode 100644
index 5848356e0b2f1b513575914e00ddb5e2240f81dc..0000000000000000000000000000000000000000
--- a/src/components/layout-pages/MainLayoutPage.jsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Stack } from "@mui/material";
-import * as React from "react";
-import { UserContext } from "../../globals/contexts/UserContext";
-import NavBarTemplate from "../../templates/NavBarTemplate";
-import "./LayoutPage.scss";
-
-const MainLayoutPage = ({ children, selectedIndex }) => {
-  const [usuario, ] = React.useContext(UserContext);
-  const darkMode = usuario.darkMode;
-
-  const finalClassName = darkMode
-    ? "files-ui-layout darkmode"
-    : "files-ui-layout";
-  return (
-    <NavBarTemplate selectedIndex={selectedIndex}>
-      <Stack
-        direction={"row"}
-        sx={{ position: "relative" }}
-        className={finalClassName}
-      >
-        {children}
-      </Stack>
-    </NavBarTemplate>
-  );
-};
-export default MainLayoutPage;
diff --git a/src/components/layout-pages/RightMenuContainer.jsx b/src/components/layout-pages/RightMenuContainer.jsx
deleted file mode 100644
index cc4d7d0a2c414e5e98fc18772484338bfcf051bd..0000000000000000000000000000000000000000
--- a/src/components/layout-pages/RightMenuContainer.jsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Box } from "@mui/material";
-import * as React from "react";
-
-const RightMenuContainer = ({ children }) => {
-  return (
-    <Box
-      sx={{
-        position: "fixed",
-        top: 100,
-        right: 0,
-        width: "240px",
-        display: { lg: "flex", xs: "none" },
-      }}
-    >
-      {children}
-    </Box>
-  );
-};
-export default RightMenuContainer;
diff --git a/src/components/main-title/MainTitle.tsx b/src/components/main-title/MainTitle.tsx
deleted file mode 100644
index b201c3ef83baa35a50a9853ddaa9ea2f30a3116d..0000000000000000000000000000000000000000
--- a/src/components/main-title/MainTitle.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import * as React from "react";
-import { UserContext } from "../../globals/contexts/UserContext";
-interface MainTitleProps {
-  children?: React.ReactNode;
-  style?: React.CSSProperties;
-  className?: string;
-}
-const MainTitle: React.FC<MainTitleProps> = (props: MainTitleProps) => {
-  const { children, className, style } = props;
-  const [usuario, ] = React.useContext(UserContext);
-
-  // const [darkModeOn, setDarkModeOn] = React.useState(false);
-  const darkMode = usuario.darkMode;
-  return (
-    <h1
-      style={{
-        fontSize: "2.25rem",
-        letterSpacing: "0.2px",
-        lineHeight: "1.22222",
-        color: darkMode ? "rgba(255, 255, 255, 0.7)" : "#0a1929",
-        wordBreak: "break-word",
-        ...style,
-      }}
-      className={className}
-    >
-      {children}
-    </h1>
-  );
-};
-export default MainTitle;
diff --git a/src/components/paragraph-main/MainParagraph.scss b/src/components/paragraph-main/MainParagraph.scss
deleted file mode 100644
index 468d12247467ed7ece56162add48a7358c1d99d8..0000000000000000000000000000000000000000
--- a/src/components/paragraph-main/MainParagraph.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.paragraph-main {
-  font-size: 1.125rem;
-  line-height: 1.3333;
-  letter-spacing: 0;
-  font-weight: 400;
-  margin-bottom: 16px;
-  margin-top: 0;
-  //color: #1A2027;
-  .darkmode{
-    color: rgba(255, 255, 255, 0.7);
-  }
-}
diff --git a/src/components/paragraph-main/MainParagraph.tsx b/src/components/paragraph-main/MainParagraph.tsx
deleted file mode 100644
index b5727690f7c56796ebb8f0d7200712fdc503406c..0000000000000000000000000000000000000000
--- a/src/components/paragraph-main/MainParagraph.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import * as React from "react";
-import { ParagraphMainProps } from "./MainParagraphProps";
-import "./MainParagraph.scss";
-import { UserContext } from "../../globals/contexts/UserContext";
-const MainParagraph: React.FC<ParagraphMainProps> = (
-  props: ParagraphMainProps
-) => {
-  const { content, children } = props;
-  const [usuario, ] = React.useContext(UserContext);
-  const darkModeOn = usuario.darkMode;
-  const className = darkModeOn ? "paragraph-main darkmode" : "paragraph-main";
-
-  return <p className={className}>{children || content}</p>;
-};
-export default MainParagraph;
diff --git a/src/components/paragraph-main/MainParagraphProps.ts b/src/components/paragraph-main/MainParagraphProps.ts
deleted file mode 100644
index 2ed894b374700f61681aabd1209c694167aaf574..0000000000000000000000000000000000000000
--- a/src/components/paragraph-main/MainParagraphProps.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export type ParagraphMainProps = {
-    content?:string;
-    children?:React.ReactNode;
-}
\ No newline at end of file
diff --git a/src/components/show-demo-code/ShowDemoCode.tsx b/src/components/show-demo-code/ShowDemoCode.tsx
deleted file mode 100644
index 9cd76ede050273bf83b2865b2d0c467b99065286..0000000000000000000000000000000000000000
--- a/src/components/show-demo-code/ShowDemoCode.tsx
+++ /dev/null
@@ -1,130 +0,0 @@
-import { ButtonGroup, Stack, Tooltip, IconButton } from "@mui/material";
-import Button from "@mui/material/Button";
-import CodeIcon from "@mui/icons-material/Code";
-import ViewInArIcon from "@mui/icons-material/ViewInAr";
-import * as React from "react";
-import JSIcon from "../demo-components/icons/JSIcon";
-import TSIcon from "../demo-components/icons/TSIcon";
-import { Highlighter } from "rc-highlight";
-import { UserContext } from "../../globals/contexts/UserContext";
-interface ShowDemoCodeProps {
-  codeSandboxJS?: string;
-  codeSandboxTS?: string;
-  codeSplittedJS?: string;
-  codeSplittedTS?: string;
-  codeCompleteJS?: string;
-  codeCompleteTS?: string;
-  splittedOnly?: boolean;
-}
-const ShowDemoCode: React.FC<ShowDemoCodeProps> = (
-  props: ShowDemoCodeProps
-) => {
-  const {
-    codeSandboxJS = "https://codesandbox.io/s/dropzone-ui-basic-3j01v",
-    codeSandboxTS = "https://codesandbox.io/s/dropzone-ui-basic-3j01v",
-    codeCompleteJS = "",
-    codeCompleteTS = "",
-    codeSplittedJS = "",
-    codeSplittedTS = "",
-    splittedOnly = false,
-  } = props;
-  const [showComplete, setShowComplete] = React.useState(false);
-  const [showJS, setShowJS] = React.useState(true);
-
-  const [usuario, ] = React.useContext(UserContext);
-  const darkMode = usuario.darkMode;
-
-  const code: string = showComplete
-    ? showJS
-      ? codeCompleteJS
-      : codeCompleteTS
-    : showJS
-    ? codeSplittedJS
-    : codeSplittedTS;
-
-  return (
-    <React.Fragment>
-      {!splittedOnly && (
-        <Stack
-          direction={"row"}
-          justifyContent="space-between"
-          style={{ margin: "20px 0" }}
-        >
-          <Stack direction={"row"} justifyContent="flex-start">
-            {code.length > 0 && (
-              <ButtonGroup
-                variant="outlined"
-                aria-label="outlined button group"
-              >
-                <Button
-                  size="small"
-                  style={
-                    showJS ? { backgroundColor: "rgba(4, 35, 84, 0.09)" } : {}
-                  }
-                  //startIcon={}
-                  onClick={() => setShowJS(true)}
-                >
-                  <JSIcon color={darkMode?"rgb(178, 186, 194)":"rgb(45, 56, 67)"}/>
-                </Button>
-                <Button
-                  size="small"
-                  style={
-                    !showJS ? { backgroundColor: "rgba(4, 35, 84, 0.09)" } : {}
-                  }
-                  //  endIcon={}
-                  onClick={() => setShowJS(false)}
-                >
-                  <TSIcon color={darkMode?"rgb(178, 186, 194)":"rgb(45, 56, 67)"}/>
-                </Button>
-              </ButtonGroup>
-            )}
-          </Stack>
-
-          <Stack direction={"row"} justifyContent="flex-end" spacing={1}>
-            <Tooltip title={showComplete ? "Hide full code" : "Show full code"}>
-              <IconButton
-                style={{ borderRadius: "50%", border: "0.5px solid #eaeef3" }}
-                onClick={() => setShowComplete((showComplete) => !showComplete)}
-                //color="secondary"
-                aria-label="upload picture"
-                component="label"
-              >
-                <CodeIcon /* htmlColor="white" */ />
-              </IconButton>
-            </Tooltip>
-            <Tooltip title={"Edit in CodeSandBox"}>
-              <IconButton
-                style={{ borderRadius: "50%", border: "0.5px solid #eaeef3" }}
-                onClick={() => {
-                  window?.open(
-                    showJS ? codeSandboxJS : codeSandboxTS,
-                    "_blank"
-                  );
-                }}
-                //color="secondary"
-                aria-label="upload picture"
-                component="label"
-              >
-                <ViewInArIcon /* htmlColor="white" */ />
-              </IconButton>
-            </Tooltip>
-          </Stack>
-        </Stack>
-      )}
-      <Highlighter
-        onCopyToClipboard={(code_) => {
-          console.log("code copied to clipboard: ");
-          console.log(code_);
-        }}
-        style={{
-          margin: "20px 0",
-          fontSize: "15px",
-          lineHeight: "",
-        }}
-      >
-        {code}
-      </Highlighter>
-    </React.Fragment>
-  );
-};
-export default ShowDemoCode;
diff --git a/src/components/switch/FileCardMosaicSwitch.jsx b/src/components/switch/FileCardMosaicSwitch.jsx
deleted file mode 100644
index adaf57d52ab961f8df778507649f8947b9f979cc..0000000000000000000000000000000000000000
--- a/src/components/switch/FileCardMosaicSwitch.jsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import * as React from "react";
-import Radio from "@mui/material/Radio";
-import RadioGroup from "@mui/material/RadioGroup";
-import FormControlLabel from "@mui/material/FormControlLabel";
-import FormControl from "@mui/material/FormControl";
-import FormLabel from "@mui/material/FormLabel";
-
-export default function FileCardMosaicSwitch({
-  value,
-  onChange,
-  withInput = false,
-  row = false,
-}) {
-  //const [value, setValue] = React.useState('female');
-
-  const handleChange = (event) => {
-    //setValue(event.target.value);
-    onChange?.(event.target.value);
-  };
-
-  return (
-    <FormControl>
-      <FormLabel id="demo-controlled-radio-buttons-group">Component</FormLabel>
-      <RadioGroup
-        aria-labelledby="demo-controlled-radio-buttons-group"
-        name="controlled-radio-buttons-group"
-        value={value}
-        onChange={handleChange}
-        row={row ? undefined : "horizontal"}
-      >
-        <FormControlLabel
-          value="FileMosaic"
-          control={<Radio />}
-          label={withInput ? "<FileMosaic/> & <Dropzone/>" : "<FileMosaic/>"}
-        />
-        <FormControlLabel
-          value="FileCard"
-          control={<Radio />}
-          label={withInput ? "<FileCard/> & <FileInputButton/>" : "<FileCard/>"}
-        />
-      </RadioGroup>
-    </FormControl>
-  );
-}
diff --git a/src/components/typeHighlight/TypeHighlight.scss b/src/components/typeHighlight/TypeHighlight.scss
deleted file mode 100644
index 09626fc33465a15c129168eb98a4473e16731623..0000000000000000000000000000000000000000
--- a/src/components/typeHighlight/TypeHighlight.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-.type-highlight {
-  color: rgb(147, 41, 129);
-  //color: #ef7ed1;
-
-  font-size: 0.9125rem;
-  line-height: 1.6;
- // word-break: break-all;
-  padding: 0px 5px;
-  display: inline-block;
-  &.np{
-    padding: 0;
-  }
-  &.darkmode{
-    color: #ffb6ec;
-  } 
-}
diff --git a/src/components/typeHighlight/TypeHighlight.tsx b/src/components/typeHighlight/TypeHighlight.tsx
deleted file mode 100644
index f52e725aee9c52959f5273b06663a9c1ae0f2446..0000000000000000000000000000000000000000
--- a/src/components/typeHighlight/TypeHighlight.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import * as React from "react";
-import { UserContext } from "../../globals/contexts/UserContext";
-import "./TypeHighlight.scss";
-
-interface TypeHighlightProps {
-  children?: React.ReactNode;
-  np?: boolean;
-  size?: string;
-  darkMode?: boolean;
-}
-const TypeHighlight: React.FC<TypeHighlightProps> = (
-  props: TypeHighlightProps
-) => {
-  const { children, np, size } = props;
-  const [usuario, ] = React.useContext(UserContext);
-  const darkMode = usuario.darkMode;
-  const finaldarkmodeclassName = !darkMode
-    ? "type-highlight"
-    : "type-highlight darkmode";
-  const finalNpclassName = np
-    ? `${finaldarkmodeclassName} np`
-    : finaldarkmodeclassName;
-
-  return (
-    <div className={finalNpclassName} style={{ fontSize: size }}>
-      {children}
-    </div>
-  );
-};
-export default TypeHighlight;
diff --git a/src/components/util-components/AnchorToTab.tsx b/src/components/util-components/AnchorToTab.tsx
deleted file mode 100644
index a7847b3be3f3b2d7a4f509700fcd1cc7b06e82c1..0000000000000000000000000000000000000000
--- a/src/components/util-components/AnchorToTab.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import * as React from "react";
-type AnchorToTabProps = React.HTMLProps<HTMLAnchorElement>;
-const AnchorToTab: React.FC<AnchorToTabProps> = (props: AnchorToTabProps) => {
-  const { children, href, target, rel, ...rest } = props;
-  return (
-    <a
-      href={href}
-      target={target || "_blank"}
-      rel={rel || "noopener noreferrer"}
-      {...rest}
-    >
-      {children}
-    </a>
-  );
-};
-export default AnchorToTab;
diff --git a/src/data/ActionButtonItemAPIRows.tsx b/src/data/ActionButtonItemAPIRows.tsx
deleted file mode 100644
index 384ad25b5844771dffcfbbe75e14f8fbaf531566..0000000000000000000000000000000000000000
--- a/src/data/ActionButtonItemAPIRows.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const ActionButtonItemAPIRows = [
-  {
-    name: "children",
-    type: <TypeHighlight np>React.ReactNode</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The content of the button.</>,
-  },
-  {
-    name: "label",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The label of the button.</>,
-  },
-
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object applied to the main container.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles. Classname is applied to the main container.
-      </>
-    ),
-  },
-  {
-    name: "resetStyles",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, the given class name and style properties will replace the
-        default ones instead of overriding them.
-      </>
-    ),
-  },
-  {
-    name: "onClick",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the button is clicked. If given, will replace the
-        default behaviour.{" "}
-      </>
-    ),
-  },
-  {
-    name: "disabled",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, the component is disabled.</>,
-  },
-];
diff --git a/src/data/ActionButtonsAPIRows.tsx b/src/data/ActionButtonsAPIRows.tsx
deleted file mode 100644
index 7fce373a1423b40a9ddd50100c44142700c0f174..0000000000000000000000000000000000000000
--- a/src/data/ActionButtonsAPIRows.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../components/util-components/AnchorToTab";
-
-export const ActionButtonsAPIRows = [
-  {
-    name: "position",
-    type: (
-      <>
-        <TypeHighlight np>{'"before"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"after"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>The position of the action buttons. Before or after the component.</>
-    ),
-  },
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object applied to the main container.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles. Classname is applied to the main container.
-      </>
-    ),
-  },
-  {
-    name: "uploadButton",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#actionbuttonitem">{"ActionButtonItem"}</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, the upload button will be shown. Specific props applied to the upload button.
-        Type definition can be found{" "}
-        <AnchorToTab href="/types#actionbuttonitem">{"here"}</AnchorToTab>.
-      </>
-    ),
-  },
-  {
-    name: "abortButton",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#actionbuttonitem">{"ActionButtonItem"}</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, the abort button will be shown. Specific props applied to the abort button.
-        Type definition can be found{" "}
-        <AnchorToTab href="/types#actionbuttonitem">{"here"}</AnchorToTab>.
-      </>
-    ),
-  },
-  {
-    name: "deleteButton",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#actionbuttonitem">{"ActionButtonItem"}</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, the delete button will be shown. Specific props applied to the delete button.
-        Type definition can be found{" "}
-        <AnchorToTab href="/types#actionbuttonitem">{"here"}</AnchorToTab>.
-      </>
-    ),
-  },
-  {
-    name: "cleanButton",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#actionbuttonitem">{"ActionButtonItem"}</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, the clean button will be shown. Specific props applied to the clean button.
-        Type definition can be found{" "}
-        <AnchorToTab href="/types#actionbuttonitem">{"here"}</AnchorToTab>.
-      </>
-    ),
-  },
-];
diff --git a/src/data/AvatarAPIPropsRows.tsx b/src/data/AvatarAPIPropsRows.tsx
deleted file mode 100644
index 4dbf77758fc4fe35d541986292e296a00764f19d..0000000000000000000000000000000000000000
--- a/src/data/AvatarAPIPropsRows.tsx
+++ /dev/null
@@ -1,157 +0,0 @@
-import CodeHighlight from "../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../components/util-components/AnchorToTab";
-
-export const AvatarAPIPropsRows = [
-  {
-    name: "readOnly",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true and if a src is given, then avatar will show the image and will
-        not allow the user to change the picture. Also, layer on hover will not
-        be shown
-      </>
-    ),
-  },
-  {
-    name: "src",
-    type: (
-      <>
-        <TypeHighlight np>{"string"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"File"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Image source in string format (URL) or File Object (Will be read as
-        URL).
-      </>
-    ),
-  },
-  {
-    name: "alt",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>Alternative label when an error occurs on loading the image</>
-    ),
-  },
-  {
-    name: "onChange",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when an image file is selected.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(selectedFile: File) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "accept",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np>{"image/*"}</TypeHighlight>,
-    description: (
-      <>
-        A comma-separated list of one or more file types, or{" "}
-        <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept#unique_file_type_specifiers">
-          unique file type specifiers
-        </AnchorToTab>
-        , describing which file types to allow. The default implementation of
-        accept checks the file's mime type or extension against this list. More
-        information can be found{" "}
-        <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept">
-          here
-        </AnchorToTab>
-        .
-      </>
-    ),
-  },
-
-  {
-    name: "emptyLabel",
-    type: <TypeHighlight np>React.ReactNode</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>Label to be displayed when image source is not set.</>,
-  },
-  {
-    name: "changeLabel",
-    type: <TypeHighlight np>React.ReactNode</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>Label to be displayed when there is a valid source set.</>,
-  },
-  {
-    name: "loadingLabel",
-    type: <TypeHighlight np>React.ReactNode</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Label to be displayed when "isLoading" prop is set set. This will cover
-        the current image.
-      </>
-    ),
-  },
-  {
-    name: "isLoading",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, loadingLabel will be shown.</>,
-  },
-  {
-    name: "onError",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>Callback fired when an error occured on loading the image.</>
-    ),
-  },
-  {
-    name: "smartImgFit",
-    type: (
-      <>
-        <TypeHighlight np>false</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"orientation"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight>{'"center"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"center"'}</TypeHighlight>,
-    description: (
-      <>
-        If false, image width will be set to 100%.
-        <br />
-        If present, image will be analized and displayed according to its heigh
-        and width. Image with height greater than its width has a "portrait"
-        orientation. Otherwise it has a "landscape" orientation. .
-        <ul>
-          <li>
-            If value is "center", image will be centered and will not be
-            displayed complete. This the empty space is avoided. This is achived
-            by giving 100% to width prop if the orientation is "portrait". When
-            orientation is "landscape", height prop will be set to 100%.
-          </li>
-          <li>
-            If value is "orientation", image will be displayed complete by
-            giving 100% to width prop if the orientation is "landscape". When
-            orientation is "portrait", height prop will be set to 100%. Some
-            images will show an empty space.
-          </li>
-        </ul>
-      </>
-    ),
-  },
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object.</>,
-  },
-];
diff --git a/src/data/DropzoneAPIPropsRows.tsx b/src/data/DropzoneAPIPropsRows.tsx
deleted file mode 100644
index cb69fff46ac3149fd2dd12016cc60154eaa19b87..0000000000000000000000000000000000000000
--- a/src/data/DropzoneAPIPropsRows.tsx
+++ /dev/null
@@ -1,410 +0,0 @@
-import CodeHighlight from "../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../components/util-components/AnchorToTab";
-
-export const DropzoneAPIPropsRows = [
-  {
-    name: "value",
-    type: <TypeHighlight np>{"ExtFile"}</TypeHighlight>,
-    default: <TypeHighlight np>{"[]"}</TypeHighlight>,
-    description: (
-      <>
-        Just like any other input component. The value of the input element,
-        required for a controlled component.
-      </>
-    ),
-  },
-  {
-    name: "onChange",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Probably one of the most important methods (callbacks). Returns as first
-        parameter an array of `ExtFile` objects. This callback is fired when the
-        delete icon is clicked. If set, the delete icon will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(files: ExtFile[]) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  // Validation stage
-  {
-    name: "accept",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A comma-separated list of one or more file types, or{" "}
-        <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept#unique_file_type_specifiers">
-          unique file type specifiers
-        </AnchorToTab>
-        , describing which file types to allow. The default implementation of
-        accept checks the file's mime type or extension against this list. More
-        information can be found{" "}
-        <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept">
-          here
-        </AnchorToTab>
-        .
-      </>
-    ),
-  },
-  {
-    name: "maxFiles",
-    type: <TypeHighlight np>number</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The max number of files to be accepted.</>,
-  },
-  {
-    name: "maxFileSize",
-    type: <TypeHighlight np>number</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The max file size allowed in bytes.</>,
-  },
-  {
-    name: "validator",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the delete icon is clicked. If set, the delete icon
-        will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(f: File) => "}{" "}
-          <AnchorToTab href="/types#validatefileresponse">
-            ValidateFileResponse
-          </AnchorToTab>
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onClean",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the clean icon is clicked. If set and if validation
-        is active, the clean icon will be shown.
-      </>
-    ),
-  },
-  {
-    name: "autoClean",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, the component will automatically remove non valid files when
-        user drops files or selects them from file dialog. This flag will only
-        work if validation is active.
-      </>
-    ),
-  },
-  {
-    name: "cleanFiles",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, "clean" button will be shown and every time user clicks the
-        buttom it will trigger the default "clean operation": Remove non valid
-        files. This flag will only work if validation is active.
-      </>
-    ),
-  },
-  ///////////////         UPLOAD STAGE        ///////////////
-  {
-    name: "uploadConfig",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#uploadconfig">UploadConfig</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The configuration needed for uploading the files. If not set or or
-        uploadConfig.url is undefined the upload button will not be visible and
-        uploadOnDrop prop flag will not work.
-      </>
-    ),
-  },
-  {
-    name: "fakeUpload",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, the component will simulate the upload operation by randomly
-        setting the upload status and message on each uploadable{" "}
-        <TypeHighlight>ExtFile</TypeHighlight>. It will also set a fake
-        progress. Will also ignore the uploadConfig prop and will show the
-        upload button
-      </>
-    ),
-  },
-  {
-    name: "onUploadStart",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the upload process starts.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(uploadAbleFiles: ExtFile[]) => void"}</CodeHighlight>
-        <ul>
-          <li>uploadAbleFiles: The list of files to be uploaded.</li>
-        </ul>
-      </>
-    ),
-  },
-  {
-    name: "onUploadFinish",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the upload process ends.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(uploadedFiles: ExtFile[]) => void"}</CodeHighlight>
-        <ul>
-          <li>uploadAbleFiles: The list of uploaded files.</li>
-        </ul>
-      </>
-    ),
-  },
-  ///////////////          STYLING          ///////////
-
-  {
-    name: "background",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np>{'"transparent'}</TypeHighlight>,
-    description: <>The background color for dropzone container.</>,
-  },
-  {
-    name: "color",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np>{'"#646c7f"'}</TypeHighlight>,
-    description: <>The main color for dropzone labels and borders.</>,
-  },
-  {
-    name: "minHeight",
-    type: (
-      <>
-        <TypeHighlight np>string</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>number</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"180px"'}</TypeHighlight>,
-    description: (
-      <>
-        The min height of the component. If the value is given in number format,
-        "px" will be assumed
-      </>
-    ),
-  },
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object applied to the main container.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles. Classname is applied to the main container.
-      </>
-    ),
-  },
-
-  {
-    name: "label",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The label to place when no files were selected.</>,
-  },
-  {
-    name: "localization",
-    type: (
-      <>
-        <TypeHighlight np>{'"EN-en"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ES-es"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"FR-fr"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"IT-it"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"PT-pt"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"RU-ru"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-cn"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-hk"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"EN-en"'}</TypeHighlight>,
-    description: <>The language in which text labels are shown.</>,
-  },
-  {
-    name: "disableRipple",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, will not show a ripple effect everytime the user drops files or
-        clicks the dropzone for selecting files.
-      </>
-    ),
-  },
-  /// DRAG OPERATIONS
-  {
-    name: "onDragEnter",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Method for performing specific tasks on drag enter operations.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(evt: React.DragEvent<HTMLDivElement>) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onDragLeave",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Method for performing specific tasks on drag leave operations.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(evt: React.DragEvent<HTMLDivElement>) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  //ACTION BUTTONS
-  {
-    name: "actionButtons",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#actionbuttons">ActionButtons</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, buttons will be added before or after of the component. This
-        buttons triggresthe common opertions of the component such as clean,
-        upload, abort and delete all.
-      </>
-    ),
-  },
-  {
-    name: "dropOnLayer",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, the drop operation will be performed in a layer that covers the
-        complete component container.
-      </>
-    ),
-  },
-  {
-    name: "footer",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If false, hides the dropzone footer.</>,
-  },
-  {
-    name: "header",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If false, hides the dropzone header.</>,
-  },
-
-  {
-    name: "headerConfig",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#headerconfig">HeaderConfig</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>Configuration related to the dropzone header.</>,
-  },
-  {
-    name: "footerConfig",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/types#footerconfig">FooterConfig</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>Configuration related to the dropzone footer.</>,
-  },
-  {
-    name: "disabled",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, the component is disabled.</>,
-  },
-  {
-    name: "clickable",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: (
-      <>
-        If false, the component will not be clickable. So, file dialog will not
-        be opened.
-      </>
-    ),
-  },
-  {
-    name: "behaviour",
-    type: (
-      <>
-        <TypeHighlight np>{'"add"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"replace"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"add"'}</TypeHighlight>,
-    description: <>The behaviour when new files are selected or dropped</>,
-  },
-  {
-    name: "children",
-    type: <TypeHighlight np>React.ReactNode</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The content of the dropozone. Tipically it is an array of{" "}
-        <CodeHighlight>{"<FileMosaic/>"}</CodeHighlight> components.
-      </>
-    ),
-  },
-];
diff --git a/src/data/ExtFileAPIRows.tsx b/src/data/ExtFileAPIRows.tsx
deleted file mode 100644
index 146e804fecb8447e5667a73c79691d11419a492b..0000000000000000000000000000000000000000
--- a/src/data/ExtFileAPIRows.tsx
+++ /dev/null
@@ -1,158 +0,0 @@
-import CodeHighlight from "../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../components/util-components/AnchorToTab";
-export const ExtFileAPIRows = (darkMode = false) => [
-  {
-    name: "id",
-    type: (
-      <>
-        {" "}
-        <TypeHighlight darkMode={darkMode} np>
-          {"string"}
-        </TypeHighlight>{" "}
-        {" | "}
-        <TypeHighlight darkMode={darkMode} np>{"number"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>The identifier of the file</>,
-  },
-  {
-    name: "file",
-    type: <TypeHighlight darkMode={darkMode} np>{"File"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>The file object obtained from client drop or selection</>,
-  },
-  {
-    name: "name",
-    type: <TypeHighlight darkMode={darkMode} np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>The name of the file</>,
-  },
-  {
-    name: "type",
-    type: <TypeHighlight darkMode={darkMode} np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>The file mime type.</>,
-  },
-
-  {
-    name: "size",
-    type: <TypeHighlight darkMode={darkMode} np>{"number"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>The size of the file in bytes.</>,
-  },
-  {
-    name: "valid",
-    type: <TypeHighlight darkMode={darkMode} np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: (
-      <>
-        If present, it will show a valid or rejected message ("valid",
-        "denied"). By default valid is <CodeHighlight darkMode={darkMode}>undefined</CodeHighlight>.
-      </>
-    ),
-  },
-  {
-    name: "errors",
-    type: <TypeHighlight darkMode={darkMode} np>{"string[]"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: (
-      <>
-        The list of errors according to the validation criteria or the result of
-        the given custom validation function.
-      </>
-    ),
-  },
-  {
-    name: "uploadStatus",
-    type: (
-      <TypeHighlight darkMode={darkMode} np>
-        <AnchorToTab href="/types#uploadstatus">{"UPLOADSTATUS"}</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>The current upload status. (e.g. "uploading").</>,
-  },
-  {
-    name: "uploadMessage",
-    type: <TypeHighlight darkMode={darkMode} np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>A message that shows the result of the upload process.</>,
-  },
-  {
-    name: "imageUrl",
-    type: <TypeHighlight darkMode={darkMode} np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: (
-      <>
-        A string representation or web url of the image that will be set to the
-        "src" prop of an <CodeHighlight darkMode={darkMode}>{"<img/>"}</CodeHighlight> tag. If
-        given, the component will use this image source instead of reading the
-        image file.
-      </>
-    ),
-  },
-  {
-    name: "downloadUrl",
-    type: <TypeHighlight darkMode={darkMode} np>string</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: (
-      <>
-        The url to be used to perform a GET request in order to download the
-        file. If defined, the download icon will be shown.
-      </>
-    ),
-  },
-  {
-    name: "progress",
-    type: <TypeHighlight darkMode={darkMode} np>number</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np>undefined</TypeHighlight>,
-    description: (
-      <>
-        The current percentage of upload progress. This value will have a higher
-        priority over the upload progress value calculated inside the component.
-      </>
-    ),
-  },
-  {
-    name: "extraUploadData",
-    type: <TypeHighlight darkMode={darkMode} np>{"Record<string, any>"}</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: (
-      <>
-        The additional data that will be sent to the server when files are
-        uploaded individually
-      </>
-    ),
-  },
-  {
-    name: "extraData",
-    type: <TypeHighlight darkMode={darkMode} np>Object</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>Any kind of extra data that could be needed.</>,
-  },
-  {
-    name: "serverResponse",
-    type: (
-      <TypeHighlight darkMode={darkMode} np>
-        <AnchorToTab href="/api/dropzone#serverresponse">
-          ServerResponse
-        </AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: <>The upload response from server.</>,
-  },
-  {
-    name: "xhr",
-    type: <TypeHighlight darkMode={darkMode} np>XMLHttpRequest</TypeHighlight>,
-    default: <TypeHighlight darkMode={darkMode} np></TypeHighlight>,
-    description: (
-      <>
-        A reference to the XHR object that allows the upload, progress and abort
-        events.
-      </>
-    ),
-  },
-];
diff --git a/src/data/FileCardAPIPropsRows.tsx b/src/data/FileCardAPIPropsRows.tsx
deleted file mode 100644
index 94cd2d4f05a96e0d0d6a33315e123ff4b08eadfa..0000000000000000000000000000000000000000
--- a/src/data/FileCardAPIPropsRows.tsx
+++ /dev/null
@@ -1,409 +0,0 @@
-import CodeHighlight from "../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-export const FileCardAPIPropsRows = [
-  {
-    id: 0,
-    name: "alwaysActive",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: (
-      <>
-        Flag that makes all buttons visible. If{" "}
-        <TypeHighlight np>false</TypeHighlight>, the buttons and info will be
-        visible only when user triggers the hover event.
-      </>
-    ),
-  },
-  {
-    id: 1,
-    name: "elevation",
-    type: (
-      <>
-        <TypeHighlight np>false</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>0</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>1</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>2</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>3</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>4</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>5</TypeHighlight>
-        {" | ..."}
-        <TypeHighlight np>24</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'0'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'1'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'2'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'3'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'4'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'5'"}</TypeHighlight>
-        {" | "}
-        {"..."}
-        <TypeHighlight np>{"'24'"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>4</TypeHighlight>,
-    description: (
-      <>
-        Shadow depth for the FileItem container. It accepts values between 0 and
-        24 inclusive.
-      </>
-    ),
-  },
-  {
-    id: 2,
-    name: "errors",
-    type: <TypeHighlight np>{"string[]"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The list of errors according to the validation criteria or the result of
-        the given custom validation function.
-      </>
-    ),
-  },
-  {
-    id: 5,
-    name: "id",
-    type: (
-      <>
-        {" "}
-        <TypeHighlight np>{"string"}</TypeHighlight> {" | "}
-        <TypeHighlight np>{"number"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The identifier of the file</>,
-  },
-  {
-    id: 3,
-    name: "file",
-    type: <TypeHighlight np>{"File"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The file object obtained from client drop or selection</>,
-  },
-  {
-    name: "name",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The name of the file</>,
-  },
-  {
-    name: "type",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The file mime type.</>,
-  },
-  {
-    name: "size",
-    type: <TypeHighlight np>{"number"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The size of the file in bytes.</>,
-  },
-  {
-    name: "valid",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If present, it will show a valid or rejected message ("valid",
-        "denied"). By default valid is <CodeHighlight>undefined</CodeHighlight>.
-      </>
-    ),
-  },
-  {
-    id: 6,
-    name: "info",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, the info button will be visible</>,
-  },
-  {
-    id: 7,
-    name: "imageUrl",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A string representation or web url of the image that will be set to the
-        "src" prop of an <CodeHighlight>{"<img/>"}</CodeHighlight> tag. If
-        given, the component will use this image source instead of reading the
-        image file.
-      </>
-    ),
-  },
-  {
-    id: 7,
-    name: "backgroundBlurImage",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If true, a background blur image will be shown</>,
-  },
-  {
-    id: 7,
-    name: "darkMode",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, dark mode colors are used in the component.</>,
-  },
-  {
-    name: "localization",
-    type: (
-      <>
-        <TypeHighlight np>{'"EN-en"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ES-es"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"FR-fr"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"IT-it"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"PT-pt"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"RU-ru"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-cn"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-hk"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"EN-en"'}</TypeHighlight>,
-    description: <>The language in which text labels are shown.</>,
-  },
-  {
-    name: "progress",
-    type: <TypeHighlight np>number</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The current percentage of upload progress. This value will have a higher
-        priority over the upload progress value calculated inside the component.
-      </>
-    ),
-  },
-  {
-    name: "xhr",
-    type: <TypeHighlight np>XMLHttpRequest</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A reference to the XHR object that allows the upload, progress and abort
-        events.
-      </>
-    ),
-  },
-  {
-    name: "onSee",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the see icon is clicked. If set, the see icon will
-        be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {" (imageSource: string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onWatch",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the play icon is clicked. If set, the play icon will
-        be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(videoSource: File | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onDelete",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the delete icon is clicked. If set, the delete icon
-        will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(fileId: number | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onAbort",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the abort icon is clicked. If set, the abort icon
-        will be shown during the upload stage.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(fileId: number | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onCancel",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the cancel icon is clicked. If set, the cancel icon
-        will be shown only before the upload stage has started during the
-        preparing phase.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(fileId: number | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onDownload",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the download icon is clicked. If set, the download
-        icon will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {
-            "(fileId: number | string | undefined, downloadUrl?: string) => void"
-          }
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onClick",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the component is clicked if set.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(evt: React.MouseEvent) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onDoubleClick",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the component is double clicked if set.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(evt: React.MouseEvent) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onRightClick",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the component is right clicked if set.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{" (evt: React.MouseEvent) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "resultOnTooltip",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If present a tooltip that contains the upload message will be diplayed
-        on hover.
-      </>
-    ),
-  },
-  {
-    name: "downloadUrl",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The url to be used to perform a GET request in order to download the
-        file. If defined, the download icon will be shown.
-      </>
-    ),
-  },
-  {
-    name: "smartImgFit",
-    type: (
-      <>
-        <TypeHighlight np>false</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"orientation"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight>{'"center"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"orientation"'}</TypeHighlight>,
-    description: (
-      <>
-        If false, image width will be set to 100%.
-        <br />
-        If present, image will be analized and displayed according to its heigh
-        and width. Image with height greater than its width has a "portrait"
-        orientation. Otherwise it has a "landscape" orientation. .
-        <ul>
-          <li>
-            If value is "orientation", image will be displayed complete by
-            giving 100% to width prop if the orientation is "landscape". When
-            orientation is "portrait", height prop will be set to 100%. Some
-            images will show an empty space.
-          </li>
-          <li>
-            If value is "center", image will be centered and will not be
-            displayed complete. This the empty space is avoided. This is achived
-            by giving 100% to width prop if the orientation is "portrait". When
-            orientation is "landscape", height prop will be set to 100%.
-          </li>
-        </ul>
-      </>
-    ),
-  },
-];
diff --git a/src/data/FileInputButtonPropsRows.tsx b/src/data/FileInputButtonPropsRows.tsx
deleted file mode 100644
index a8ca9de1080bf42125c7b27f44c4f2328fd1c08f..0000000000000000000000000000000000000000
--- a/src/data/FileInputButtonPropsRows.tsx
+++ /dev/null
@@ -1,281 +0,0 @@
-import CodeHighlight from "../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../components/util-components/AnchorToTab";
-
-export const FileInputButtonPropsRows = [
-  {
-    name: "value",
-    type: <TypeHighlight np>{"ExtFile"}</TypeHighlight>,
-    default: <TypeHighlight np>{"[]"}</TypeHighlight>,
-    description: (
-      <>
-        Just like any other input component. The value of the input element,
-        required for a controlled component.
-      </>
-    ),
-  },
-  {
-    name: "onChange",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Probably one of the most important methods (callbacks). Returns as first
-        parameter an array of `ExtFile` objects. This callback is fired when the
-        delete icon is clicked. If set, the delete icon will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(files: ExtFile[]) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  // Validation stage
-  {
-    name: "accept",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A comma-separated list of one or more file types, or{" "}
-        <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept#unique_file_type_specifiers">
-          unique file type specifiers
-        </AnchorToTab>
-        , describing which file types to allow. The default implementation of
-        accept checks the file's mime type or extension against this list. More
-        information can be found{" "}
-        <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept">
-          here
-        </AnchorToTab>
-        .
-      </>
-    ),
-  },
-  {
-    name: "maxFiles",
-    type: <TypeHighlight np>number</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The max number of files to be accepted.</>,
-  },
-  {
-    name: "maxFileSize",
-    type: <TypeHighlight np>number</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The max file size allowed in bytes.</>,
-  },
-  {
-    name: "validator",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the delete icon is clicked. If set, the delete icon
-        will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(f: File) => "}{" "}
-          <AnchorToTab href="/api/types#validatefileresponse">
-            ValidateFileResponse
-          </AnchorToTab>
-        </CodeHighlight>
-      </>
-    ),
-  },
-
-  {
-    name: "autoClean",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, the component will automatically remove non valid files when
-        user drops files or selects them from file dialog. This flag will only
-        work if validation is active.
-      </>
-    ),
-  },
-
-  ///////////////         UPLOAD STAGE        ///////////////
-  {
-    name: "uploadConfig",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/api/types#uploadconfig">UploadConfig</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The configuration needed for uploading the files. If not set or or
-        uploadConfig.url is undefined the upload button will not be visible and
-        uploadOnDrop prop flag will not work.
-      </>
-    ),
-  },
-  {
-    name: "fakeUpload",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, the component will simulate the upload operation by randomly
-        setting the upload status and message on each uploadable{" "}
-        <TypeHighlight>ExtFile</TypeHighlight>. It will also set a fake
-        progress. Will also ignore the uploadConfig prop and will show the
-        upload button
-      </>
-    ),
-  },
-  {
-    name: "onUploadStart",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the upload process starts.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(uploadAbleFiles: ExtFile[]) => void"}</CodeHighlight>
-        <ul>
-          <li>uploadAbleFiles: The list of files to be uploaded.</li>
-        </ul>
-      </>
-    ),
-  },
-  {
-    name: "onUploadFinish",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the upload process ends.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(uploadedFiles: ExtFile[]) => void"}</CodeHighlight>
-        <ul>
-          <li>uploadAbleFiles: The list of uploaded files.</li>
-        </ul>
-      </>
-    ),
-  },
-  ///////////////          STYLING          ///////////
-
-  {
-    name: "color",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np>{'"#646c7f"'}</TypeHighlight>,
-    description: <>The main color for background, hover and borders.</>,
-  },
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object.</>,
-  },
-  {
-    name: "textColor",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np>{'"transparent'}</TypeHighlight>,
-    description: <>The color of the text.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles.
-      </>
-    ),
-  },
-
-  {
-    name: "label",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The text label for the button.</>,
-  },
-  {
-    name: "localization",
-    type: (
-      <>
-        <TypeHighlight np>{'"EN-en"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ES-es"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"FR-fr"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"IT-it"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"PT-pt"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"RU-ru"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-cn"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-hk"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"EN-en"'}</TypeHighlight>,
-    description: <>The language in which text labels are shown.</>,
-  },
-  {
-    name: "disableRipple",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, will not show a ripple effect everytime the user clicks the
-        components for selecting files.
-      </>
-    ),
-  },
-
-  //ACTION BUTTONS
-  {
-    name: "actionButtons",
-    type: (
-      <TypeHighlight np>
-        <AnchorToTab href="/api/types#actionbuttons">ActionButtons</AnchorToTab>
-      </TypeHighlight>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If set, buttons will be added before or after of the component. This
-        buttons triggresthe common opertions of the component such as clean,
-        upload, abort and delete all.
-      </>
-    ),
-  },
-
-  {
-    name: "disabled",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, the component is disabled.</>,
-  },
-  {
-    name: "behaviour",
-    type: (
-      <>
-        <TypeHighlight np>{'"add"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"replace"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"add"'}</TypeHighlight>,
-    description: <>The behaviour when new files are selected or dropped</>,
-  },
-  {
-    name: "children",
-    type: <TypeHighlight np>React.ReactNode</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The content of the component.</>,
-  },
-];
diff --git a/src/data/FileMosaicAPIPropsRows.tsx b/src/data/FileMosaicAPIPropsRows.tsx
deleted file mode 100644
index 5fd7513da530e5c9b1b5ed7cbc54d383ff70a831..0000000000000000000000000000000000000000
--- a/src/data/FileMosaicAPIPropsRows.tsx
+++ /dev/null
@@ -1,410 +0,0 @@
-import CodeHighlight from "../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-export const FileMosaicAPIPropsRows = [
-  {
-    id: 0,
-    name: "alwaysActive",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: (
-      <>
-        Flag that makes all buttons visible. If{" "}
-        <TypeHighlight np>false</TypeHighlight>, the buttons and info will be
-        visible only when user triggers the hover event.
-      </>
-    ),
-  },
-  /* {
-    id: 1,
-    name: "elevation",
-    type: (
-      <>
-        <TypeHighlight np>false</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>0</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>1</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>2</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>3</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>4</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>5</TypeHighlight>
-        {" | ..."}
-        <TypeHighlight np>24</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'0'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'1'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'2'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'3'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'4'"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"'5'"}</TypeHighlight>
-        {" | "}
-        {"..."}
-        <TypeHighlight np>{"'24'"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>4</TypeHighlight>,
-    description: (
-      <>
-        Shadow depth for the FileItem container. It accepts values between 0 and
-        24 inclusive.
-      </>
-    ),
-  }, */
-  
-  {
-    id: 5,
-    name: "id",
-    type: (
-      <>
-        {" "}
-        <TypeHighlight np>{"string"}</TypeHighlight> {" | "}
-        <TypeHighlight np>{"number"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The identifier of the file</>,
-  },
-  {
-    id: 3,
-    name: "file",
-    type: <TypeHighlight np>{"File"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The file object obtained from client drop or selection</>,
-  },
-  {
-    name: "name",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The name of the file</>,
-  },
-  {
-    name: "type",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The file mime type.</>,
-  },
-  {
-    name: "size",
-    type: <TypeHighlight np>{"number"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The size of the file in bytes.</>,
-  },
-  {
-    name: "valid",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If present, it will show a valid or rejected message ("valid",
-        "denied"). By default valid is <CodeHighlight>undefined</CodeHighlight>.
-      </>
-    ),
-  },
-  {
-    id: 2,
-    name: "errors",
-    type: <TypeHighlight np>{"string[]"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The list of errors according to the validation criteria or the result of
-        the given custom validation function.
-      </>
-    ),
-  },
-  {
-    id: 6,
-    name: "info",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, the info button will be visible</>,
-  },
-  {
-    id: 7,
-    name: "imageUrl",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A string representation or web url of the image that will be set to the
-        "src" prop of an <CodeHighlight>{"<img/>"}</CodeHighlight> tag. If
-        given, the component will use this image source instead of reading the
-        image file.
-      </>
-    ),
-  },
-  {
-    id: 7,
-    name: "backgroundBlurImage",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If true, a background blur image will be shown</>,
-  },
-  {
-    id: 7,
-    name: "darkMode",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np>false</TypeHighlight>,
-    description: <>If true, dark mode colors are used in the component.</>,
-  },
-  {
-    name: "localization",
-    type: (
-      <>
-        <TypeHighlight np>{'"EN-en"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ES-es"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"FR-fr"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"IT-it"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"PT-pt"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"RU-ru"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-cn"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"ZH-hk"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"EN-en"'}</TypeHighlight>,
-    description: <>The language in which text labels are shown.</>,
-  },
-  {
-    name: "progress",
-    type: <TypeHighlight np>number</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The current percentage of upload progress. This value will have a higher
-        priority over the upload progress value calculated inside the component.
-      </>
-    ),
-  },
-  {
-    name: "xhr",
-    type: <TypeHighlight np>XMLHttpRequest</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A reference to the XHR object that allows the upload, progress and abort
-        events.
-      </>
-    ),
-  },
-  {
-    name: "onSee",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the see icon is clicked. If set, the see icon will
-        be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {" (imageSource: string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onWatch",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the play icon is clicked. If set, the play icon will
-        be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(videoSource: File | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onDelete",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the delete icon is clicked. If set, the delete icon
-        will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(fileId: number | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onAbort",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the abort icon is clicked. If set, the abort icon
-        will be shown during the upload stage.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(fileId: number | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onCancel",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the cancel icon is clicked. If set, the cancel icon
-        will be shown only before the upload stage has started during the
-        preparing phase.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {"(fileId: number | string | undefined) => void"}
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onDownload",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the download icon is clicked. If set, the download
-        icon will be shown.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>
-          {
-            "(fileId: number | string | undefined, downloadUrl?: string) => void"
-          }
-        </CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onClick",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the component is clicked if set.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(evt: React.MouseEvent) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onDoubleClick",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the component is double clicked if set.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{"(evt: React.MouseEvent) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "onRightClick",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Callback fired when the component is right clicked if set.
-        <br />
-        <strong>Signature:</strong>
-        <br />
-        <CodeHighlight>{" (evt: React.MouseEvent) => void"}</CodeHighlight>
-      </>
-    ),
-  },
-  {
-    name: "resultOnTooltip",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If present a tooltip that contains the upload message will be diplayed
-        on hover.
-      </>
-    ),
-  },
-  {
-    name: "downloadUrl",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The url to be used to perform a GET request in order to download the
-        file. If defined, the download icon will be shown.
-      </>
-    ),
-  },
-  {
-    name: "smartImgFit",
-    type: (
-      <>
-        <TypeHighlight np>false</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"orientation"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight>{'"center"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"orientation"'}</TypeHighlight>,
-    description: (
-      <>
-        If false, image width will be set to 100%.
-        <br />
-        If present, image will be analized and displayed according to its heigh
-        and width. Image with height greater than its width has a "portrait"
-        orientation. Otherwise it has a "landscape" orientation. .
-        <ul>
-          <li>
-            If value is "orientation", image will be displayed complete by
-            giving 100% to width prop if the orientation is "landscape". When
-            orientation is "portrait", height prop will be set to 100%. Some
-            images will show an empty space.
-          </li>
-          <li>
-            If value is "center", image will be centered and will not be
-            displayed complete. This the empty space is avoided. This is achived
-            by giving 100% to width prop if the orientation is "portrait". When
-            orientation is "landscape", height prop will be set to 100%.
-          </li>
-        </ul>
-      </>
-    ),
-  },
-];
diff --git a/src/data/FilesUiConfigAPIRows.tsx b/src/data/FilesUiConfigAPIRows.tsx
deleted file mode 100644
index 53d2ebdf36e7686c9409b57b242641623a7cc825..0000000000000000000000000000000000000000
--- a/src/data/FilesUiConfigAPIRows.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const FilesUiConfigAPIRows = [
-  {
-    name: "success",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If true, it means that the request was successful.</>,
-  },
-  {
-    name: "message",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>A message that describes the result of the request.</>,
-  },
-  {
-    name: "payload",
-    type: <TypeHighlight np>Object</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The response of the server.</>,
-  },
-];
diff --git a/src/data/FooterConfigAPIRows.tsx b/src/data/FooterConfigAPIRows.tsx
deleted file mode 100644
index fb75138072fa02182b1d982ef273d05d7fa3982d..0000000000000000000000000000000000000000
--- a/src/data/FooterConfigAPIRows.tsx
+++ /dev/null
@@ -1,94 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const FooterConfigAPIRows = [
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object applied to the main container.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles. Classname is applied to the main container.
-      </>
-    ),
-  },
-  {
-    name: "resetStyles",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, the given class name and style properties will replace the
-        default ones instead of overriding them.
-      </>
-    ),
-  },
-
-  {
-    name: "allowedTypesLabel",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: (
-      <>
-        If false, the label that indicates the allowed files types will not be
-        shown.
-      </>
-    ),
-  },
-  {
-    name: "uploadProgressMessage",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: (
-      <>
-        If false, the label that indicates the current upload progress will not
-        be shown.
-      </>
-    ),
-  },
-  {
-    name: "uploadResultMessage",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: (
-      <>
-        If false, the label that indicates the final result of the upload
-        progress will not be shown.
-      </>
-    ),
-  },
-  {
-    name: "noMissingFilesLabel",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: (
-      <>
-        If false, the label that indicates that there are not files missing to
-        upload will not be shown.
-      </>
-    ),
-  },
-  {
-    name: "customMessage",
-    type: <TypeHighlight np>JSX.Element</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>A custom message to display in the footer.</>,
-  },
-  {
-    name: "customFooter",
-    type: <TypeHighlight np>JSX.Element</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A custom header to replace the default one. If given, the rest of the
-        props are ignored
-      </>
-    ),
-  },
-];
diff --git a/src/data/HeaderConfigAPIRows.tsx b/src/data/HeaderConfigAPIRows.tsx
deleted file mode 100644
index 73549142752f1f50f3c001bf84f563d022131839..0000000000000000000000000000000000000000
--- a/src/data/HeaderConfigAPIRows.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const HeaderConfigAPIRows = [
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object applied to the main container.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles. Classname is applied to the main container.
-      </>
-    ),
-  },
-  {
-    name: "resetStyles",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, the given class name and style properties will replace the
-        default ones instead of overriding them.
-      </>
-    ),
-  },
-  {
-    name: "deleteFiles",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: <>If true, the delete icon will be shown.</>,
-  },
-  {
-    name: "cleanFiles",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: <>If true, the clean icon will be shown.</>,
-  },
-  {
-    name: "uploadFiles",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: <>If true, the upload icon will be shown.</>,
-  },
-  {
-    name: "uploadingIcon",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: (
-      <>
-        If true, the upload in progress icon will be shown during the upload
-        process.
-      </>
-    ),
-  },
-  {
-    name: "maxFileSize",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: (
-      <>
-        If true, the upload in progress icon will be shown during the upload
-        process.
-      </>
-    ),
-  },
-  {
-    name: "validFilesCount",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np>true</TypeHighlight>,
-    description: (
-      <>
-        If true, the current count of alid files will be shown.
-      </>
-    ),
-  },
-  {
-    name: "customHeader",
-    type: <TypeHighlight np>JSX.Element</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A custom header to replace the default one. If given, the rest of the
-        props are ignored
-      </>
-    ),
-  },
-];
diff --git a/src/data/IconsMapAPIRows.tsx b/src/data/IconsMapAPIRows.tsx
deleted file mode 100644
index 041c02866120ec2d27b379e4b804cd349fdaea30..0000000000000000000000000000000000000000
--- a/src/data/IconsMapAPIRows.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const IconsMapAPIRows = [
-  {
-    name: "success",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If true, it means that the request was successful.</>,
-  },
-  
-];
diff --git a/src/data/ServerResponseAPIRows.tsx b/src/data/ServerResponseAPIRows.tsx
deleted file mode 100644
index 2ab4cbeec27e804eebb2850810173b8c5c3607f9..0000000000000000000000000000000000000000
--- a/src/data/ServerResponseAPIRows.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const ServerResponseAPIRows = [
-  {
-    name: "success",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If true, it means that the request was successful.</>,
-  },
-  {
-    name: "message",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>A message that describes the result of the request.</>,
-  },
-  {
-    name: "payload",
-    type: <TypeHighlight np>Object</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The response of the server.</>,
-  },
-];
diff --git a/src/data/UploadConfigAPIRows.tsx b/src/data/UploadConfigAPIRows.tsx
deleted file mode 100644
index 96605b68ba34e19aa42a28261048de171053e38e..0000000000000000000000000000000000000000
--- a/src/data/UploadConfigAPIRows.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const UploadConfigAPIRows = [
-  {
-    name: "url",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The url endpoint to upload the file. e.g.
-        "https://www.myasomwbackend/uploads/file".
-      </>
-    ),
-  },
-  {
-    name: "method",
-    type: (
-      <>
-        <TypeHighlight np>{'"POST"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"PUT"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"PATCH"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"POST"'}</TypeHighlight>,
-    description: <>Request headers for http request.</>,
-  },
-  {
-    name: "uploadLabel",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np>{'"file"'}</TypeHighlight>,
-    description: (
-      <>
-        The label to use in the request. On the server this must be the label to
-        get the file.
-      </>
-    ),
-  },
-  {
-    name: "cleanOnUpload",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Flag for indicating whther to remove the non-valid files before starting
-        the upload process. This flag is valid only if validation is enable.
-      </>
-    ),
-  },
-  {
-    name: "autoUpload",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        If true, onDrop event or file selection not only will make Dropzone to
-        return the list of files, but also it will start the upload stage for
-        the files if at least url was set By default is false
-      </>
-    ),
-  },
-  {
-    name: "preparingTime",
-    type: <TypeHighlight np>{"number"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The time that will last the "preparing" stage By default is 1500
-        miliseconds = 1.5 seconds.
-      </>
-    ),
-  },
-  {
-    name: "uploadingMessage",
-    type: <TypeHighlight np>{"string"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        A message to show in the footer when the uploading process takes place.
-      </>
-    ),
-  },
-];
diff --git a/src/data/UploadStatusAPIRows.tsx b/src/data/UploadStatusAPIRows.tsx
deleted file mode 100644
index be9d103aabf146f10c01be9845431199b08164fb..0000000000000000000000000000000000000000
--- a/src/data/UploadStatusAPIRows.tsx
+++ /dev/null
@@ -1,3 +0,0 @@
-export const UPLOADSTATUSAPIRows=[
-    
-]
\ No newline at end of file
diff --git a/src/data/ValidateFileResponseAPIrows.tsx b/src/data/ValidateFileResponseAPIrows.tsx
deleted file mode 100644
index 373058e49b2e10ef11e016bc2535ed0c47cfcd86..0000000000000000000000000000000000000000
--- a/src/data/ValidateFileResponseAPIrows.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-//import CodeHighlight from "../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../components/typeHighlight/TypeHighlight";
-
-export const ValidateFileResponseAPIrows = [
-  {
-    name: "valid",
-    type: <TypeHighlight np>{"boolean"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If true, that means that the File is valid</>,
-  },
-  {
-    id: 2,
-    name: "errors",
-    type: <TypeHighlight np>{"string[]"}</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The list of errors associated with an specific file.</>,
-  },
-];
diff --git a/src/data/imagesURL.js b/src/data/imagesURL.js
deleted file mode 100644
index 8720c9a6cc7c102e3ec783a489a34d1e240c2627..0000000000000000000000000000000000000000
--- a/src/data/imagesURL.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export const BIA_URL =
-  "https://i.pinimg.com/564x/9a/8b/cf/9a8bcfaba81783eff9241538b00343b1.jpg";
diff --git a/src/data/videoLinks.js b/src/data/videoLinks.js
deleted file mode 100644
index 69dd46eb60fd1920b482a20d3807cfc3ab2ffb69..0000000000000000000000000000000000000000
--- a/src/data/videoLinks.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import ThorEN from "../static/videos/ThorEN.mp4";
-import ThorES from "../static/videos/ThorEN-1.mp4";
-import NarutoEN from "../static/videos/NarutoEN.mp4";
-import NarutoES from "../static/videos/NarutoES.mp4";
-
-/* const BASE_URL =
-  "/static/media/videos";
-
-export const ThorArrivesWakandaEN = BASE_URL+"/ThorEN.cd3bd7cae7054bb5a630.mp4";
-export const ThorArrivesWakandaES = BASE_URL+"/ThorES.cd3bd7cae7054bb5a630.mp4";
-export const NarutoAndSasukeVsMomoshikiEN = BASE_URL+"/NarutoEN.ea6c18d269c6beda2aa3.mp4";
-export const NarutoAndSasukeVsMomoshikiES = BASE_URL+"/NarutoES.64ada0ad3f1f096e0f6f.mp4";
- */
-
-export const ThorArrivesWakandaEN = ThorEN;
-export const ThorArrivesWakandaES = ThorES;
-export const NarutoAndSasukeVsMomoshikiEN = NarutoEN;
-export const NarutoAndSasukeVsMomoshikiES = NarutoES;
\ No newline at end of file
diff --git a/src/files-ui/core/color/colors.d.ts b/src/files-ui/core/color/colors.d.ts
deleted file mode 100644
index 471c4120619d011dfd48494532d1e9d053043a9c..0000000000000000000000000000000000000000
--- a/src/files-ui/core/color/colors.d.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Make the color into a darker color
- * @param colorInput
- * @returns the darked color in
- */
-export declare const darkerColor: (colorInput: string, percentage?: number) => string;
-/**
- * Make the color into a brighted color
- * @param colorInput
- * @returns the brighted color
- */
-export declare const brighterColor: (colorInput: string, percentage?: number) => string;
-/**
- * In order to managae rgba() we convert hex colors into rgba()
- * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()
- *
- *
- * @param colorInput color in hex or in rgb
- * @param perc percentage for RGBA() color
- * @returns the rgba representation of a hex color
- */
-export declare const hexColorToRGB: (colorInput: string | undefined, perc?: number, defaultColor?: string) => string;
-/**
- * Validates wheteher the color is hexadecimal css color
- * Example:  #FF56AC
- *
- *
- * @param colorInput the color inpt to test
- * @returns true if the inputColor is a hexadecimal css color
- */
-export declare const isHexColor: (colorInput: string) => boolean;
-/**
- * Converts a named color into hexadecimal color
- * from a list of well known namd colors if found.
- * When not given returns a ""
- * When not found in the list, returns the same value given
- * @param colour the named color
- * @returns The hex representation of the color or "" or the same color
- */
-export declare function colourNameToHex(colour: string | undefined): string;
-/**
- * Converts hex number in string representation to decimal number
- *
- *
- * @param letter the string hex number
- * @returns a decimal number
- */
-export declare const hexTodec: (letter: string) => number;
-/**
- * Asure a base color. When not given or when given an incorrect color format
- * default color is this kind of grey #5d6475
- *
- * @param color param color given by user
- * @returns returns the same color
- */
-export declare const asureColor: (color?: string) => string;
-/**
- * Asure a base color. When not given or when given an incorrect color format
- * default color is this kind of grey #5d6475
- *
- * @param color param color given by user
- * @returns returns the same color
- */
-export declare const completeAsureColor: (color?: string, perc?: number) => string;
-export declare const DEFAULT_FONT_COLOR = "#646c7f";
diff --git a/src/files-ui/core/color/index.d.ts b/src/files-ui/core/color/index.d.ts
deleted file mode 100644
index 2b51c13cd1efebcf647c650532931c074f0ab6f6..0000000000000000000000000000000000000000
--- a/src/files-ui/core/color/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { NAMED_COLORS } from "./namedColors";
-export { asureColor, brighterColor, colourNameToHex, darkerColor, hexColorToRGB, hexTodec, isHexColor, completeAsureColor } from "./colors";
diff --git a/src/files-ui/core/color/namedColors.d.ts b/src/files-ui/core/color/namedColors.d.ts
deleted file mode 100644
index 661cdc353c7239cbb5dec0a7bbfc78fa0da809f3..0000000000000000000000000000000000000000
--- a/src/files-ui/core/color/namedColors.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { NamedColor } from "../types/NamedColor";
-/**
- * The full list of named Colors provided by
- * https://htmlcolorcodes.com/es/nombres-de-los-colores/
- */
-export declare const NAMED_COLORS: NamedColor;
diff --git a/src/files-ui/core/download/downloadFile.d.ts b/src/files-ui/core/download/downloadFile.d.ts
deleted file mode 100644
index 5bd48e9ad5c2e6a8b7201985e73fb5c76ee4fd33..0000000000000000000000000000000000000000
--- a/src/files-ui/core/download/downloadFile.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export declare const downloadFileAnchor: (fileName?: string, downloadUrl?: string) => Promise<void>;
-export declare const downloadFileXHR: (fileName?: string, downloadUrl?: string) => Promise<void>;
-export declare const downloadFileFetch: (fileName?: string, downloadUrl?: string) => Promise<void>;
-export declare const downloadAnchor: (fileName?: string, downloadUrl?: string) => Promise<void>;
diff --git a/src/files-ui/core/file-manager/index.d.ts b/src/files-ui/core/file-manager/index.d.ts
deleted file mode 100644
index 2ef646c95ef59472bcdbeb52ace12de4d4e432fe..0000000000000000000000000000000000000000
--- a/src/files-ui/core/file-manager/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { extFileReconcilation } from "./reconcilation";
diff --git a/src/files-ui/core/file-manager/reconcilation.d.ts b/src/files-ui/core/file-manager/reconcilation.d.ts
deleted file mode 100644
index 198c59f3bd6f500d0360d41def4cee13b74f2e1f..0000000000000000000000000000000000000000
--- a/src/files-ui/core/file-manager/reconcilation.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { ExtFile } from "../types";
-export declare const extFileReconcilation: (dropzoneId: number | string | undefined, extFileIncomming: ExtFile[]) => ExtFile[] | undefined;
diff --git a/src/files-ui/core/index.d.ts b/src/files-ui/core/index.d.ts
deleted file mode 100644
index 899e9931af84c701a0ef2cfc3705c318e7aece2c..0000000000000000000000000000000000000000
--- a/src/files-ui/core/index.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export { DropzoneEnglish, DropzoneFrench, DropzoneItalian, DropzoneLocalizer, DropzoneLocalizerSelector, DropzonePortuguese, DropzoneRussian, DropzoneSimplifiedChinese, DropzoneSpanish, DropzoneTraditionalChinese, FileItemEnglish, FileItemFrench, FileItemItalian, FileItemLocalizer, FileItemLocalizerSelector, FileItemPortuguese, FileItemRussian, FileItemSimplifiedChinese, FileItemSpanish, FileItemTraditionalChinese, ValidateErrorEnglish, ValidateErrorFrench, ValidateErrorItalian, ValidateErrorLocalizer, ValidateErrorLocalizerSelector, ValidateErrorPortuguese, ValidateErrorRussian, ValidateErrorSimplifiedChinese, ValidateErrorSpanish, ValidateErrorTraditionalChinese } from "./localization";
-export { readAsArrayBuffer, readAsBinaryString, readAsDataURL, readAsText, resizeImage, getImageOrientation } from "./reader";
-export { aac, abw, accdb, avi, azw, bmp, bz, bz2, cda, csh, css, csv, docx, drawio, eot, epub, freearc, gif, gzip, html, icalendar, jar, java, javascript, jpeg, json, jsonld, midi, mp3, mp4, mpeg, mpkg, octet, odp, ods, odt, oga, ogv, ogx, opus, otf, pdf, php, png, pptx, psd, python, rar, react, rtf, sass, sevenzip, sh, swf, tar, text, tiff, ttf, typescript, vsd, vue, wav, weba, webm, webp, wma, wmv, woff, xlsx, xml, xul, zip, applicationSelector, audioSelector, checkIsCode, extensionSelector, fontSelector, getURLFileIco, imageSelector, mimeSelector, textSelector, videoSelector, getURLFileIcoFromNameAndType, } from "./mime";
-export type { ExtFile, Behaviour, ValidateFileResponse, ComponentLocalizer, ExtFileListMap, FileValidatorProps, FunctionLabel, LocalLabels, Localization, Method, NamedColor, ServerResponse, UploadPromiseResponse, UploadResponse, UploadConfig, UPLOADSTATUS, IconsMap } from "./types";
-export { ExtFileInstance, ExtFileManager, createUploadConfig } from "./types";
-export { extFileMock } from "./mocks";
-export { uploadExtFile, FuiUpload, completeUploadResult, instantPreparingToUploadOne, preparingToUploadOne, sleepTransition, toUploadableExtFileList, unableToUploadResult, makeServerResponse, uploadFile, uploadFormData, ABORTED_ERROR_RESPONSE, JSON_PARSE_ERROR_RESPONSE, JsonParseResponse, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE, makeErrorUploadResponse, makeSuccessUploadResponse, addExtraData, addHeaders, sanitizeArrExtFile, unexpectedErrorUploadResult, setNextUploadStatus } from "./upload";
-export { FileIdGenerator, fileListToExtFileArray, fileListToExtFileInstanceArray, fileSizeFormater, getExt, isValidateActive, shrinkWord, fakeFuiUpload, prepToUploadOne, setPrepToUploading, sleepPreparing, uploadOne, uploadOneExtFile, cleanInput, addClassName, getRandomInt, isUploadAbleExtFile, getLocalFileItemData } from "./utils";
-export { fileListvalidator, separateAccept, validateAccept, validateExtFile, validateExtFileList, validateFile } from "./validation";
-export { asureColor, brighterColor, colourNameToHex, darkerColor, hexColorToRGB, hexTodec, isHexColor, NAMED_COLORS, completeAsureColor } from "./color";
-export { SyntheticFile, createListOfMultiTypeFile, createSyntheticFile, makeSyntheticExtFile } from "./synthetic-file";
-export { extFileReconcilation } from "./file-manager";
diff --git a/src/files-ui/core/index.es.js b/src/files-ui/core/index.es.js
deleted file mode 100644
index 68eb2961f37a33226757b48dfe53a28039beffd8..0000000000000000000000000000000000000000
--- a/src/files-ui/core/index.es.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var e=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},t={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},r={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},a={maxSizeError:function(t){return"Il file è molto grande. Il tam. il massimo è ".concat(e(t))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},n={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},i={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},c={maxSizeError:function(t){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(e(t))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},o={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},s={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},u={maxSizeError:function(t){return"File is too big. Max file size allowed is ".concat(e(t))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},l={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},p={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},d={maxSizeError:function(t){return"El archivo es muy grande. El tam. máximo es ".concat(e(t))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},f={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},g={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},m={maxSizeError:function(t){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(e(t))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},h={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},b={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},v={maxSizeError:function(t){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(e(t))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},F={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},w={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},x={maxSizeError:function(t){return"文件太大。 允许的最大文件大小为 ".concat(e(t))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},_={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},y={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},E={maxSizeError:function(t){return"文件太大。 允許的最大文件大小為 ".concat(e(t))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}},A={"ES-es":p,"EN-en":s,"FR-fr":i,"IT-it":r,"PT-pt":b,"RU-ru":g,"ZH-cn":w,"ZH-hk":y},z=function(e){switch(e){case"ES-es":return A["ES-es"];case"EN-en":default:return A["EN-en"];case"FR-fr":return A["FR-fr"];case"IT-it":return A["IT-it"];case"PT-pt":return A["PT-pt"];case"RU-ru":return A["RU-ru"];case"ZH-cn":return A["ZH-cn"];case"ZH-hk":return A["ZH-hk"]}},k={"ES-es":l,"EN-en":o,"FR-fr":n,"IT-it":t,"PT-pt":h,"RU-ru":f,"ZH-cn":F,"ZH-hk":_},S=function(e){switch(e){case"ES-es":return k["ES-es"];case"EN-en":default:return k["EN-en"];case"FR-fr":return k["FR-fr"];case"IT-it":return k["IT-it"];case"PT-pt":return k["PT-pt"];case"RU-ru":return k["RU-ru"];case"ZH-cn":return k["ZH-cn"];case"ZH-hk":return k["ZH-hk"]}},M={"ES-es":d,"EN-en":u,"FR-fr":c,"IT-it":a,"PT-pt":v,"RU-ru":m,"ZH-cn":x,"ZH-hk":E},D=function(e){return e&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(e)?M[e]:M["EN-en"]},j=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.onload=function(){a(i.result)},i.readAsDataURL(e)}catch(e){n(void 0)}}))},C=function(e,t,r,a){return new Promise((function(n,i){try{var c=new FileReader;c.onload=function(){n(c.result)},c.onprogress=function(){null==r||r()},c.onerror=function(){null==a||a()},c.readAsText(e,t||"base64")}catch(e){i(void 0)}}))},B=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onload=function(){a(i.result)},i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.readAsBinaryString(e)}catch(e){n(void 0)}}))},T=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onload=function(){a(i.result)},i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.readAsArrayBuffer(e)}catch(e){n(void 0)}}))};function I(e,t,r){return void 0===t&&(t=135),void 0===r&&(r=120),new Promise((function(a,n){try{var i=new Image;i.src=e,i.onload=function(){var c=document.createElement("canvas"),o=t,s=r,u=i.width,l=i.height;t>u&&r>l?a(e):u>l?u>o&&(l*=o/u,u=o):l>s&&(u*=s/l,l=s),c.width=u,c.height=l;var p=c.getContext("2d");p?(p.drawImage(i,0,0,u,l),a(c.toDataURL())):("development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0))}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0)}}))}function L(e){return new Promise((function(t,r){if(e&&0!==e.length)try{var a=new Image;a.src=e,a.onerror=function(e){r("landscape")},a.onload=function(){var e=a.width,r=a.height;t(e>r?"landscape":"portrait")}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to get the image orientation"),r("landscape")}else r("landscape")}))}var R="https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",U="https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",N="https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",P="https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",q="https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",O="https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",H="https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",Z="https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",V="https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",G="https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",X="https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",K="https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",J="https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",Q="https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",$="https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",W="https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",Y="https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",ee="https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",te="https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",re="https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",ae="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",ne="https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",ie="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",ce="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",oe="https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",se="https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",ue="https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",le="https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",pe="https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",de="https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",fe="https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",ge="https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",me="https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",he="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",be="https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",ve="https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",Fe="https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",we="https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",xe="https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",_e="https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",ye="https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",Ee="https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",Ae="https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",ze="https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",ke="https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",Se="https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",Me="https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",De="https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",je="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Ce="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Be="https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",Te="https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",Ie="https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",Le="https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",Re="https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",Ue="https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",Ne="https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",Pe="https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",qe="https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",Oe="https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",He="https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",Ze="https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",Ve="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Ge="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Xe="https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",Ke="https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",Je="https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",Qe="https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",$e="https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",We="https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",Ye="https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",et="https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",tt=function(e){var t=/(?:\.([^.]+))?$/.exec(e);return t?t[1]:""},rt="octet",at=function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return rt}},nt=function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return rt}},it=function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return rt}},ct=function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return rt}},ot=function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return rt}},st=function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return rt}},ut=function(e){if(!e||!e.includes("/"))return rt;var t=e.split("/")[0],r=e.split("/")[1];switch(t){case"application":return st(r);case"audio":return at(r);case"video":return ot(r);case"text":return nt(r);case"image":return it(r);case"font":return ct(r);default:return rt}},lt=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},pt=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},dt=function(e,t){var r="fallBack";if(!e)return r=rt,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:r}:{url:gt[r],mimeResume:r};r=ut(e.type);var a=tt(e.name);"text"===r&&(r=pt(a)),r===rt&&(r=lt(a));var n=null==t?void 0:t[r];return void 0!==n?{url:n,mimeResume:r}:{url:gt[r],mimeResume:r}},ft=function(e,t,r){var a="octet";if(!e)return a=rt,(null==r?void 0:r.fallBack)?{url:null==r?void 0:r.fallBack,mimeResume:a}:{url:gt[a],mimeResume:a};a=ut(t);var n=tt(e);"text"===a&&(a=pt(n)),a===rt&&(a=lt(n));var i=null==r?void 0:r[a];return void 0!==i?{url:i,mimeResume:a}:{url:gt[a],mimeResume:a}},gt={aac:U,accdb:P,abw:N,arc:ee,avi:q,azw:O,octet:he,bmp:H,bz:Z,bz2:V,cda:G,csh:X,css:K,csv:J,docx:Q,drawio:$,eot:W,epub:Y,gzip:re,gif:te,html:ae,icalendar:ne,jar:ce,jpeg:se,javascript:oe,json:ue,jsonld:le,midi:pe,mp3:de,mp4:fe,mpeg:ge,mpkg:me,mp2t:he,odp:be,ods:ve,odt:Fe,oga:we,ogv:xe,ogx:_e,opus:ye,otf:Ee,png:ke,pdf:Ae,php:ze,pptx:Se,psd:Me,rar:Ce,rtf:Te,sass:Ie,sh:Le,swf:Re,tar:je,tiff:Ne,ttf:Pe,typescript:qe,text:Ue,vsd:Oe,wav:Ze,weba:Ge,webm:Ve,webp:Xe,woff:Qe,wma:Ke,wmv:Je,xhtml:ae,xlsx:$e,xml:We,xul:Ye,zip:et,sevenzip:R,python:De,java:ie,react:Be,vue:He,fallBack:he},mt=function(){function e(e){var t=e.id,r=e.file,a=e.name,n=e.size,i=e.type,c=e.imageUrl,o=e.valid,s=e.errors,u=e.uploadMessage,l=e.uploadStatus,p=e.progress,d=e.xhr,f=e.extraData,g=e.extraUploadData,m=e.serverResponse,h=e.downloadUrl,b=e.videoUrl;this.id=t,this.file=r,this.name=a,this.size=n,this.type=i,this.imageUrl=c,this.valid=o,this.errors=s,this.uploadStatus=l,this.uploadMessage=u,this.progress=p,this.xhr=d,this.extraData=f,this.extraUploadData=g,this.serverResponse=m,this.downloadUrl=h,this.videoUrl=b}return e.toExtFile=function(e){for(var t={},r=Object.keys(e),a=Object.values(e),n=0;n<a.length;n++){var i=a[n],c=r[n];void 0!==i&&(t[c]=i)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),ht=function(){return ht=Object.assign||function(e){for(var t,r=1,a=arguments.length;r<a;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},ht.apply(this,arguments)};function bt(e,t,r,a){return new(r||(r=Promise))((function(n,i){function c(e){try{s(a.next(e))}catch(e){i(e)}}function o(e){try{s(a.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(c,o)}s((a=a.apply(e,t||[])).next())}))}function vt(e,t){var r,a,n,i,c={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function o(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,o[0]&&(c=0)),c;)try{if(r=1,a&&(n=2&o[0]?a.return:o[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,o[1])).done)return n;switch(a=0,n&&(o=[2&o[0],n.value]),o[0]){case 0:case 1:n=o;break;case 4:return c.label++,{value:o[1],done:!1};case 5:c.label++,a=o[1],o=[0];continue;case 7:o=c.ops.pop(),c.trys.pop();continue;default:if(!(n=c.trys,(n=n.length>0&&n[n.length-1])||6!==o[0]&&2!==o[0])){c=0;continue}if(3===o[0]&&(!n||o[1]>n[0]&&o[1]<n[3])){c.label=o[1];break}if(6===o[0]&&c.label<n[1]){c.label=n[1],n=o;break}if(n&&c.label<n[2]){c.label=n[2],c.ops.push(o);break}n[2]&&c.ops.pop(),c.trys.pop();continue}o=t.call(e,c)}catch(e){o=[6,e],a=0}finally{r=n=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}function Ft(e,t,r){if(r||2===arguments.length)for(var a,n=0,i=t.length;n<i;n++)!a&&n in t||(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}var wt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,r){return t?(e.fileLists[t]=Ft([],r,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return"development"===process.env.NODE_ENV&&console.error("Error on remove",e),0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return void("development"===process.env.NODE_ENV&&console.error("Error on getExtFileInstanceList",e))}},e.setFileListMapPreparing=function(t,r,a,n){if("number"==typeof t||"string"==typeof t)try{var i,c=Ft([],r,!0);n&&a&&(c=c.filter((function(e){return e.valid}))),i=(c=a?c.map((function(e){return"success"!==e.uploadStatus&&e.valid?ht(ht({},e),{uploadStatus:"preparing"}):ht({},e)})):c.map((function(e){return"success"!==e.uploadStatus?ht(ht({},e),{uploadStatus:"preparing"}):ht({},e)}))).map((function(e){return new mt(e)}));e.setFileList(t,i);return i}catch(e){return void("development"===process.env.NODE_ENV&&console.error("setFileListMapPreparing Error on get List",e))}},e.setFileListMapPreparing2=function(t,r,a,n){return e.setFileList(t,r.map((function(e){return new mt(ht(ht({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),xt=function(e,t,r,a,n){return{url:e,method:t,headers:r,uploadLabel:a,cleanonUpload:n}},_t=function(){function e(){}return e.createFile=function(e,t,r){var a=new File([],e,{type:r});return Object.defineProperty(a,"size",{get:function(){return t}}),a},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var r=[];return r.push(e.create_aac(t)),r.push(e.create_abw(t)),r.push(e.create_freearc(t)),r.push(e.create_avi(t)),r.push(e.create_azw(t)),r.push(e.create_octet(t)),r.push(e.create_bmp(t)),r.push(e.create_bz(t)),r.push(e.create_bz2(t)),r.push(e.create_cda(t)),r.push(e.create_csh(t)),r.push(e.create_css(t)),r.push(e.create_csv(t)),r.push(e.create_doc(t)),r.push(e.create_docx(t)),r.push(e.create_eot(t)),r.push(e.create_epub(t)),r.push(e.create_gzip(t)),r.push(e.create_gif(t)),r.push(e.create_htm(t)),r.push(e.create_html(t)),r.push(e.create_ico(t)),r.push(e.create_icalendar(t)),r.push(e.create_jar(t)),r.push(e.create_jpeg(t)),r.push(e.create_jpg(t)),r.push(e.create_js(t)),r.push(e.create_json(t)),r.push(e.create_jsonld(t)),r.push(e.create_mid(t)),r.push(e.create_midi(t)),r.push(e.create_x_mid(t)),r.push(e.create_x_midi(t)),r.push(e.create_mjs(t)),r.push(e.create_mp3(t)),r.push(e.create_mp4(t)),r.push(e.create_mpeg(t)),r.push(e.create_mpkg(t)),r.push(e.create_odp(t)),r.push(e.create_ods(t)),r.push(e.create_odt(t)),r.push(e.create_oga(t)),r.push(e.create_ogv(t)),r.push(e.create_ogx(t)),r.push(e.create_opus(t)),r.push(e.create_otf(t)),r.push(e.create_png(t)),r.push(e.create_pdf(t)),r.push(e.create_php(t)),r.push(e.create_ppt(t)),r.push(e.create_pptx(t)),r.push(e.create_rar(t)),r.push(e.create_rtf(t)),r.push(e.create_sh(t)),r.push(e.create_svg(t)),r.push(e.create_swf(t)),r.push(e.create_tar(t)),r.push(e.create_tif(t)),r.push(e.create_tiff(t)),r.push(e.create_ts(t)),r.push(e.create_ttf(t)),r.push(e.create_text(t)),r.push(e.create_typescript(t)),r.push(e.create_vsd(t)),r.push(e.create_wav(t)),r.push(e.create_weba(t)),r.push(e.create_webm(t)),r.push(e.create_webp(t)),r.push(e.create_woff(t)),r.push(e.create_woff2(t)),r.push(e.create_xhtml(t)),r.push(e.create_xlsx(t)),r.push(e.create_xls(t)),r.push(e.create_xml(t)),r.push(e.create_xml_txt(t)),r.push(e.create_xul(t)),r.push(e.create_zip(t)),r.push(e.create_python(t)),r.push(e.create_java(t)),r.push(e.create_react(t)),r.push(e.create_vue(t)),r},e}(),yt=function(e){return _t.createFileListMiscelanious(e)},Et=function(e,t,r){return void 0===e&&(e="png-image-file-with-large-name.png"),void 0===t&&(t=455555),void 0===r&&(r="image/png"),_t.createFile(e,t,r)},At=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}(),zt=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push({id:At.getNextId(),file:a,name:a.name,size:a.size,type:a.type});return t},kt=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push(new mt({id:At.getNextId(),file:a,name:a.name,size:a.size,type:a.type}));return t},St=function(e,t,r,a){return null!=e||null!=t||null!=r||null!=a},Mt=function(e,t){void 0===e&&(e=""),void 0===t&&(t=!1);var r=e;return t?e.length>=20&&(r=e.slice(0,10)+"..."+e.slice(-7)):e.length>=30&&(r=e.slice(0,13)+"..."+e.slice(-8)),r},Dt=function(e){return new Promise((function(t,r){setTimeout((function(){t(ht(ht({},e),{uploadStatus:"uploading"}))}),1500)}))},jt=function(e){return new Promise((function(t,r){setTimeout((function(){t(ht(ht({},e),{uploadStatus:"success"}))}),2e3)}))},Ct=function(e){return void 0===e&&(e=5e3),new Promise((function(t,r){setTimeout((function(){t()}),e)}))},Bt=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="uploading",t(ht(ht({},e),{uploadStatus:"uploading"}))}),1500)}))},Tt=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="success",t(ht(ht({},e),{uploadStatus:"success"}))}),2e3)}))},It=function(e,t){void 0===t&&(t=S("EN-en"));var r=e.toExtFile();return new Promise((function(e,a){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var a=!0,n=t.fakeuploadsuccess,i={url:""};e(ht(ht({},r),{serverResponse:{success:a,message:n,payload:i},uploadStatus:"success",uploadMessage:n}))}else{a=!1,n=t.fakeUploadError,i={};e(ht(ht({},r),{serverResponse:{success:a,message:n,payload:i},uploadStatus:"error",uploadMessage:n}))}}),1700)}))};function Lt(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),Math.floor(Math.random()*(t-e))+e}var Rt=function(e){e&&(e.value="")},Ut=function(e,t){return t?"".concat(e," ").concat(t):e},Nt=function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus},Pt=function(e,t,r,a){var n="",i=void 0,c=void 0;return e&&"string"==typeof e.name?(n=e.name,i=e.type,c=e.size):t&&"string"==typeof t&&(n=t,i=r,c=a),[n,i,c]},qt=function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]},Ot=function(e,t){for(var r=t.name,a=t.type,n=0;n<e.length;n++){var i=e[n];if(0!==i.length){if("."===i.charAt(0)&&i.includes(tt(r)))return!0;if(a&&a.length>0&&i.includes("/")&&a.includes("/")){var c=i.split("/")[0],o=i.split("/")[1],s=a.split("/")[0],u=a.split("/")[1];if(c===s){if("*"===o)return!0;if(o===u)return!0}}}}return!1},Ht=function(e,t,r,a,n,i){for(var c=[],o=t,s=D(i),u=0,l=void 0;l=e[u];u++){var p=Gt(l,a,r,s);if(p.valid){var d=o>0;if(p.valid=d,!d){var f=s.maxFileCount;p.errors=p.errors?Ft(Ft([],p.errors,!0),[f(n||1/0)],!1):[f(n||1/0)]}o--}c.push(p)}return c},Zt=function(e,t,r,a,n,i){var c=[];if(!t)return c;for(var o=t,s=D(i),u=s.maxFileCount,l=0;l<e.length;l++){var p=e[l];if((p=Vt(p,a,r,s)).valid){var d=o>0;p.valid=d,d||(p.errors=p.errors?Ft(Ft([],p.errors,!0),[u(n||1/0)],!1):[u(n||1/0)]),o--}c.push(p)}return c},Vt=function(e,t,r,a){var n=ht({},e),i=[];if(!e.file)return ht({},n);if(t){var c=t(n.file).errors;c&&i.push.apply(i,c)}var o=r.maxFileSize,s=r.accept,u=e.file;if(o&&u.size>o){var l=a.maxSizeError;i.push(l(o))}s&&!Ot(qt(s),u)&&i.push(a.acceptError);var p=0===i.length;return n=ht(ht({},n),{valid:p,errors:p?void 0:i})},Gt=function(e,t,r,a){var n=At.getNextId(),i=[];if(t)return ht({id:n,file:e},t(e));var c=r.maxFileSize,o=r.accept;if(c&&e.size>c){var s=a.maxSizeError;i.push(s(c))}return o&&!Ot(qt(o),e)&&i.push(a.acceptError),{id:n,file:e,valid:0===i.length,errors:i}},Xt=["File is too big. Max file size allowed is 80mb.","File's type is not allowed.","Max amount of files (28) has been reached."],Kt=function(e,t,r,a){void 0===t&&(t=Math.ceil(28*Math.random())%2==0);var n=[],i=r||function(){switch(Lt(0,4)){case 0:return"error";case 1:return"uploading";case 2:return"success";default:return}}(),c=a||"";if(t){if(!a)switch(i){case"error":c="Upload failed. There was an error";break;case"success":c="File was successfully upload";break;default:a=void 0}n=void 0}else{var o=Lt(0,3);n.push(Xt[o]),i=void 0,c=void 0}return{id:At.getNextId(),valid:t,file:e,uploadStatus:i,uploadMessage:c,errors:n}},Jt=function(e){return{id:e||At.getNextId(),name:"fileName.ext",size:29360128,type:"files-ui/mock",file:Et("fileName.ext",29360128,"files-ui/mock"),errors:Xt,uploadMessage:"uploaded",uploadStatus:"preparing",valid:!1,progress:28,xhr:new XMLHttpRequest,extraData:{extraData1:"files-ui is the best",extraData2:{id:1,name:"files-ui.mock"},deleted:!0},downloadUrl:"https://www.files-ui.com/mock/file-download"}};function Qt(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.append(r[a],t[r[a]]);e.append("otherValue","HAAAAAAAAAAAAAAa")}function $t(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.setRequestHeader(r[a],t[r[a]])}var Wt={success:!1,message:"Timeout error",payload:{}},Yt={success:!1,message:"Upload aborted",payload:{}},er={success:!1,message:"Error when parsing JSON response",payload:{}},tr={success:!1,message:"Unexpected error",payload:{}},rr=function(e){return ht(ht({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})},ar=function(e,t,r){return{success:e,message:t,payload:r}},nr=function(e){try{var t=JSON.parse(e.response),r=t.success,a=t.message;return{success:"boolean"==typeof r&&r,message:"string"==typeof a?a:"Error on message response",payload:t.payload||{}}}catch(e){return er}},ir=function(e,t){return ht(ht({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})},cr=function(e,t){return ht(ht({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},or=function(e,t,r,a,n){return void 0===t&&(t="POST"),new Promise((function(i,c){var o=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return i(Wt)},e.upload.onabort=function(){i(Yt)},e.onloadend=function(e){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(t){return e.readyState,4===e.readyState&&(""!==e.response?i(nr(e)):i(Yt)),[2]}))}))},e.open(o,r,!0),$t(e,n),e.send(a)}))},sr=function(e,t,r,a,n){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(i){return[2,new Promise((function(i,c){return bt(void 0,void 0,void 0,(function(){var c,o,s,u,l,p;return vt(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(c=e.xhr)?(o=r||"POST",s=e.file,(u=new FormData).append(n||"file",s),l=ht({otherValue:"other valueee haaaa",param2:{tecnica:"KIKOHUUUU",friend:"Chaos",age:25}},e.extraUploadData),Qt(u,l),p=void 0,[4,or(c,o,t,u,a||{})]):(i(rr(e)),[2]);case 1:return(p=d.sent()).success?i(ir(e,p)):i(cr(e,p)),[3,3];case 2:return d.sent(),i(cr(e,tr)),[3,3];case 3:return[2]}}))}))}))]}))}))};function ur(e,t,r,a,n){var i=this;return new Promise((function(c,o){return bt(i,void 0,void 0,(function(){var i,o;return vt(this,(function(s){switch(s.label){case 0:(i=new FormData).append(a||"file",e),s.label=1;case 1:return s.trys.push([1,3,,4]),[4,or(new XMLHttpRequest,r,t,i,n)];case 2:return o=s.sent(),c(o),[3,4];case 3:return s.sent(),c(tr),[3,4];case 4:return[2]}}))}))}))}var lr=function(e,t,r,a,n){return new Promise((function(i,c){e.upload.onload=function(){},e.upload.ontimeout=function(){return i(Wt)},e.upload.onabort=function(){return i(Yt)},e.onreadystatechange=function(t){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(t){return 4===e.readyState&&(""!==e.response?i(nr(e)):i(tr)),[2]}))}))},e.open(t,r,!0);for(var o=Object.keys(n),s=0;s<o.length;s++)e.setRequestHeader(o[s],n[o[s]]);e.send(a)}))},pr=function(e){return ht(ht({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})},dr=function(e){return{id:e.id,uploadedFile:ht(ht({},e),{uploadMessage:"Unable to upload. XHR was not provided",uploadStatus:"error"}),serverResponse:{success:!1,message:"Error on upload: Unable to upload. XHR was not provided ",payload:{}}}},fr=function(e,t,r){return{id:e.id,uploadedFile:ht(ht({},e),{uploadMessage:t.message,uploadStatus:r}),serverResponse:t}},gr=function(e){return e?e.map((function(e){return ht(ht({},e),{xhr:new XMLHttpRequest})})):[]},mr=function(e){return"preparing"===e.uploadStatus?(e.uploadStatus="uploading",ht(ht({},e),{uploadStatus:"uploading"})):e},hr=function(e){return new Promise((function(t,r){setTimeout((function(){"preparing"===e.uploadStatus?(e.uploadStatus="uploading",t(ht(ht({},e),{uploadStatus:"uploading"}))):t(e)}),1500)}))},br=function(e){return void 0===e&&(e=1500),new Promise((function(t,r){setTimeout((function(){t(!0)}),e)}))},vr=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),mt.toExtFile(e)}))},Fr=function(e,t){var r=e.uploadStatus,a=t.uploadStatus;"preparing"===r&&["aborted",void 0].includes(a)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===r&&["aborted",void 0].includes(a)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)},wr={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},xr=function(e,t){void 0===t&&(t=25);var r="",a=(100-t)/100,n=0,i=0,c=0;if(Er(Ar(e)))n=16*Sr(e.charAt(1))+Sr(e.charAt(2)),i=16*Sr(e.charAt(3))+Sr(e.charAt(4)),c=16*Sr(e.charAt(5))+Sr(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(i*a,",").concat(c*a,")");else if(e.includes("rgba")){var o=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}else if(e.includes("rgb")){o=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}return r},_r=function(e,t){void 0===t&&(t=25);var r="",a=(100+t)/100,n=0,i=0,c=0;if(Er(Ar(e)))n=16*Sr(e.charAt(1))+Sr(e.charAt(2)),i=16*Sr(e.charAt(3))+Sr(e.charAt(4)),c=16*Sr(e.charAt(5))+Sr(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(i*a,",").concat(c*a,")");else if(e.includes("rgba")){var o=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}else if(e.includes("rgb")){o=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}return r},yr=function(e,t,r){void 0===t&&(t=0);var a=r||"rgba(255, 255, 255, 0.6)";if(!e)return a;var n=e.toUpperCase();if(n.includes("RGBA"))return n;if(n.includes("RGB"))return n.replace("RGB","rgba").replace(")",", ".concat(t,")"));if(!Er(Ar(n)))return a;var i,c,o;return i=16*Sr(n.charAt(1))+Sr(n.charAt(2)),c=16*Sr(n.charAt(3))+Sr(n.charAt(4)),o=16*Sr(n.charAt(5))+Sr(n.charAt(6)),"rgba(".concat(i,", ").concat(c,",").concat(o," , ").concat(t,")")},Er=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!zr.includes(e.charAt(t)))return!1;return!0};function Ar(e){return e?void 0!==wr[e.toLocaleLowerCase()]?wr[e.toLocaleLowerCase()]:e:""}var zr=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],kr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],Sr=function(e){return zr.includes(e)?kr[zr.indexOf(e)]:0},Mr=function(e){return void 0!==e&&""!==e?e:jr},Dr=function(e,t){return void 0===t&&(t=1),yr(Mr(Ar(e)),t)},jr="#646c7f",Cr=function(e,t){var r=wt.getExtFileInstanceList(e);if(r){var a=Ft([],t,!0);if(a=a.filter((function(e){return-1===(null==r?void 0:r.findIndex((function(t){return t.id===e.id})))})),r.length!==t.length||0===t.length)return;for(var n=0;n<r.length;n++)void 0===t[n].uploadStatus&&"preparing"===r[n].uploadStatus&&(r[n].uploadStatus=void 0)}return[]};export{Yt as ABORTED_ERROR_RESPONSE,o as DropzoneEnglish,n as DropzoneFrench,t as DropzoneItalian,k as DropzoneLocalizer,S as DropzoneLocalizerSelector,h as DropzonePortuguese,f as DropzoneRussian,F as DropzoneSimplifiedChinese,l as DropzoneSpanish,_ as DropzoneTraditionalChinese,mt as ExtFileInstance,wt as ExtFileManager,At as FileIdGenerator,s as FileItemEnglish,i as FileItemFrench,r as FileItemItalian,A as FileItemLocalizer,z as FileItemLocalizerSelector,b as FileItemPortuguese,g as FileItemRussian,w as FileItemSimplifiedChinese,p as FileItemSpanish,y as FileItemTraditionalChinese,lr as FuiUpload,er as JSON_PARSE_ERROR_RESPONSE,nr as JsonParseResponse,wr as NAMED_COLORS,rr as NO_XHR_PROVIDED_ERROR,_t as SyntheticFile,Wt as TIMEOUT_ERROR_RESPONSE,tr as UNEXPECTED_ERROR_RESPONSE,u as ValidateErrorEnglish,c as ValidateErrorFrench,a as ValidateErrorItalian,M as ValidateErrorLocalizer,D as ValidateErrorLocalizerSelector,v as ValidateErrorPortuguese,m as ValidateErrorRussian,x as ValidateErrorSimplifiedChinese,d as ValidateErrorSpanish,E as ValidateErrorTraditionalChinese,U as aac,N as abw,P as accdb,Ut as addClassName,Qt as addExtraData,$t as addHeaders,st as applicationSelector,Mr as asureColor,at as audioSelector,q as avi,O as azw,H as bmp,_r as brighterColor,Z as bz,V as bz2,G as cda,pt as checkIsCode,Rt as cleanInput,Ar as colourNameToHex,Dr as completeAsureColor,fr as completeUploadResult,yt as createListOfMultiTypeFile,Et as createSyntheticFile,xt as createUploadConfig,X as csh,K as css,J as csv,xr as darkerColor,Q as docx,$ as drawio,W as eot,Y as epub,Jt as extFileMock,Cr as extFileReconcilation,lt as extensionSelector,It as fakeFuiUpload,zt as fileListToExtFileArray,kt as fileListToExtFileInstanceArray,Ht as fileListvalidator,e as fileSizeFormater,ct as fontSelector,ee as freearc,tt as getExt,L as getImageOrientation,Pt as getLocalFileItemData,Lt as getRandomInt,dt as getURLFileIco,ft as getURLFileIcoFromNameAndType,te as gif,re as gzip,yr as hexColorToRGB,Sr as hexTodec,ae as html,ne as icalendar,it as imageSelector,mr as instantPreparingToUploadOne,Er as isHexColor,Nt as isUploadAbleExtFile,St as isValidateActive,ce as jar,ie as java,oe as javascript,se as jpeg,ue as json,le as jsonld,cr as makeErrorUploadResponse,ar as makeServerResponse,ir as makeSuccessUploadResponse,Kt as makeSyntheticExtFile,pe as midi,ut as mimeSelector,de as mp3,fe as mp4,ge as mpeg,me as mpkg,he as octet,be as odp,ve as ods,Fe as odt,we as oga,xe as ogv,_e as ogx,ye as opus,Ee as otf,Ae as pdf,ze as php,ke as png,Se as pptx,Bt as prepToUploadOne,hr as preparingToUploadOne,Me as psd,De as python,Ce as rar,Be as react,T as readAsArrayBuffer,B as readAsBinaryString,j as readAsDataURL,C as readAsText,I as resizeImage,Te as rtf,vr as sanitizeArrExtFile,Ie as sass,qt as separateAccept,Fr as setNextUploadStatus,Dt as setPrepToUploading,R as sevenzip,Le as sh,Mt as shrinkWord,Ct as sleepPreparing,br as sleepTransition,Re as swf,je as tar,Ue as text,nt as textSelector,Ne as tiff,gr as toUploadableExtFileList,Pe as ttf,qe as typescript,dr as unableToUploadResult,pr as unexpectedErrorUploadResult,sr as uploadExtFile,ur as uploadFile,or as uploadFormData,jt as uploadOne,Tt as uploadOneExtFile,Ot as validateAccept,Vt as validateExtFile,Zt as validateExtFileList,Gt as validateFile,ot as videoSelector,Oe as vsd,He as vue,Ze as wav,Ge as weba,Ve as webm,Xe as webp,Ke as wma,Je as wmv,Qe as woff,$e as xlsx,We as xml,Ye as xul,et as zip};
-//# sourceMappingURL=index.es.js.map
diff --git a/src/files-ui/core/index.es.js.map b/src/files-ui/core/index.es.js.map
deleted file mode 100644
index c4a8edb4f9b9d15ce32af04ce7d75a85b3d06df8..0000000000000000000000000000000000000000
--- a/src/files-ui/core/index.es.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.es.js","sources":["../src/utils/fileSizeFormatter.ts","../src/localization/Italian/localization.italian.ts","../src/localization/French/localization.french.ts","../src/localization/English/localization.english.ts","../src/localization/Spanish/localization.spanish.ts","../src/localization/Russian/localization.russian.ts","../src/localization/Portuguese/localization.portuguese.ts","../src/localization/Chinese-simplified/localization.simplifiedChinese.ts","../src/localization/Chinese-traditional/localization.traditionalChinese.ts","../src/localization/FileItem.localization.ts","../src/localization/dropzone.localization.ts","../src/localization/validationError.localization.ts","../src/reader/readers.ts","../src/reader/resizeImage.ts","../src/reader/imageOrientation.ts","../src/mime/icons.ts","../src/utils/getExt.ts","../src/mime/mime.ts","../src/types/ExtFile.ts","../src/types/ExtFileManager.ts","../src/types/UploadConfig.ts","../src/synthetic-file/SyntheticFile.ts","../src/utils/IdGenerator.ts","../src/utils/fileListParser.ts","../src/utils/dropzone.utils.ts","../src/utils/shrinkWord.ts","../src/utils/fakeupload.utils.ts","../src/utils/randomInt.ts","../src/utils/input.utils.ts","../src/utils/addClassName.ts","../src/utils/isUploadAbleExtFile.ts","../src/utils/getLocalFileItemData.ts","../src/validation/separateAccept.ts","../src/validation/validateAccept.ts","../src/validation/fileValidator.ts","../src/validation/fakeerros.ts","../src/synthetic-file/syntheticfileGenerator.ts","../src/validation/randomStatus.ts","../src/mocks/extFileMock.ts","../src/upload/addExtraData.upload.ts","../src/upload/addheaders.upload.ts","../src/upload/errors.upload.ts","../src/upload/response.upload.ts","../src/upload/upload.ts","../src/upload/utils.upload.ts","../src/color/namedColors.ts","../src/color/colors.ts","../src/file-manager/reconcilation.ts"],"sourcesContent":["/**\r\n * Gives a XX.XX format in Bytes KB, MB, GB or TB\r\n * @param fileSize file size to give format in Bytes\r\n */\r\n export const fileSizeFormater = (fileSize?: number | false): string| undefined => {\r\n    let result = \"\";\r\n    if (!fileSize) {\r\n        return undefined;\r\n    }\r\n    if (fileSize < 1024) {\r\n        result = fileSize + \" Bytes\"\r\n    } else {\r\n        //KB\r\n        if (fileSize < 1024 * 1024) {\r\n            result = (fileSize / 1024).toFixed(2) + \" KB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024) {\r\n            result = ((fileSize / 1024) / 1024).toFixed(2) + \" MB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024 * 1024) {\r\n            result = (((fileSize / 1024) / 1024) / 1024).toFixed(2) + \" GB\";\r\n        } else {\r\n            result = ((((fileSize / 1024) / 1024) / 1024) / 1024).toFixed(2) + \" TB\";\r\n        }\r\n    }\r\n    return result;\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Italian translation for Dropzone component\r\n */\r\nexport const DropzoneItalian: LocalLabels = {\r\n    defaultLabel: \"Trascina qui i tuoi file\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Caricamento di ${amountOfFiles} file`; },\r\n    uploadFinished: (uploaded, rejected) => `File caricati: ${uploaded}, File rifiutati: ${rejected}`,\r\n    noFilesMessage: `Nessun file valido in attesa di essere caricato`,\r\n    footer: {\r\n        acceptAll: `Tutti i tipi di file sono accettati`,\r\n        acceptCustom: (accept) => `Tipi di file consentiti: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Caricamento\",\r\n        maxSizeMessage: (maxFileSize) => `Dimensione massima ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `File  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Il file è stato caricato con successo \",\r\n    fakeUploadError: \"Errore di caricamento del file\",\r\n}\r\n\r\n/**\r\n * Italian translation for FileItem component\r\n */\r\nexport const FileItemItalian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Dimensione: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"preparazione\",\r\n        uploading: \"In corso\",\r\n        success: \"Successo\",\r\n        valid: \"Valido\",\r\n        denied: \"Non válido\",\r\n        error: \"Errore\",\r\n        aborted:\"Interrotto\"\r\n    },\r\n}\r\n/**\r\n * Italian translation for Validation Errors\r\n */\r\n export const ValidateErrorItalian: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Il file è molto grande. Il tam. il massimo è ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo di file illegale`,\r\n    maxFileCount: (maxFiles) => `Numero massimo di file (${maxFiles}) raggiunto`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * French translation for Dropzone component\r\n */\r\nexport const DropzoneFrench: LocalLabels = {\r\n    defaultLabel: \"Déposez vos fichiers ici\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Envoi de ${amountOfFiles} fichiers`; },\r\n    uploadFinished: (uploaded, rejected) => `Fichiers téléchargés : ${uploaded}, Fichiers rejetés: ${rejected}`,\r\n    noFilesMessage: `Aucun fichier valide ne manque`,\r\n    footer: {\r\n        acceptAll: `Tous types de fichiers acceptés `,\r\n        acceptCustom: (accept) => `Types de fichier: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Envoyer\",\r\n        maxSizeMessage: (maxFileSize) => `Taille maximale ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Fichiers  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Le fichier a été téléchargé avec succès\",\r\n    fakeUploadError: \"Erreur lors du téléchargement \",\r\n}\r\n\r\n/**\r\n * French translation for FileItem component\r\n */\r\nexport const FileItemFrench: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Le nom: `,\r\n        size: \"Le taille: \",\r\n        type: \"Le type: \"\r\n    },\r\n    status: {\r\n        preparing:\"préparer\",\r\n        uploading: \"En cours\",\r\n        success: \"Succès\",\r\n        valid: \"Valide\",\r\n        denied: \"Refusé\",\r\n        error: \"Erreur\",\r\n        aborted:\"Interrompu\"\r\n    },\r\n}\r\n/**\r\n * French translation for Validation Errors\r\n */\r\n export const ValidateErrorFrench: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Le fichier est très volumineux. Le tam. le maximum est de ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Type de fichier illégal `,\r\n    maxFileCount: (maxFiles) => `Limite de fichiers atteinte (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneEnglish: LocalLabels = {\r\n    defaultLabel: \"Drop your files here\",\r\n    uploadingMessage: (amountOfFiles) => { return `Uploading ${amountOfFiles} files`; },\r\n    uploadFinished: (uploaded, rejected) => `Uploaded files: ${uploaded}, Rejected files: ${rejected}`,\r\n    noFilesMessage: `There is no missing valid file to upload`,\r\n    footer: {\r\n        acceptAll: `All file types accepted`,\r\n        acceptCustom: (accept) => `Allowed types: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Upload files\",\r\n        maxSizeMessage: (maxFileSize) => `Max file size: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Files ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"File was successfuly uploaded\",\r\n    fakeUploadError: \"Error on uploading. Please try again later.\",\r\n}\r\n\r\n/**\r\n * English translation for FileItem component\r\n */\r\nexport const FileItemEnglish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Name: `,\r\n        size: \"Size: \",\r\n        type: \"Type: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparing\",\r\n        uploading: \"Uploading\",\r\n        success: \"Success\",\r\n        valid: \"Valid\",\r\n        denied: \"Not valid\",\r\n        error: \"Error\",\r\n        aborted:\"Aborted\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorEnglish: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `File is too big. Max file size allowed is ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `File type is not allowed`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Max amount of files (${maxFiles}) has been reached`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Spanish translation for Dropzone component\r\n */\r\nexport const DropzoneSpanish: LocalLabels = {\r\n    defaultLabel: \"Suelta tus archivos aquí\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Subiendo ${amountOfFiles} archivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Archivos subidos: ${uploaded}, Archivos rechazados: ${rejected}`,\r\n    noFilesMessage: `No hay archivos válidos pendientes por subir`,\r\n    footer: {\r\n        acceptAll: `Todos los tipos de archivo aceptados`,\r\n        acceptCustom: (accept) => `Tipo(s) de archivo permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Subir\",\r\n        maxSizeMessage: (maxFileSize) => `Tam. máximo ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Archivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"El archivo se subió correctamente\",\r\n    fakeUploadError: \"Error al subir el archivo\",\r\n}\r\n\r\n/**\r\n * Spanish translation for FileItem component\r\n */\r\nexport const FileItemSpanish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nombre: `,\r\n        size: \"Tamaño: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Subiendo\",\r\n        success: \"Éxito\",\r\n        valid: \"Válido\",\r\n        denied: \"No válido\",\r\n        error: \"Error\",\r\n        aborted: \"Anulado\"\r\n    },\r\n}\r\n/**\r\n * Spanish translation for Validation Errors\r\n */\r\nexport const ValidateErrorSpanish: LocalLabels = {\r\n    maxSizeError: (maxSize) => `El archivo es muy grande. El tam. máximo es ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo de archivo no permitido`,\r\n    maxFileCount: (maxFiles) => `Cantidad máxima de archivos (${maxFiles}) alcanzada`\r\n}\r\n","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Russian translation for Dropzone component\r\n */\r\nexport const DropzoneRussian: LocalLabels = {\r\n    defaultLabel: \"Перетащите сюда свои файлы.\",\r\n    uploadingMessage: (amountOfFiles) => { return `Выгрузка ${amountOfFiles} файлов`; },\r\n    uploadFinished: (uploaded, rejected) => `Загружено файлов: ${uploaded}, отклоненных файлов: ${rejected}`,\r\n    noFilesMessage: `Действительный файл не отсутствует для загрузки`,\r\n    footer: {\r\n        acceptAll: `Принимаются все типы файлов `,\r\n        acceptCustom: (accept) => `Допустимые типы: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Отправить\",\r\n        maxSizeMessage: (maxFileSize) => `макс размер: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Файлы ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Файл был успешно загружен\",\r\n    fakeUploadError: \"Ошибка при загрузке\",\r\n}\r\n\r\n/**\r\n * Russian translation for FileItem component\r\n *\r\n */\r\nexport const FileItemRussian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Имя: `,\r\n        size: \"Размер: \",\r\n        type: \"Tип: \"\r\n    },\r\n    status: {\r\n        preparing:\"подготовка\",\r\n        uploading: \"Загрузка\",\r\n        success: \"успех\",\r\n        valid: \"годный\",\r\n        denied: \"выкинутый\",\r\n        error: \"ошибка\",\r\n        aborted:\"прерванный\"\r\n    },\r\n}\r\n\r\n/**\r\n * Russian translation for Validation Errors\r\n */\r\nexport const ValidateErrorRussian: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `Файл слишком большой. Максимально допустимый размер файла - ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Тип файла не разрешен`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Достигнуто максимальное количество файлов (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Portuguese translation for Dropzone\r\n */\r\nexport const DropzonePortuguese: LocalLabels = {\r\n    defaultLabel: \"Solte seus arquivos aqui \",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Enviando ${amountOfFiles} arquivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Arquivos enviados: ${uploaded}, Arquivos rejeitados: ${rejected}`,\r\n    noFilesMessage: `Nenhum arquivo válido está faltando para enviar`,\r\n    footer: {\r\n        acceptAll: `Todos os tipos de arquivo são aceitos`,\r\n        acceptCustom: (accept) => `Tipos permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Enviar\",\r\n        maxSizeMessage: (maxFileSize) => `Tamanho máximo: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Arquivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"O arquivo foi enviado com sucesso\",\r\n    fakeUploadError: \"Erro ao enviar\",\r\n}\r\n\r\n\r\n/**\r\n * Portuguese translation for FileItem component\r\n */\r\nexport const FileItemPortuguese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Tamanho: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Enviando\",\r\n        success: \"Êxito\",\r\n        valid: \"válido\",\r\n        denied: \"Negado\",\r\n        error: \"Erro\",\r\n        aborted:\"Abortado\"\r\n    },\r\n}\r\n/**\r\n * Portuguese translation for Validation Errors\r\n */\r\n export const ValidateErrorPortuguese: LocalLabels = {\r\n    maxSizeError: (maxSize) => `O arquivo é muito grande. O tamanho máximo de arquivo permitido é ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `O tipo de arquivo não é permitido `,\r\n    maxFileCount: (maxFiles) => `Quantidade máxima de arquivos (${maxFiles}) alcançada`\r\n}","import { LocalLabels } from \"../../types\";\r\nimport { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneSimplifiedChinese: LocalLabels = {\r\n    defaultLabel: \"将您的文件放在这里\",\r\n    uploadingMessage: (amountOfFiles) => { return `上传 ${amountOfFiles} 个文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上传文件:${uploaded},拒绝文件:${rejected}`,\r\n    noFilesMessage: `没有缺少要加载的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件类型`,\r\n        acceptCustom: (accept) => `允许的类型: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上传文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `文档 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上传\",\r\n    fakeUploadError: \"上传时出错\",\r\n}\r\n\r\n/**\r\n * Chinnese translation for FileItem component\r\n */\r\nexport const FileItemSimplifiedChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文档名称: `,\r\n        size: \"尺寸: \",\r\n        type: \"文件类型: \"\r\n    },\r\n    status: {\r\n        preparing:\"预加载\",\r\n        uploading: \"上传\",\r\n        success: \"成功\",\r\n        valid: \"接受的文件\",\r\n        denied: \"被拒绝的文件\",\r\n        error: \"错误\",\r\n        aborted:\"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorSimplifiedChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允许的最大文件大小为 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件类型不允许`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已达到最大文件数 (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneTraditionalChinese: LocalLabels = {\r\n    defaultLabel: \"把你的文件放在這裡 \",\r\n    uploadingMessage: (amountOfFiles) => { return `上傳${amountOfFiles}個文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上傳文件: ${uploaded}, 拒絕的文件:${rejected}`,\r\n    noFilesMessage: `沒有缺少要上傳的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件類型`,\r\n        acceptCustom: (accept) => `允許的類型:${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上傳文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => ` 文件 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上傳\",\r\n    fakeUploadError: \"上傳時出錯\",\r\n}\r\n\r\n/**\r\n * Chinese translation for FileItem component\r\n */\r\nexport const FileItemTraditionalChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文檔名稱: `,\r\n        size: \"文件大小: \",\r\n        type: \"文件類型: \"\r\n    },\r\n    status: {\r\n        preparing: \"預加載\",\r\n        uploading: \"上傳\",\r\n        success: \"成功\",\r\n        valid: \"有效文件\",\r\n        denied: \"無效文件\",\r\n        error: \"錯誤\",\r\n        aborted: \"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorTraditionalChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允許的最大文件大小為 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件類型不允許`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已達到最大文件數 (${maxFiles})`\r\n}","import { FileItemRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"../types\";\r\nimport { FileItemEnglish } from \"./English/localization.english\";\r\nimport { FileItemFrench } from \"./French/localization.french\";\r\nimport { FileItemPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { FileItemSpanish } from \"./Spanish/localization.spanish\";\r\nimport { FileItemSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { FileItemTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { FileItemItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const FileItemLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": FileItemSpanish,\r\n    \"EN-en\": FileItemEnglish,\r\n    \"FR-fr\": FileItemFrench,\r\n    \"IT-it\": FileItemItalian,\r\n    \"PT-pt\": FileItemPortuguese,\r\n    \"RU-ru\": FileItemRussian,\r\n    \"ZH-cn\": FileItemSimplifiedChinese,\r\n    \"ZH-hk\": FileItemTraditionalChinese\r\n}\r\n\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const FileItemLocalizerSelector = (local?: Localization): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return FileItemLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return FileItemLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return FileItemLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return FileItemLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return FileItemLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return FileItemLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return FileItemLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return FileItemLocalizer[\"ZH-hk\"];\r\n        default: return FileItemLocalizer[\"EN-en\"];\r\n    }\r\n}","import { DropzoneRussian } from \"./Russian/localization.russian\";\r\nimport { DropzoneEnglish } from \"./English/localization.english\";\r\nimport { DropzoneFrench } from \"./French/localization.french\";\r\nimport { DropzonePortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { DropzoneSpanish } from \"./Spanish/localization.spanish\";\r\nimport { DropzoneSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { DropzoneTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { DropzoneItalian } from \"./Italian/localization.italian\";\r\nimport { ComponentLocalizer, Localization, LocalLabels } from \"../types\";\r\n\r\nexport const DropzoneLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": DropzoneSpanish,\r\n    \"EN-en\": DropzoneEnglish,\r\n    \"FR-fr\": DropzoneFrench,\r\n    \"IT-it\": DropzoneItalian,\r\n    \"PT-pt\": DropzonePortuguese,\r\n    \"RU-ru\": DropzoneRussian,\r\n    \"ZH-cn\": DropzoneSimplifiedChinese,\r\n    \"ZH-hk\": DropzoneTraditionalChinese\r\n\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const DropzoneLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return DropzoneLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return DropzoneLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return DropzoneLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return DropzoneLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return DropzoneLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return DropzoneLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return DropzoneLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return DropzoneLocalizer[\"ZH-hk\"];\r\n        default: return DropzoneLocalizer[\"EN-en\"];\r\n    }\r\n}","import { ValidateErrorRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"./../types\";\r\nimport { ValidateErrorEnglish } from \"./English/localization.english\";\r\nimport { ValidateErrorFrench } from \"./French/localization.french\";\r\nimport { ValidateErrorPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { ValidateErrorSpanish } from \"./Spanish/localization.spanish\";\r\nimport { ValidateErrorSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { ValidateErrorTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { ValidateErrorItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const ValidateErrorLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": ValidateErrorSpanish,\r\n    \"EN-en\": ValidateErrorEnglish,\r\n    \"FR-fr\": ValidateErrorFrench,\r\n    \"IT-it\": ValidateErrorItalian,\r\n    \"PT-pt\": ValidateErrorPortuguese,\r\n    \"RU-ru\": ValidateErrorRussian,\r\n    \"ZH-cn\": ValidateErrorSimplifiedChinese,\r\n    \"ZH-hk\": ValidateErrorTraditionalChinese,\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const ValidateErrorLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    if (!local || ![\"ES-es\", \"EN-en\", \"FR-fr\", \"IT-it\", \"PT-pt\", \"RU-ru\", \"ZH-cn\", \"ZH-hk\"].includes(local)) {\r\n        return ValidateErrorLocalizer[\"EN-en\"];\r\n    }\r\n    return ValidateErrorLocalizer[local];\r\n}","/**\r\n * Reads an image (or other type) file as data URL in a promise way, \r\n * so you can use await.\r\n * It will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @returns data URL of the file\r\n */\r\nexport const readAsDataURL = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.readAsDataURL(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file as Text in a promise way, so you can use await.\r\n * If other kind of file is sent, this function will read it anyway\r\n * and will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns data text of the file\r\n */\r\nexport const readAsText = (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsText(file, encoding ? encoding : \"base64\");\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file and return the raw binary data from the file. \r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns raw binary data of the file\r\n */\r\nexport const readAsBinaryString = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsBinaryString(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n/**\r\n * Reads a file and returns an ArrayBuffer representing the file's data \r\n * @param file File or blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns ArrayBuffer representation of the file\r\n */\r\nexport const readAsArrayBuffer = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsArrayBuffer(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function resizeImage(\r\n    base64Str: string,\r\n    maxWidth = 135,\r\n    maxHeight = 120\r\n): Promise<string | undefined> {\r\n    return new Promise((resolve, reject) => {\r\n        try {\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = base64Str;\r\n            img.onload = () => {\r\n                let canvas: HTMLCanvasElement = document.createElement('canvas');\r\n                const MAX_WIDTH: number = maxWidth;\r\n                const MAX_HEIGHT: number = maxHeight;\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n\r\n                if (maxWidth > width && maxHeight > height) {\r\n                    resolve(base64Str);\r\n                } else\r\n                    if (width > height) {\r\n                        if (width > MAX_WIDTH) {\r\n                            height *= MAX_WIDTH / width;\r\n                            width = MAX_WIDTH;\r\n                        }\r\n                    } else {\r\n                        if (height > MAX_HEIGHT) {\r\n                            width *= MAX_HEIGHT / height;\r\n                            height = MAX_HEIGHT;\r\n                        }\r\n                    }\r\n                canvas.width = width\r\n                canvas.height = height\r\n                let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d')\r\n                if (ctx) {\r\n                    ctx.drawImage(img, 0, 0, width, height);\r\n                    resolve(canvas.toDataURL());\r\n\r\n                } else {\r\n                    if (process.env.NODE_ENV === \"development\") {\r\n                        console.error(\"An error ocurred when trying to make a thumnail\");\r\n                    }\r\n                    reject(undefined);\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to make a thumnail\");\r\n            }\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function getImageOrientation(\r\n    imageSource: string | undefined,\r\n): Promise<\"landscape\" | \"portrait\"> {\r\n    return new Promise((resolve, reject) => {\r\n        //console.log(\"getImageOrientation imageSource\", imageSource);\r\n        if (!imageSource || imageSource.length === 0) {\r\n           // console.log(\"getImageOrientation rejected\", imageSource);\r\n\r\n            reject(\"landscape\");\r\n            return;\r\n        }\r\n        try {\r\n            //console.log(\"getImageOrientation try ini\", imageSource);\r\n\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = imageSource;\r\n            img.onerror = (ev: string | Event) => {\r\n                //console.log(\"getImageOrientation There was a ne error reading\", ev);\r\n                reject(\"landscape\");\r\n            }\r\n            img.onload = () => {\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n                if (width > height) {\r\n                    resolve(\"landscape\");\r\n                } else {\r\n                    resolve(\"portrait\");\r\n                }\r\n            }\r\n        } catch (error) {\r\n            //console.error(\"An error ocurred when trying to get the image orientation\");\r\n\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to get the image orientation\");\r\n            }\r\n            reject(\"landscape\");\r\n        }\r\n    });\r\n}\r\n\r\n","export const sevenzip = \"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png\";\r\nexport const aac = \"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png\";\r\nexport const abw = \"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png\";\r\nexport const accdb = \"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png\";\r\nexport const avi = \"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png\";\r\nexport const azw = \"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png\";\r\nexport const bmp = \"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png\";\r\nexport const bz = \"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png\";\r\nexport const bz2 = \"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png\";\r\nexport const c = \"https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png\";\r\nexport const cda = \"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png\";\r\nexport const csh = \"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png\";\r\nexport const css = \"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png\";\r\nexport const csv = \"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png\";\r\nexport const docx = \"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png\";\r\nexport const docx2 = \"https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png\";\r\nexport const drawio = \"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png\";\r\nexport const dw = \"https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png\";\r\nexport const eml = \"https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png\";\r\nexport const eot = \"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png\";\r\nexport const eps = \"https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png\";\r\nexport const epub = \"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png\";\r\nexport const freearc = \"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png\";\r\nexport const gif = \"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png\";\r\nexport const gzip = \"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png\";\r\nexport const html = \"https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png\";\r\nexport const icalendar = \"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png\";\r\nexport const ind = \"https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png\";\r\nexport const ini = \"https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png\";\r\nexport const java = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const jar = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const javascript = \"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png\";\r\nexport const jpeg = \"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png\";\r\nexport const jsf = \"https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png\";\r\nexport const json = \"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png\";\r\nexport const jsonld = \"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png\";\r\nexport const midi = \"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png\";\r\nexport const mov = \"https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png\";\r\nexport const mp3 = \"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png\";\r\nexport const mp4 = \"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png\";\r\nexport const mpeg = \"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png\";\r\nexport const mpkg = \"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png\";\r\nexport const octet = \"https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png\";\r\nexport const odp = \"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png\";\r\nexport const ods = \"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png\";\r\nexport const odt = \"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png\";\r\nexport const oga = \"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png\";\r\nexport const ogv = \"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png\";\r\nexport const ogx = \"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png\";\r\nexport const opus = \"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png\";\r\nexport const otf = \"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png\";\r\nexport const pdf = \"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png\";\r\nexport const php = \"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png\";\r\nexport const png = \"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png\";\r\nexport const pptx = \"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png\";\r\nexport const pptx2 = \"https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png\";\r\nexport const proj = \"https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png\";\r\nexport const psd = \"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png\";\r\nexport const pst = \"https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png\";\r\nexport const publisher = \"https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png\";\r\nexport const python = \"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png\";\r\nexport const tar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const rar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const react = \"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png\";\r\nexport const richtextformat = \"https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png\";\r\nexport const rtf = \"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png\";\r\nexport const sass = \"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png\";\r\nexport const settings = \"https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png\";\r\nexport const sh = \"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png\";\r\nexport const swf = \"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png\";\r\nexport const text = \"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png\";\r\nexport const tiff = \"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png\";\r\nexport const ttf = \"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png\";\r\nexport const typescript = \"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png\";\r\nexport const url = \"https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png\";\r\nexport const vsd = \"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png\";\r\nexport const vue = \"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png\";\r\nexport const wav = \"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png\";\r\nexport const webm = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const weba = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const webp = \"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png\";\r\nexport const wma = \"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png\";\r\nexport const wmv = \"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png\";\r\nexport const woff = \"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png\";\r\nexport const xlsx = \"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png\";\r\nexport const xlsx2 = \"https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png\";\r\nexport const xml = \"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png\";\r\nexport const xul = \"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png\";\r\nexport const zip = \"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png\";\r\n","/**\r\n * Looks for the first file extension\r\n * @param fileName file name\r\n * @returns the file name extension\r\n */\r\n export const getExt = (fileName: string): string => {\r\n    const re = /(?:\\.([^.]+))?$/;\r\n    const result = re.exec(fileName);\r\n    if (result) {\r\n        return result[1];\r\n    } else {\r\n        return \"\";\r\n    }\r\n\r\n};","import {\r\n    aac, abw, accdb, avi, azw,\r\n    bmp, bz, bz2, cda,\r\n    csh, css, csv,\r\n    docx, drawio,\r\n    eot, epub,\r\n    freearc, gif, gzip,\r\n    html, icalendar,\r\n    jar, java, javascript, jpeg, json, jsonld,\r\n    midi, mp3, mp4, mpeg, mpkg,\r\n    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,\r\n    pdf, php, png, pptx, psd, python,\r\n    rar, react, rtf,\r\n    sass, sevenzip, sh, swf,\r\n    tar, text, tiff, ttf, typescript,\r\n    vsd, vue,\r\n    wav, weba, webm, webp, wma, wmv, woff,\r\n    xlsx, xml, xul,\r\n    zip\r\n} from \"./icons\";\r\nimport { getExt } from \"../utils/getExt\";\r\nimport { IconsMap } from \"../types\";\r\n\r\nconst DEF_GEN_MIME: keyof IconsMap = \"octet\";\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const audioSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"aac\": return \"aac\";\r\n        case \"midi\": return \"midi\";\r\n        case \"x-midi\": return \"midi\";\r\n        case \"mpeg\": return \"mpeg\";//mp3\r\n        case \"ogg\": return \"oga\";\r\n        case \"opus\": return \"opus\";\r\n        case \"wav\": return \"wav\";\r\n        case \"webm\": return \"webm\";\r\n        //case \"3gpp\": return \"threegp\";\r\n        //case \"3gpp2\": return \"threegp\";\r\n        //case \"mp3\": return \"mp3\";\r\n        case \"wma\": return \"wma\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\nexport const textSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"css\": return \"css\";\r\n        case \"csv\": return \"csv\";\r\n        case \"html\": return \"html\";\r\n        case \"calendar\": return \"icalendar\";\r\n        case \"javascript\": return \"javascript\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"plain\": return \"text\";\r\n        case \"xml\": return \"xml\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const imageSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"bmp\": return \"bmp\";\r\n        case \"gif\": return \"gif\";\r\n        // case \"vnd.microsoft.icon\": return \"ico\";\r\n        //case \"ico\": return \"ico\";\r\n        case \"jpg\": return \"jpeg\";\r\n        case \"jpeg\": return \"jpeg\";\r\n        case \"png\": return \"png\";\r\n        //case \"svg+xml\": return \"svg\";\r\n        //case \"svg\": return \"svg\";\r\n        case \"tiff\": return \"tiff\";\r\n        case \"webp\": return \"webp\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const fontSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"otf\": return \"otf\";\r\n        case \"ttf\": return \"ttf\";\r\n        case \"woff\": return \"woff\";\r\n        case \"woff2\": return \"woff\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\n\r\nexport const videoSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-msvideo\": return \"avi\";\r\n        case \"msvideo\": return \"avi\";\r\n        case \"avi\": return \"avi\";\r\n        case \"mp4\": return \"mp4\";\r\n        case \"mpeg\": return \"mpeg\";\r\n        case \"ogg\": return \"ogv\";\r\n        case \"mp2t\": return \"mp2t\";\r\n        case \"wmv\": return \"wmv\";\r\n\r\n        case \"webm\": return \"webm\";\r\n        // case \"3gpp\": return \"threegp\";\r\n        // case \"3gpp2\": return \"threegp2\";\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const applicationSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-abiword\": return \"abw\";\r\n        case \"abiword\": return \"abw\";\r\n        case \"x-freearc\": return \"arc\";\r\n        case \"freearc\": return \"arc\";\r\n        case \"vnd.amazon.ebook\": return \"azw\";\r\n        case \"octet-stream\": return \"octet\";\r\n        case \"x-bzip\": return \"bz\";\r\n        case \"x-bzip2\": return \"bz2\";\r\n        case \"bzip\": return \"bz\";\r\n        case \"bzip2\": return \"bz2\";\r\n        case \"x-cdf\": return \"cda\";\r\n        case \"msaccess\": return \"accdb\";\r\n        case \"csh\": return \"csh\";\r\n        case \"x-csh\": return \"csh\";\r\n        case \"vnd.ms-fontobject\": return \"eot\";\r\n        case \"epub+zip\": return \"epub\";\r\n        case \"gzip\": return \"gzip\";\r\n        case \"java-archive\": return \"jar\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"json\": return \"json\";\r\n        case \"ld+json\": return \"jsonld\";\r\n        case \"vnd.apple.installer+xml\": return \"mpkg\";\r\n        case \"ogg\": return \"ogx\";\r\n        case \"vnd.rar\": return \"rar\";\r\n        case \"rtf\": return \"rtf\";\r\n        case \"x-sh\": return \"sh\";\r\n        case \"sh\": return \"sh\";\r\n        case \"x-shockwave-flash\": return \"swf\";\r\n        case \"x-tar\": return \"tar\";\r\n        case \"x-httpd-php\": return \"php\";\r\n        case \"vnd.visio\": return \"vsd\";\r\n        case \"xhtml+xml\": return \"xhtml\";\r\n        case \"xml\": return \"xml\";\r\n        case \"vnd.mozilla.xul+xml\": return \"xul\";\r\n        case \"vnd.openxmlformats-officedocument.wordprocessingml.document\": return \"docx\";\r\n        case \"msword\": return \"docx\";\r\n        case \"vnd.openxmlformats-officedocument.spreadsheetml.sheet\": return \"xlsx\";\r\n        case \"vnd.openxmlformats-officedocument.presentationml.presentation\": return \"pptx\";\r\n        case \"vnd.ms-powerpoint\": return \"pptx\";\r\n        case \"vnd.oasis.opendocument.presentation\": return \"odp\";\r\n        case \"vnd.oasis.opendocument.text\": return \"odt\";\r\n        case \"vnd.oasis.opendocument.spreadsheet\": return \"ods\";\r\n        case \"zip\": return \"zip\";\r\n        case \"x-zip-compressed\": return \"zip\";\r\n        case \"pdf\": return \"pdf\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mime type the mime type given belongs to\r\n * @param mimeType mime type to be searched \r\n * @returns the generic type, \r\nif not found it return \"octet\" that means generic binary file\r\n */\r\nexport const mimeSelector = (mimeType?: string): keyof IconsMap => {\r\n    // let genericMime: string | undefined = undefined;\r\n    if (!mimeType || !mimeType.includes(\"/\")) {\r\n        return DEF_GEN_MIME;\r\n    }\r\n    let headerMime = mimeType.split(\"/\")[0];\r\n    let tailMime = mimeType.split(\"/\")[1];\r\n    /**\r\n     * Every mimetype that \r\n     * starts with: \"application/....\"\r\n     */\r\n\r\n    switch (headerMime) {\r\n        case \"application\": return applicationSelector(tailMime);\r\n        case \"audio\": return audioSelector(tailMime);\r\n        case \"video\": return videoSelector(tailMime);\r\n        case \"text\": return textSelector(tailMime);\r\n        case \"image\": return imageSelector(tailMime);\r\n        case \"font\": return fontSelector(tailMime);\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mapped extension\r\n * the given exension belongs to\r\n * \r\n * @param extension \r\n * @returns \r\n */\r\nexport const extensionSelector = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"octet\";\r\n\r\n    if (extension && extension !== \"\") {\r\n        if (extension.includes(\"zip\") || extension.includes(\"rar\")) {\r\n            genericMime = \"zip\";\r\n        } else if (extension.includes(\"doc\")) {\r\n            genericMime = \"docx\";\r\n        } else if (extension.includes(\"xls\")) {\r\n            genericMime = \"xlsx\";\r\n        } else if (extension.includes(\"drawio\")) {\r\n            genericMime = \"drawio\";\r\n        } else if (extension.includes(\"psd\")) {\r\n            genericMime = \"psd\";\r\n        } else if (extension.includes(\"csv\")) {\r\n            genericMime = \"csv\";\r\n        } else if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"sass\" || extension === \"scss\") {\r\n            genericMime = \"sass\";\r\n        }\r\n    }\r\n    return genericMime;\r\n\r\n}\r\n/**\r\n * Chack for extention whether the file is code os not\r\n * @param extension \r\n * @returns \r\n */\r\nexport const checkIsCode = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"text\";\r\n    if (extension && extension !== \"\") {\r\n        if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\" || extension === \"tsx\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"js\") {\r\n            genericMime = \"javascript\";\r\n        } else if (extension === \"xml\") {\r\n            genericMime = \"xml\";\r\n        } else if (extension === \"php\") {\r\n            genericMime = \"php\";\r\n        }\r\n    }\r\n    return genericMime;\r\n}\r\n\r\n/**\r\n * Looks for a suitable file icon\r\n * If not found, returns octet-stream url\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico\r\n */\r\nexport const getURLFileIco = (\r\n    file: File | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"fallBack\";\r\n    //if not file, return octet\r\n    if (!file) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(file.type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(file.name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\n/**\r\n * Looks for a suitable file icon\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico, if not found, turns octet-stream url\r\n */\r\nexport const getURLFileIcoFromNameAndType = (\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"octet\";\r\n    //if not nam and type, return octet\r\n    if (!name) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\ninterface ResultFileIco {\r\n    url: string;\r\n    mimeResume: keyof IconsMap;\r\n}\r\n/**\r\n * set of registered mimes on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\r\n * \r\n */\r\ninterface MimeSelector {\r\n    [mime: string]: string;\r\n}\r\n\r\nconst mimeUrlList: MimeSelector = {\r\n    aac: aac,\r\n    accdb: accdb,\r\n    abw: abw,\r\n    arc: freearc,\r\n    avi: avi,\r\n    azw: azw,\r\n    octet: octet,\r\n    bmp: bmp,\r\n    bz: bz,\r\n    bz2: bz2,\r\n    cda: cda,\r\n    csh: csh,\r\n    css: css,\r\n    csv: csv,\r\n    docx: docx,\r\n    drawio: drawio,\r\n    eot: eot,\r\n    epub: epub,\r\n    gzip: gzip,\r\n    gif: gif,\r\n    html: html,\r\n    //ico: ico,\r\n    icalendar: icalendar,\r\n    jar: jar,\r\n    jpeg: jpeg,\r\n    javascript: javascript,\r\n    json: json,\r\n    jsonld: jsonld,\r\n    midi: midi,\r\n    //  js: js,\r\n    mp3: mp3,\r\n    mp4: mp4,\r\n    mpeg: mpeg,\r\n    mpkg: mpkg,\r\n    mp2t: octet,\r\n    odp: odp,\r\n    ods: ods,\r\n    odt: odt,\r\n    oga: oga,\r\n    ogv: ogv,\r\n    ogx: ogx,\r\n    opus: opus,\r\n    otf: otf,\r\n    png: png,\r\n    pdf: pdf,\r\n    php: php,\r\n    pptx: pptx,\r\n    psd: psd,\r\n    rar: rar,\r\n    rtf: rtf,\r\n    sass: sass,\r\n    sh: sh,\r\n    //svg: svg,\r\n    swf: swf,\r\n    tar: tar,\r\n    tiff: tiff,\r\n    ttf: ttf,\r\n    //ts: ts,\r\n    typescript: typescript,\r\n    text: text,\r\n    vsd: vsd,\r\n    wav: wav,\r\n    weba: weba,\r\n    webm: webm,\r\n    webp: webp,\r\n    woff: woff,\r\n    wma: wma,\r\n    wmv: wmv,\r\n    xhtml: html,\r\n    xlsx: xlsx,\r\n    xml: xml,\r\n    xul: xul,\r\n    zip: zip,\r\n    // threegp: threegp,\r\n    sevenzip: sevenzip,\r\n    python: python,\r\n    java: java,\r\n    react: react,\r\n    vue: vue,\r\n\r\n\r\n    fallBack: octet,\r\n};","\r\nimport { UPLOADSTATUS, ServerResponse } from \"../types\";\r\n\r\n/**\r\n * ExtFile === \"Extended File\".\r\n * This object \"extends\" the File Object\r\n */\r\nexport declare type ExtFile = {\r\n    /** \r\n     * An identifier for the extFile\r\n     */\r\n    id?: number | string | undefined;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    size?: number;\r\n    /**\r\n     * a flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    errors?: string[];\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    uploadMessage?: string;\r\n    /**\r\n     * Link, URI or string representation of an image\r\n     */\r\n    imageUrl?: string;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    xhr?: XMLHttpRequest;\r\n    /**\r\n     * The current percentage of upload progress.\r\n     * This value will have a higher priority over the upload progress value calculated inside the component.\r\n     * @default undefined\r\n     */\r\n    progress?: number;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when files are uploaded individually\r\n     */\r\n    extraUploadData?: Record<string, any>;\r\n    /**\r\n     * Any kind of extra data that could be needed.\r\n     */\r\n    extraData?: Object;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    serverResponse?: ServerResponse;\r\n    /**\r\n     * The url to be used to perform a GET request in order to download the\r\n        file. If defined, the download icon will be shown.\r\n     */\r\n    downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    videoUrl?: string;\r\n}\r\n\r\n/**\r\n * A class definition for ExtFile.\r\n * This class has the purpose to allow the creation of instances\r\n * of an ExtFile for performing complex operations that cannot be\r\n * accomplished just by using the ExtFile type.\r\n * For instance, it can help in changing the value of some attributes\r\n * across different scopes thanks to memory reference.\r\n */\r\nexport class ExtFileInstance {\r\n    /**\r\n     * An identifier for the extFile\r\n     */\r\n    public id?: number | string;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    public file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public size?: number;\r\n\r\n    public imageUrl?: string;\r\n    /**\r\n     * A flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    public valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    public errors?: string[];\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    public uploadMessage?: string;\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    public uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * The current upload progress\r\n     */\r\n    public progress?: number;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    public xhr?: XMLHttpRequest;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     */\r\n    public extraData?: Record<string, any>;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when filesare uploaded individually\r\n     */\r\n    public extraUploadData?: Record<string, any>;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    public serverResponse?: ServerResponse;\r\n    /**\r\n     * Url to perform a GET request in order to download the file.\r\n     * This  action is triggered when download button is clicked or pressed.\r\n     * In case onDownload prop is given\r\n     */\r\n    public downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    public videoUrl?: string;\r\n\r\n    constructor(extFile: ExtFile) {\r\n        const {\r\n            id,\r\n            file,\r\n            name,\r\n            size,\r\n            type,\r\n            imageUrl,\r\n            valid,\r\n            errors,\r\n            uploadMessage,\r\n            uploadStatus,\r\n            progress,\r\n            xhr,\r\n            extraData,\r\n            extraUploadData,\r\n            serverResponse,\r\n            downloadUrl, videoUrl\r\n        } = extFile;\r\n\r\n        this.id = id;\r\n        this.file = file;\r\n        this.name = name;\r\n        this.size = size;\r\n        this.type = type;\r\n        this.imageUrl = imageUrl;\r\n\r\n        this.valid = valid;\r\n        this.errors = errors;\r\n        this.uploadStatus = uploadStatus;\r\n        this.uploadMessage = uploadMessage;\r\n        this.progress = progress;\r\n        this.xhr = xhr;\r\n\r\n        this.extraData = extraData;\r\n        this.extraUploadData = extraUploadData;\r\n        this.serverResponse = serverResponse;\r\n\r\n        this.downloadUrl = downloadUrl;\r\n        this.videoUrl = videoUrl;\r\n    }\r\n    /**\r\n     * method under construction\r\n     */\r\n    /*  private static kamuiFile() {\r\n \r\n     }\r\n  */\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object\r\n     * @param extFileInstance the instance of ExtFile\r\n     * @returns an ExtFile object\r\n     */\r\n    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {\r\n        //console.log(\"before toExtFile()\", extFileInstance);\r\n\r\n        let extFileClone: ExtFile = {}; // the new empty object\r\n        const extFileInstanceKeys = Object.keys(extFileInstance) as [keyof ExtFile];\r\n        const extFileInstanceValues = Object.values(extFileInstance) as Array<ExtFile[keyof ExtFile]>;\r\n        // let's copy all user properties into it\r\n        for (let i = 0; i < extFileInstanceValues.length; i++) {\r\n            const currentValue: ExtFile[keyof ExtFile] = extFileInstanceValues[i];\r\n\r\n\r\n            const currKey = extFileInstanceKeys[i];\r\n            if (currentValue !== undefined) {\r\n\r\n                extFileClone[currKey] = currentValue as ExtFile[keyof ExtFile] as never;\r\n            }\r\n        }\r\n        //console.log(\"after toExtFile()\", extFileClone);\r\n        //console.log(\"current extFileClone keys\",Object.keys( extFileClone).length);\r\n        return extFileClone;\r\n    }\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.\r\n     * @returns an ExtFile object\r\n     */\r\n    toExtFile(): ExtFile {\r\n        return ExtFileInstance.toExtFile(this);\r\n    }\r\n\r\n  /*   static mock = (id?: number): ExtFileInstance => {\r\n        return new ExtFileInstance(\r\n            extFileMock(id)\r\n        );\r\n    } */\r\n}\r\n\r\n\r\n","import { ExtFileInstance, ExtFile } from \"./ExtFile\";\r\n\r\nexport class ExtFileManager {\r\n    private static nextId: number = 0;\r\n    static fileLists: Record<number | string, ExtFileInstance[] | undefined> = {};\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    public static getNextId(): number {\r\n        ExtFileManager.nextId++;\r\n        return ExtFileManager.nextId;\r\n    }\r\n    /**\r\n     * Updates a dui file list given an id\r\n     * @param id id of the fileList\r\n     * @param extFiles list of DuiFiles forinitializing the array\r\n     * @returns the id of the fileList\r\n     */\r\n    public static setFileList(\r\n        id: number | string | undefined,\r\n        extFilesInstances: ExtFileInstance[]\r\n    ): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            ExtFileManager.fileLists[id] = [...extFilesInstances];\r\n\r\n            return id;\r\n        }\r\n\r\n    }\r\n    /**\r\n     * Generates a new ID\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static createFileListMap(): number {\r\n        const nextId: number = ExtFileManager.getNextId();\r\n        ExtFileManager.fileLists[nextId] = [];\r\n\r\n        return nextId;\r\n    }\r\n\r\n    /**\r\n     * Deletes a list map\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static removeFileListMap(id?: number | string): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            try {\r\n                ExtFileManager.fileLists[id] = undefined;\r\n                return id;\r\n            } catch (error) {\r\n                if (process.env.NODE_ENV === \"development\")\r\n                    console.error(\"Error on remove\", error);\r\n                return 0;\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * \r\n     * @param id the id of the dropzone\r\n     * @returns \r\n     */\r\n    public static getExtFileInstanceList(\r\n        id?: number | string\r\n    ): ExtFileInstance[] | undefined {\r\n        try {\r\n            if (!id) {\r\n                return undefined;\r\n            }\r\n            return ExtFileManager.fileLists[id];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"Error on getExtFileInstanceList\", error);\r\n            return undefined;\r\n        }\r\n    }\r\n    /**\r\n     * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n     * Then sets on preparing stage all files according to the following creiteria:\r\n     * If theuploadStatus is diferent than \"sucess\" AND\r\n     * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n     * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n     * @param dropzoneId the id to access the right list\r\n     * @param localFiles the list of extFiles\r\n     * @param validateFiles flag that indicates that validation is active or o¿not\r\n     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n     * @returns a list of ExtFileInstance\r\n     */\r\n    public static setFileListMapPreparing(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n        //console.log(\"setFileListMapPreparing before if\", dropzoneId, localFiles, cleanOnUpload);\r\n\r\n        if (!(typeof dropzoneId === \"number\" || typeof dropzoneId === \"string\")) return undefined;\r\n\r\n        //console.log(\"setFileListMapPreparing before try\", localFiles, cleanOnUpload);\r\n        try {\r\n\r\n            let resultExtList: ExtFileInstance[] = [];\r\n\r\n            //initializes the extFileLInstance list\r\n            let temLocalFiles: ExtFile[] = [...localFiles];\r\n\r\n            //remove non valids if cleanOnUpload is true and validateFiles is also true\r\n            if (cleanOnUpload && validateFiles) {\r\n                // clean on Upload is true, so non valid files must be removed\r\n                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)\r\n                //console.log(\"temLocalFiles filter\", temLocalFiles);\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing after remove non valids\", temLocalFiles);\r\n\r\n            if (validateFiles) {\r\n                // validation flag was set to true, so only valid=true files will be set to \"preparing\"\r\n\r\n                //so, only valid files was kept in the temLocalfiles array\r\n                //now set the preparing state only for files with uploadStatus !== \"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\" && extFile.valid) {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            } else {\r\n                // all files will be set to \"preparing\" whether the valid value\r\n                // except those files with uploadStatus ===\"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\") {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing result\", temLocalFiles);\r\n\r\n            //converto to Object instances\r\n            resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));\r\n            //console.log(\"setFileListMapPreparing RESULT resultExtList\", resultExtList);\r\n\r\n            const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);\r\n            //console.log(\"setFileListMapPreparing RESULT resultSet\", resultSet);\r\n\r\n            return resultExtList;\r\n            // return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"setFileListMapPreparing Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    }\r\n\r\n\r\n\r\n    /**\r\n * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n * Then sets on preparing stage all files according to the following creiteria:\r\n * If theuploadStatus is diferent than \"sucess\" AND\r\n * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n * @param dropzoneId the id to access the right list\r\n * @param localFiles the list of extFiles\r\n * @param validateFiles flag that indicates that validation is active or o¿not\r\n * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n * @returns a list of ExtFileInstance\r\n */\r\n    public static setFileListMapPreparing2(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n\r\n        ExtFileManager.setFileList(dropzoneId, localFiles.map(F => new ExtFileInstance({ ...F, uploadStatus: \"preparing\" })));\r\n\r\n        return ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * \r\n     * @param dropzoneId \r\n     * @param index \r\n     * @param incommingDuiFile \r\n     * @returns \r\n     */\r\n    /* public static updateFileListMapPreparingById(\r\n        dropzoneId: number,\r\n        index: number,\r\n        incommingDuiFile: ExtFileInstance\r\n    ): ExtFileInstance[] | undefined {\r\n        if (!(typeof dropzoneId === \"number\") || !(typeof index === \"number\") || index > 0) return undefined;\r\n        const extFileList: ExtFileInstance[] | undefined = ExtFileManager.fileLists[dropzoneId];\r\n\r\n        if (!(extFileList && extFileList.length > 0)) return undefined;\r\n        extFileList[index]=\r\n        try {\r\n            ExtFileManager.setFileList(dropzoneId, [\r\n                ...localFiles.map(\r\n                    (x) =>\r\n                        new ExtFileInstance({ ...x, uploadStatus: \"preparing\" })\r\n                ),\r\n            ]);\r\n            return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n            console.error(\"Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    } */\r\n}","import { Method } from \"./method\"\r\n\r\nexport type UploadConfig = {\r\n    /**\r\n     * The url endpoint to upload the file.\r\n     * e.g. https://www.myasomwbackend/uploads/file\r\n     */\r\n    url?: string;\r\n    /**\r\n     * upload method, can be POST | PUT | PATCH\r\n     * @default \"POST\"\r\n     */\r\n    method?: Method;\r\n    /**\r\n     * Request headers for http request.\r\n     * e.g.\r\n     * ```jsx\r\n     * headers = { \r\n     *    \"content-type\": \"multipart/form-data\",\r\n     *    Authorization: \"Bearer YOUR_BEARER_TOKEN_GOES_HERE\",\r\n     * } \r\n     * ```\r\n     */\r\n    headers?: Record<string, string>;\r\n    /**\r\n     * the label to use in request\r\n     * On server this must be the label to get the file.\r\n     * @default \"file\"\r\n     */\r\n    uploadLabel?: string;\r\n    /**\r\n     * Flag for indicating whther to remove the non-valid files\r\n     * before starting the upload process.\r\n     * This flag is valid only if validation is enable\r\n     */\r\n    cleanOnUpload?: boolean;\r\n    /**\r\n     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also\r\n     * it will start the upload stage for the files if at least url was set\r\n     * By default is false\r\n     */\r\n    autoUpload?: boolean;\r\n    /**\r\n     * The time that will last the \"preparing\" stage\r\n     * By default is 1500 miliseconds = 1.5 seconds\r\n     */\r\n    preparingTime?: number;\r\n    /**\r\n     * A message to show in the footer when the uploading process takes place.\r\n     */\r\n    uploadingMessage?: string;\r\n}\r\n\r\nexport const createUploadConfig = (\r\n    url?: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n    cleanonUpload?: boolean\r\n) => {\r\n    return {\r\n        url,\r\n        method,\r\n        headers,\r\n        uploadLabel,\r\n        cleanonUpload\r\n    }\r\n}","\r\n/**\r\n * A syntetic file creator.\r\n * Very useful for tests\r\n */\r\nexport abstract class SyntheticFile {\r\n    /**\r\n * \r\n * @param name the file name\r\n * @param size the file size\r\n * @param type the file type\r\n * @returns \r\n */\r\n    static createFile = (name: string, size: number, type: string) => {\r\n        const file = new File([], name, { type });\r\n        Object.defineProperty(file, \"size\", {\r\n            get() {\r\n                return size;\r\n            },\r\n        });\r\n        return file;\r\n    };\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_aac = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"acc_audio-file-with-large-name.aac\", size ? size : 3516516, \"audio/aac\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_abw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"abiword-file-with-large-name.abw\", size ? size : 3516516, \"application/x-abiword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_freearc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"freearc-file-with-large-name.arc\", size ? size : 3516516, \"application/x-freearc\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_avi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"avi-file-with-large-name.avi\", size ? size : 3516516, \"video/x-msvideo\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_azw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"amazon_kindle_ebook-file-with-large-name.azw\", size ? size : 3516516, \"application/vnd.amazon.ebook\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_octet = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"binary_octet_stream-file-with-large-name.bin\", size ? size : 3516516, \"application/octet-stream\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bmp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"bit_map-file-with-large-name.bmp\", size ? size : 3516516, \"image/bmp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip-file-with-large-name.bz\", size ? size : 3516516, \"application/x-bzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip_2-file-with-large-name.bz2\", size ? size : 3516516, \"application/x-bzip2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_cda = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"cd_audio-file-with-large-name.cda\", size ? size : 3516516, \"application/x-cdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csh\", size ? size : 3516516, \"application/x-csh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_css = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.css\", size ? size : 3516516, \"text/css\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csv\", size ? size : 3516516, \"text/csv\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_doc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.doc\", size ? size : 3516516, \"application/msword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_docx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.docx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_eot = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.eot\", size ? size : 3516516, \"application/vnd.ms-fontobject\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_epub = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.epub\", size ? size : 3516516, \"application/epub+zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gzip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gz\", size ? size : 3516516, \"application/gzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gif\", size ? size : 3516516, \"image/gif\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_htm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.htm\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_html = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.html\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ico = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ico\", size ? size : 3516516, \"image/vnd.microsoft.icon\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_icalendar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ics\", size ? size : 3516516, \"text/calendar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jar\", size ? size : 3516516, \"application/java-archive\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpeg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_js = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.js\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_json = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.json\", size ? size : 3516516, \"application/json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jsonld = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jsonld\", size ? size : 3516516, \"application/ld+json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mjs = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mjs\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp3 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp3\", size ? size : 3516516, \"audio/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp4 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp4\", size ? size : 3516516, \"video/mp4\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpeg\", size ? size : 3516516, \"video/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpkg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpkg\", size ? size : 3516516, \"application/vnd.apple.installer+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odp\", size ? size : 3516516, \"application/vnd.oasis.opendocument.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ods = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ods\", size ? size : 3516516, \"application/vnd.oasis.opendocument.spreadsheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odt\", size ? size : 3516516, \"application/vnd.oasis.opendocument.text\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_oga = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.oga\", size ? size : 3516516, \"audio/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogv\", size ? size : 3516516, \"video/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogx\", size ? size : 3516516, \"application/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_opus = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.opus\", size ? size : 3516516, \"audio/opus\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_otf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.otf\", size ? size : 3516516, \"font/otf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_png = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.png\", size ? size : 3516516, \"image/png\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pdf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pdf\", size ? size : 3516516, \"application/pdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_php = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.php\", size ? size : 3516516, \"application/x-httpd-php\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ppt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ppt\", size ? size : 3516516, \"application/vnd.ms-powerpoint\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pptx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pptx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.presentationml.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rar\", size ? size : 3516516, \"application/vnd.rar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rtf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rtf\", size ? size : 3516516, \"application/rtf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_sh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.sh\", size ? size : 3516516, \"application/x-sh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_svg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.svg\", size ? size : 3516516, \"image/svg+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_swf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.swf\", size ? size : 3516516, \"application/x-shockwave-flash\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tar\", size ? size : 3516516, \"application/x-tar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tif\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tiff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tiff\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ts = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"mp2t_video-file-with-large-name.ts\", size ? size : 3516516, \"video/mp2t\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ttf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ttf\", size ? size : 3516516, \"font/ttf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_text = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.txt\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_typescript = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"typescript-file-with-large-name.ts\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vsd = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"ms_visio-file-with-large-name.vsd\", size ? size : 3516516, \"application/vnd.visio\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_wav = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"wav_audio-file-with-large-name.wav\", size ? size : 3516516, \"audio/wav\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_weba = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_audio-file-with-large-name.weba\", size ? size : 3516516, \"audio/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_video-file-with-large-name.webm\", size ? size : 3516516, \"video/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_image-file-with-large-name.webp\", size ? size : 3516516, \"image/webp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff\", size ? size : 3516516, \"font/woff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff2\", size ? size : 3516516, \"font/woff2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xhtml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xhtml\", size ? size : 3516516, \"application/xhtml+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xlsx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xls\", size ? size : 3516516, \"application/vnd.ms-excel\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xls = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xlsx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml_txt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml_plain_text-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xul = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xul\", size ? size : 3516516, \"application/vnd.mozilla.xul+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_zip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"zip-file-with-large-name.zip\", size ? size : 3516516, \"application/zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_video-file-with-large-name.3gp\", size ? size : 3516516, \"video/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp2_video-file-with-large-name.3g2\", size ? size : 3516516, \"video/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_a = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp\", size ? size : 3516516, \"audio/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_v = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp2\", size ? size : 3516516, \"audio/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_7z = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"seven_zip-file-with-large-name.7z\", size ? size : 3516516, \"application/x-7z-compressed\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_python = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"python-file-with-large-name.py\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_java = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"java-file-with-large-name.java\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_react = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"react_jsx-file-with-large-name.jsx\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vue = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"vue-file-with-large-name.vue\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n     * Creates an array of fake (synthetic) files\r\n     * @param size the file size for all synthetic files\r\n     * @returns an array of all file icon preview supported files\r\n     */\r\n    static createFileListMiscelanious = (size?: number): File[] => {\r\n\r\n        let listFile: File[] = [];\r\n\r\n        listFile.push(SyntheticFile.create_aac(size));\r\n        listFile.push(SyntheticFile.create_abw(size));\r\n        listFile.push(SyntheticFile.create_freearc(size));\r\n        listFile.push(SyntheticFile.create_avi(size));\r\n        listFile.push(SyntheticFile.create_azw(size));\r\n        listFile.push(SyntheticFile.create_octet(size));\r\n        listFile.push(SyntheticFile.create_bmp(size));\r\n        listFile.push(SyntheticFile.create_bz(size));\r\n        listFile.push(SyntheticFile.create_bz2(size));\r\n        listFile.push(SyntheticFile.create_cda(size));\r\n        listFile.push(SyntheticFile.create_csh(size));\r\n        listFile.push(SyntheticFile.create_css(size));\r\n        listFile.push(SyntheticFile.create_csv(size));\r\n        listFile.push(SyntheticFile.create_doc(size));\r\n        listFile.push(SyntheticFile.create_docx(size));\r\n        listFile.push(SyntheticFile.create_eot(size));\r\n        listFile.push(SyntheticFile.create_epub(size));\r\n        listFile.push(SyntheticFile.create_gzip(size));\r\n        listFile.push(SyntheticFile.create_gif(size));\r\n        listFile.push(SyntheticFile.create_htm(size));\r\n        listFile.push(SyntheticFile.create_html(size));\r\n        listFile.push(SyntheticFile.create_ico(size));\r\n        listFile.push(SyntheticFile.create_icalendar(size));\r\n        listFile.push(SyntheticFile.create_jar(size));\r\n        listFile.push(SyntheticFile.create_jpeg(size));\r\n        listFile.push(SyntheticFile.create_jpg(size));\r\n        listFile.push(SyntheticFile.create_js(size));\r\n        listFile.push(SyntheticFile.create_json(size));\r\n        listFile.push(SyntheticFile.create_jsonld(size));\r\n        listFile.push(SyntheticFile.create_mid(size));\r\n        listFile.push(SyntheticFile.create_midi(size));\r\n        listFile.push(SyntheticFile.create_x_mid(size));\r\n        listFile.push(SyntheticFile.create_x_midi(size));\r\n        listFile.push(SyntheticFile.create_mjs(size));\r\n        listFile.push(SyntheticFile.create_mp3(size));\r\n        listFile.push(SyntheticFile.create_mp4(size));\r\n        listFile.push(SyntheticFile.create_mpeg(size));\r\n        listFile.push(SyntheticFile.create_mpkg(size));\r\n        listFile.push(SyntheticFile.create_odp(size));\r\n        listFile.push(SyntheticFile.create_ods(size));\r\n        listFile.push(SyntheticFile.create_odt(size));\r\n        listFile.push(SyntheticFile.create_oga(size));\r\n        listFile.push(SyntheticFile.create_ogv(size));\r\n        listFile.push(SyntheticFile.create_ogx(size));\r\n        listFile.push(SyntheticFile.create_opus(size));\r\n        listFile.push(SyntheticFile.create_otf(size));\r\n        listFile.push(SyntheticFile.create_png(size));\r\n        listFile.push(SyntheticFile.create_pdf(size));\r\n        listFile.push(SyntheticFile.create_php(size));\r\n        listFile.push(SyntheticFile.create_ppt(size));\r\n        listFile.push(SyntheticFile.create_pptx(size));\r\n        listFile.push(SyntheticFile.create_rar(size));\r\n        listFile.push(SyntheticFile.create_rtf(size));\r\n        listFile.push(SyntheticFile.create_sh(size));\r\n        listFile.push(SyntheticFile.create_svg(size));\r\n        listFile.push(SyntheticFile.create_swf(size));\r\n        listFile.push(SyntheticFile.create_tar(size));\r\n        listFile.push(SyntheticFile.create_tif(size));\r\n        listFile.push(SyntheticFile.create_tiff(size));\r\n        listFile.push(SyntheticFile.create_ts(size));\r\n        listFile.push(SyntheticFile.create_ttf(size));\r\n        listFile.push(SyntheticFile.create_text(size));\r\n        listFile.push(SyntheticFile.create_typescript(size));\r\n        listFile.push(SyntheticFile.create_vsd(size));\r\n        listFile.push(SyntheticFile.create_wav(size));\r\n        listFile.push(SyntheticFile.create_weba(size));\r\n        listFile.push(SyntheticFile.create_webm(size));\r\n        listFile.push(SyntheticFile.create_webp(size));\r\n        listFile.push(SyntheticFile.create_woff(size));\r\n        listFile.push(SyntheticFile.create_woff2(size));\r\n        listFile.push(SyntheticFile.create_xhtml(size));\r\n        listFile.push(SyntheticFile.create_xlsx(size));\r\n        listFile.push(SyntheticFile.create_xls(size));\r\n        listFile.push(SyntheticFile.create_xml(size));\r\n        listFile.push(SyntheticFile.create_xml_txt(size));\r\n        listFile.push(SyntheticFile.create_xul(size));\r\n        listFile.push(SyntheticFile.create_zip(size));\r\n        //listFile.push(SyntheticFile.create_3gp(size));\r\n        //listFile.push(SyntheticFile.create_3gp2(size));\r\n        //listFile.push(SyntheticFile.create_3gp_a(size));\r\n        //listFile.push(SyntheticFile.create_3gp_v(size));\r\n        //listFile.push(SyntheticFile.create_7z(size));\r\n        listFile.push(SyntheticFile.create_python(size));\r\n        listFile.push(SyntheticFile.create_java(size));\r\n        listFile.push(SyntheticFile.create_react(size));\r\n        listFile.push(SyntheticFile.create_vue(size));\r\n\r\n        return listFile;\r\n    }\r\n}\r\n///////////////////// SHORTCUTS\r\n/**\r\n * Create a list of synthetic files with different mime types\r\n * @param size the file size for each synthetic file\r\n * @returns a list of synthetic file\r\n */\r\nexport const createListOfMultiTypeFile = (size?: number): File[] => {\r\n    return SyntheticFile.createFileListMiscelanious(size);\r\n}\r\n\r\n/**\r\n * Creates a synthetic file.\r\n * By default, creates a png image file\r\n * @param name the file name to show. By default is set to \"png-image-file-with-large-name.png\"\r\n * @param size the size in bytes of the file. By default this value is set to 455555\r\n * @param type the mime type of the file. By default is set to \"image/png\"\r\n * @returns \r\n */\r\nexport const createSyntheticFile = (\r\n    name = \"png-image-file-with-large-name.png\",\r\n    size = 455555,\r\n    type = \"image/png\",\r\n): File => {\r\n    return SyntheticFile.createFile(name, size, type);\r\n}","/**\r\n * An id generator for FileItems\r\n */\r\n export abstract class FileIdGenerator {\r\n    static nextId = 0;\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    static getNextId(): number {\r\n        FileIdGenerator.nextId++;\r\n        return FileIdGenerator.nextId;\r\n    }\r\n}","import { ExtFile, ExtFileInstance } from \"../types\";\r\nimport { FileIdGenerator } from \"./IdGenerator\";\r\n\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile objects\r\n * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile objects\r\n */\r\nexport const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {\r\n    let extFileArray: ExtFile[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });\r\n    }\r\n    return extFileArray;\r\n};\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile instances\r\n * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile instances\r\n */\r\nexport const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {\r\n    let extFileArray: ExtFileInstance[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));\r\n    }\r\n    return extFileArray;\r\n};","export const isValidateActive = (\r\n    accept: string | undefined,\r\n    maxFileSize: number | undefined,\r\n    maxFiles: number | undefined,\r\n    validator: Function | undefined\r\n  ): boolean => {\r\n    return (\r\n      (accept !== undefined && accept !== null) ||\r\n      (maxFileSize !== undefined && maxFileSize !== null) ||\r\n      (maxFiles !== undefined && maxFiles !== null) ||\r\n      (validator !== undefined && validator !== null)\r\n    );\r\n  };\r\n  ","/**\r\n * The max size of the word in characters\r\n */\r\nexport const DEFAULT_MAX_SIZE_WORD = 30;\r\n/**\r\n * \r\n * @param word the word to be shrinked\r\n * @returns the shrinked word\r\n */\r\nexport const shrinkWord = (word = \"\", card = false): string => {\r\n    let newWord = word;\r\n    if (card) {\r\n        if (word.length >= 20) {\r\n            newWord = word.slice(0, 10) + \"...\" + word.slice(-7);\r\n        }\r\n    } else if (word.length >= DEFAULT_MAX_SIZE_WORD) {\r\n        newWord = word.slice(0, 13) + \"...\" + word.slice(-8);\r\n    }\r\n    return newWord;\r\n};","\r\nimport { DropzoneLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, ExtFileInstance, UploadResponse } from \"../types\";\r\n\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"uploading\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const setPrepToUploading = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"success\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const uploadOne = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"upload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n/**\r\n * Awaits the given time before start uploading\r\n * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs\r\n * @returns an empty object\r\n */\r\nexport const sleepPreparing = (\r\n    preparingTime: number = 5000\r\n): Promise<void> => {\r\n    //console.log(\"uploadfiles preparingTime One\", preparingTime);\r\n    return new Promise((resolve, reject) => {\r\n\r\n        setTimeout(() => {\r\n            resolve();\r\n        }, preparingTime);\r\n\r\n    });\r\n}\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const prepToUploadOne = (\r\n    extFileInstance: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"uploading\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const uploadOneExtFile = (\r\n    extFileInstance: ExtFileInstance\r\n): Promise<Object> => {\r\n    //console.log(\"upload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"success\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUpload = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<ExtFile> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const success = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"success\",\r\n                    uploadMessage: message,\r\n\r\n                });\r\n            } else {\r\n                const success = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"error\",\r\n                    uploadMessage: message,\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUploadExtFile = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<UploadResponse> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const status = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"success\",\r\n                        uploadMessage: message,\r\n                        progress: 100\r\n                    }\r\n\r\n                });\r\n            } else {\r\n                const status = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"error\",\r\n                        uploadMessage: message,\r\n                        progress: 60\r\n                    },\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n","/**\r\n * Random integer between min (included) and max (excluded)\r\n * @param min the min number\r\n * @param max the max number\r\n * @returns a random number between min (included) and max (excluded)\r\n */\r\nexport function getRandomInt(min: number = 0, max: number = 0): number {\r\n    return Math.floor(Math.random() * (max - min)) + min;\r\n}\r\n","/**\r\n * Cleans the input.value attribute\r\n * @param inputElement \r\n */\r\nexport const cleanInput = (inputElement?: HTMLInputElement | null) => {\r\n    if (!inputElement) return;\r\n    inputElement.value = \"\";\r\n}","/**\r\n * If className is given, adds class name in string format to a base class name\r\n * @param baseClassName the base class name\r\n * @param className the class name to be added\r\n * @returns a new class name obtained by adding the second paramater\r\n */\r\nexport const addClassName = (\r\n    baseClassName: string,\r\n    className: string | undefined\r\n): string => {\r\n    if (className)\r\n        return `${baseClassName} ${className}`;\r\n    return baseClassName;\r\n}","import { ExtFile } from \"../types\";\r\n\r\nexport const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {\r\n    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== \"success\";\r\n}","/**\r\n * \r\n * @param file \r\n * @param name \r\n * @param type \r\n * @param size \r\n * @returns the file name, type and size\r\n */\r\nexport const getLocalFileItemData = (\r\n    file: File | undefined,\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    size: number | undefined\r\n): [string, string | undefined, number | undefined] => {\r\n\r\n    let localFileName: string = \"\";\r\n    let localFileType: string | undefined = undefined;\r\n    let localFileSize: number | undefined = undefined;\r\n\r\n    // if file object is valid, obtain metadata from it\r\n    // otherwise try to get file data from individual props in string format\r\n    if (file && typeof file.name === \"string\") {\r\n        localFileName = file.name;\r\n        localFileType = file.type;\r\n        localFileSize = file.size;\r\n    } else if (name && typeof name === \"string\") {\r\n        localFileName = name;\r\n        localFileType = type;\r\n        localFileSize = size;\r\n    }\r\n    return [localFileName, localFileType, localFileSize]\r\n}","/**\r\n * Separate the accept string array into an array of strings separated by commas\r\n * @param accept the string accept array\r\n * @returns an array of strings in wich every item\r\n */\r\nexport const separateAccept = (accept: string | undefined): string[] => {\r\n    if (!accept || accept.length === 0) {\r\n        return [];\r\n    }\r\n    const commaSeparatedAccpet: string[] = accept.split(\",\").map((acceptItem) => acceptItem.trim());\r\n    return commaSeparatedAccpet;\r\n}","import { getExt } from \"../utils/getExt\";\r\n\r\n/**\r\n * Checks whether a file is valid or not given an array of file extentions and mime types\r\n * e.g. accept =  [\".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"]\r\n * @param accept the array of strings accept items\r\n * @param file a File object to be evaluated\r\n * @returns true if the mime type file is included in the accept param\r\n */\r\n export const validateAccept = (accept: string[], file: File): boolean => {\r\n    let valid: boolean = false;\r\n    const { name, type } = file;\r\n    //Array(5) [ \".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" ]\r\n    for (let i = 0; i < accept.length; i++) {\r\n        const acceptItem: string = accept[i];\r\n        //check is not empty\r\n        if (acceptItem.length !== 0) {\r\n            //check extention\r\n            if (acceptItem.charAt(0) === \".\") {\r\n                if (acceptItem.includes(getExt(name))) {\r\n                    return true;\r\n                }\r\n            }\r\n            //check mime\r\n            // header/tail  => image/png  ;  image/* ; audio\r\n            if (type && type.length > 0 && acceptItem.includes(\"/\") && type.includes(\"/\")) {\r\n                let headerMime = acceptItem.split(\"/\")[0];\r\n                let tailMime = acceptItem.split(\"/\")[1];\r\n\r\n                let headerMimeFile = type.split(\"/\")[0];\r\n                let tailMimeFile = type.split(\"/\")[1];\r\n\r\n                if (headerMime === headerMimeFile) {\r\n                    //    image/*\r\n                    if (tailMime === \"*\") {\r\n                        return true;\r\n                    } else if (tailMime === tailMimeFile) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return valid;\r\n}","import { ValidateErrorLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, FunctionLabel, Localization, LocalLabels } from \"../types\";\r\nimport { ValidateFileResponse, FileValidatorProps } from \"../types/validation\";\r\nimport { FileIdGenerator } from \"../utils/IdGenerator\";\r\nimport { separateAccept } from \"./separateAccept\";\r\nimport { validateAccept } from \"./validateAccept\";\r\n\r\n/**\r\n * \r\n * @param preValidatedFiles FileList \r\n * @param remainingValids The number of remaining valid files\r\n * @param localValidator \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns \r\n */\r\nexport const fileListvalidator = (\r\n    preValidatedFiles: FileList,\r\n    remainingValids: number,\r\n    localValidator: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    const output: ExtFile[] = [];\r\n    //set a countdown when there is a limit on files\r\n    let countdown: number = remainingValids;\r\n    // get localized labels\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    //Iterate the File list\r\n    for (let i = 0, f: File; (f = preValidatedFiles[i]); i++) {\r\n        // Validate the file list with\r\n        let validatedFile: ExtFile = validateFile(f, validator, localValidator, ValidationErrorLocalizer);\r\n        if (validatedFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = countdown > 0;\r\n            validatedFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n                validatedFile.errors = validatedFile.errors\r\n                    ? [...validatedFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            countdown--;\r\n        }\r\n        output.push(validatedFile);\r\n    }\r\n    return output;\r\n};\r\n\r\n\r\n/**\r\n * For each ExtFile sets the valid prop of ExtFile to \"true\" or \"false\"\r\n * depending on the result of the individual validation. \r\n * It also add the list of errors.\r\n * @param extFileList \r\n * @param remainingValids \r\n * @param localValidatorProps \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns a new ExtFile list with each item validated\r\n */\r\nexport const validateExtFileList = (\r\n    extFileList: ExtFile[],\r\n    remainingValids: number,\r\n    localValidatorProps: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    //console.log(\"remaning valids\", remainingValids);\r\n    let fileListResult: ExtFile[] = [];\r\n    if (!remainingValids) return fileListResult;\r\n    let remaining: number = remainingValids;\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n    for (let i = 0; i < extFileList.length; i++) {\r\n        let currentExtFile: ExtFile = extFileList[i];\r\n\r\n        currentExtFile = validateExtFile(currentExtFile, validator, localValidatorProps, ValidationErrorLocalizer);\r\n        //console.log(\"validateExtFileList after validation\", currentExtFile);\r\n\r\n        if (currentExtFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = remaining > 0;\r\n            currentExtFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                currentExtFile.errors = currentExtFile.errors\r\n                    ? [...currentExtFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            remaining--;\r\n        }\r\n        fileListResult.push(currentExtFile);\r\n\r\n    }\r\n    return fileListResult;\r\n}\r\n\r\n/**\r\n * \r\n * @param extFile \r\n * @param validator \r\n * @param validatorProps \r\n * @param localErrors \r\n * @returns \r\n */\r\nexport const validateExtFile = (\r\n    extFile: ExtFile,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n    let extFileResult: ExtFile = { ...extFile };\r\n    let errors: string[] = [];\r\n    //TO-DO: Add extra validation for individual props even if FIle object was not given\r\n    if (!extFile.file) {\r\n        return { ...extFileResult }\r\n    }\r\n\r\n    //TO-DO: add \"overrideValidation\" prop to ignore the rest of validators like accept and maxFileSize\r\n    if (validator) {\r\n        const resultCustomValidation: ValidateFileResponse = validator(extFileResult.file as File);\r\n        const { errors: errorsResult } = resultCustomValidation;\r\n        if (errorsResult)\r\n            errors.push(...errorsResult)\r\n        //return { ...extFileResult, ...validator(extFileResult.file as File) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n    //console.log(\"Validation\", maxFileSize, accept);\r\n    //check file size\r\n    const file: File = extFile.file;\r\n\r\n\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n\r\n        //console.log(\"Size error\", maxFileSizeErrorMessenger(maxFileSize));\r\n\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n    //check file type\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n    const isValid: boolean = errors.length === 0;\r\n    extFileResult = { ...extFileResult, valid: isValid, errors: !isValid ? errors : undefined };\r\n    //console.log(\"validation extFileResult\", extFileResult);\r\n    return extFileResult;\r\n\r\n}\r\n\r\n\r\n\r\n/**\r\n * Function that validate whether a file is valid, or not\r\n * according to the Filevalidator properties\r\n * @param file a File object to be evaluated\r\n * @param validatorProps the validator object \r\n * @returns a FileValidated object\r\n */\r\nexport const validateFile = (\r\n    file: File,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n\r\n    const idGenerated = FileIdGenerator.getNextId();\r\n    let errors: string[] = [];\r\n    if (validator) {\r\n        return { id: idGenerated, file, ...validator(file) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n\r\n    //check file size\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n\r\n    //check file type\r\n    // const allowedTypes = accept.filter((type) => (file.type === type))\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n\r\n\r\n    const fileResult: ExtFile = {\r\n        id: idGenerated,\r\n        file: file,\r\n        valid: errors.length === 0,\r\n        errors: errors\r\n    };\r\n    // logic here\r\n    return fileResult;\r\n};","/**\r\n * list of dumy errors in english\r\n */\r\nexport const listOfErrors: string[] =\r\n    [\r\n        \"File is too big. Max file size allowed is 80mb.\",\r\n        \"File's type is not allowed.\",\r\n        \"Max amount of files (28) has been reached.\"\r\n    ];","import { ExtFile, UPLOADSTATUS } from \"../types\";\r\nimport { FileIdGenerator, getRandomInt } from \"../utils\";\r\nimport { getRandomUploadStatus, listOfErrors } from \"../validation\";\r\n\r\n\r\n/**\r\n * Make a validated file that is ready to be used on FileItem component,\r\n * if valid is not set, a random operation will decide whether the file is valid or not\r\n * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status\r\n * If valid is true, then file can be uploaded and can have upload message if the status is succes or error\r\n * @param file The file\r\n * @param valid true if it is a valid file, otherwise is false\r\n * @param uploadStatus the current upload status. If not given a random upload status will be set\r\n * @param uploadMessage the upload message after uploading\r\n * @returns a Vaidated File object\r\n */\r\n export const makeSyntheticExtFile = (\r\n    file?: File ,\r\n    valid = (Math.ceil(Math.random() * 28) % 2 === 0),\r\n    uploadStatus?: UPLOADSTATUS,\r\n    uploadMessage?: string\r\n): ExtFile => {\r\n    //if valid, naturally, can be uploaded\r\n    let errors: string[] | undefined = [];\r\n    let newUpoadStatus = uploadStatus || getRandomUploadStatus();\r\n\r\n    let customUploadMessage: string | undefined = uploadMessage || \"\";\r\n    if (valid) {\r\n        //we can decide according to upload status \r\n        if (!uploadMessage) {\r\n            switch (newUpoadStatus) {\r\n                case \"error\": customUploadMessage = \"Upload failed. There was an error\"; break;\r\n                case \"success\": customUploadMessage = \"File was successfully upload\"; break;\r\n                default: uploadMessage = undefined;\r\n            }\r\n        }\r\n        errors = undefined;\r\n    } else {\r\n        //if not valid, just show error messages\r\n        const randInt: number = getRandomInt(0, 3);\r\n        errors.push(listOfErrors[randInt]);\r\n        newUpoadStatus = undefined;\r\n        customUploadMessage = undefined;\r\n    }\r\n    //now make a File Validated instance \r\n    const newFileValidated: ExtFile = {\r\n        id: FileIdGenerator.getNextId(),\r\n        valid: valid,\r\n        file: file,\r\n        uploadStatus: newUpoadStatus,\r\n        uploadMessage: customUploadMessage,\r\n        errors: errors\r\n    };\r\n    return newFileValidated;\r\n}\r\n","import { UPLOADSTATUS } from \"../types\";\r\nimport { getRandomInt } from \"../utils/randomInt\";\r\n\r\n/**\r\n * Generates a random number betwen 0 and 3\r\n * where\r\n * 0 => error\r\n * 1 => uploading\r\n * 2 => success\r\n * 3 => undefined\r\n * @returns a random upload status or undefined\r\n */\r\n export const getRandomUploadStatus = (): UPLOADSTATUS | undefined => {\r\n    const result: number = getRandomInt(0, 4);\r\n    switch (result) {\r\n        case 0: return \"error\";\r\n        case 1: return \"uploading\";\r\n        case 2: return \"success\";\r\n        default:\r\n            return undefined;\r\n    }\r\n}","import { createSyntheticFile } from \"../synthetic-file\"\r\nimport { ExtFile } from \"../types\"\r\nimport { FileIdGenerator } from \"../utils\"\r\nimport { listOfErrors } from \"../validation\"\r\n\r\nexport const extFileMock = (id?: number): ExtFile => {\r\n    return {\r\n        id: id || FileIdGenerator.getNextId(),\r\n        name: \"fileName.ext\",\r\n        size: 28 * 1024 * 1024,\r\n        type: \"files-ui/mock\",\r\n        file: createSyntheticFile(\"fileName.ext\", 28 * 1024 * 1024, \"files-ui/mock\"),\r\n        errors: listOfErrors,\r\n        uploadMessage: \"uploaded\",\r\n        uploadStatus: \"preparing\",\r\n        valid: false,\r\n        progress: 28,\r\n        xhr: new XMLHttpRequest(),\r\n        extraData: {\r\n            extraData1: \"files-ui is the best\",\r\n            extraData2: {\r\n                id: 1,\r\n                name: \"files-ui.mock\"\r\n            },\r\n            deleted: true\r\n        },\r\n        downloadUrl: \"https://www.files-ui.com/mock/file-download\"\r\n    }\r\n}","export default function addExtraData(\r\n    formData: FormData,\r\n    extraData: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const extraDataKeys: string[] = Object.keys(extraData || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < extraDataKeys.length && extraData; i++) {\r\n        //console.log(\"uploadFile extraData\", extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n        formData.append(extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n    }\r\n\r\n    formData.append(\"otherValue\", \"HAAAAAAAAAAAAAAa\");\r\n\r\n}","export default function addHeaders(\r\n    xhr: XMLHttpRequest,\r\n    headers: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const headerKeys: string[] = Object.keys(headers || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < headerKeys.length && headers; i++) {\r\n        //console.log(\"uploadFile headers\", headerKeys[i], headers[headerKeys[i]]);\r\n        xhr.setRequestHeader(\r\n            headerKeys[i],\r\n            headers[headerKeys[i]]\r\n        );\r\n    }\r\n\r\n\r\n}","import { ExtFile, UploadResponse } from \"../types\";\r\n\r\nexport const TIMEOUT_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Timeout error\",\r\n    payload: {}\r\n};\r\nexport const ABORTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Upload aborted\",\r\n    payload: {}\r\n}\r\nexport const JSON_PARSE_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Error when parsing JSON response\",\r\n    payload: {}\r\n}\r\n\r\nexport const UNEXPECTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Unexpected error\",\r\n    payload: {}\r\n}\r\n\r\nexport const NO_XHR_PROVIDED_ERROR = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n\r\n        ...extFile,\r\n        uploadMessage: \"Unable to upload. xhr object was not provided\",\r\n        uploadStatus: \"error\",\r\n\r\n        serverResponse: { success: false, }\r\n    }\r\n}","import { ExtFile, ServerResponse, UploadResponse } from \"../types\";\r\nimport { JSON_PARSE_ERROR_RESPONSE } from \"./errors.upload\";\r\n\r\nexport const makeServerResponse = (success: any, message: string, payload: any): ServerResponse => {\r\n    const result: ServerResponse = { success: success, message: message, payload: payload } as ServerResponse;\r\n    return result;\r\n}\r\nexport const JsonParseResponse = (xhr: XMLHttpRequest): ServerResponse => {\r\n    try {\r\n        const jsonResponse = JSON.parse(xhr.response);\r\n        const success: any = jsonResponse.success;\r\n        const message: string = jsonResponse.message;\r\n        const payload: any = jsonResponse.payload;\r\n\r\n        const fuiResponse: ServerResponse = {\r\n            success: typeof success === \"boolean\" ? success : false,\r\n            message: typeof message === \"string\" ? message : \"Error on message response\",\r\n            payload: payload || {}\r\n        }\r\n        return fuiResponse\r\n    } catch (error) {\r\n        //console.log(\"FuiUpload ERROR\", error);\r\n        return JSON_PARSE_ERROR_RESPONSE;\r\n    }\r\n}\r\n\r\n\r\n\r\nexport const makeSuccessUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        serverResponse: responseFui,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"success\"\r\n\r\n    }\r\n}\r\n\r\n\r\nexport const makeErrorUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    //console.log(\"makeErrorUploadResponse\", extFile, responseFui);\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"error\", \r\n        serverResponse: responseFui,\r\n    }\r\n}\r\n\r\n","import { ExtFile, Method, UPLOADSTATUS } from \"../types\";\r\nimport { ServerResponse, UploadResponse } from \"../types/uploadTypes\";\r\nimport addExtraDataUpload from \"./addExtraData.upload\";\r\nimport addHeaders from \"./addheaders.upload\";\r\nimport { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from \"./errors.upload\";\r\nimport { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from \"./response.upload\";\r\nimport { completeUploadResult, unableToUploadResult } from \"./utils.upload\";\r\n\r\n\r\n/**\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data upload\r\n * @param headers the set of headers\r\n * @returns a server response that consists on {status, payload, message}\r\n */\r\nexport const uploadFormData = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method | undefined = \"POST\",\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string> | undefined\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"Fui_uploadFormData uploadFile\", xhr, method, endpoint, data, headers);\r\n\r\n        const finalMethod: Method = [\"POST\", \"PUT\", \"PATCH\"].includes(method.toUpperCase()) ? method : \"POST\";\r\n\r\n        let lastLastState: number = -1;\r\n        let lastState: number = 0;\r\n        let jumped: boolean = false;\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"Fui_uploadFormData uploadFile onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => {\r\n            //console.log(\"Fui_uploadFormData ABORTEEEEDDDD\");\r\n            resolve(ABORTED_ERROR_RESPONSE);\r\n        };\r\n        xhr.onloadend = async (e) => {\r\n            //console.log(\"onloadend loaded\", e.loaded);\r\n            //console.log(\"onloadend total\", e.total);\r\n            //console.log(\"onloadend lengthComputable\", e.lengthComputable);\r\n\r\n        }\r\n        // listen for `progress` event\r\n        //currently listening on FileItem component hook\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange e.type\", e.type);\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange\", xhr.readyState, xhr.response);\r\n\r\n            lastLastState = lastState;\r\n            lastState = xhr.readyState;\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    // console.log(\"Fui_uploadFormData EMPTY status\", xhr.status);\r\n                    // console.log(\"Fui_uploadFormData EMPTY readyState\", xhr.readyState);\r\n                    // console.log(\"Fui_uploadFormData EMPTY upload\", xhr.upload);\r\n                    //console.log(\"Fui_uploadFormData EMPTY abort\", xhr.abort);\r\n                    //const jumped = lastLastState - lastLastState !== 1;\r\n                    resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n                }\r\n            } else {\r\n                //console.log(\"Fui_uploadFormData FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(finalMethod, endpoint, true);\r\n\r\n        //add header to request\r\n        addHeaders(xhr, headers);\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n/**\r\n * \r\n * @param file the extended file to be uploaded\r\n * @param url the endpoint\r\n * @param method the method for uploading\r\n * @param headers headers for request\r\n * @returns \r\n */\r\nexport const uploadExtFile = async (\r\n    extFile: ExtFile,\r\n    url: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n): Promise<ExtFile> => {\r\n    return new Promise(async (resolve, reject) => {\r\n        try {\r\n            const uploader: XMLHttpRequest | undefined = extFile.xhr;\r\n\r\n            if (!uploader) {\r\n                resolve(NO_XHR_PROVIDED_ERROR(extFile));\r\n                return;\r\n            }\r\n\r\n            const localMethod: Method = method || \"POST\";\r\n            const fileToUpload: File = extFile.file as File;\r\n\r\n            const formData = new FormData();\r\n\r\n            formData.append(uploadLabel || \"file\", fileToUpload);\r\n\r\n            // add extra data to upload\r\n            const finalExtraData: Record<string, any> =\r\n                { otherValue: \"other valueee haaaa\", param2: { tecnica: \"KIKOHUUUU\", friend: \"Chaos\", age: 25 }, ...extFile.extraUploadData };\r\n\r\n            addExtraDataUpload(formData, finalExtraData);\r\n            //console.log(\"FORMDATA\", formData);\r\n\r\n            let responseFui: ServerResponse;\r\n            responseFui = await uploadFormData(\r\n                uploader,\r\n                localMethod,\r\n                url,\r\n                formData,\r\n                headers || {});\r\n\r\n            if (responseFui.success) {\r\n                // status is true\r\n                resolve(makeSuccessUploadResponse(extFile, responseFui));\r\n            } else {\r\n                // status is false\r\n                resolve(makeErrorUploadResponse(extFile, responseFui));\r\n            }\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(\r\n                makeErrorUploadResponse(extFile, UNEXPECTED_ERROR_RESPONSE)\r\n            );\r\n        }\r\n    });\r\n};\r\n\r\n\r\n\r\n\r\nexport function uploadFile(\r\n    file: File,\r\n    url: string,\r\n    method?: Method,\r\n    label?: string,\r\n    headers?: Record<string, string>\r\n): Promise<ServerResponse> {\r\n    return new Promise(async (resolve, reject) => {\r\n\r\n\r\n        //start uploading\r\n        const formData = new FormData();\r\n\r\n        formData.append(label || \"file\", file);\r\n\r\n        try {\r\n            const serverResponse: ServerResponse = await uploadFormData(new XMLHttpRequest(), method, url, formData, headers);\r\n            resolve(serverResponse);\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(UNEXPECTED_ERROR_RESPONSE);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @deprecated\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data\r\n * @param headers the set of headers\r\n * @returns a dui server response that consists on {success, payload, message}\r\n */\r\nexport const FuiUpload = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method,\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string>\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"FuiUpload params\", xhr, method, endpoint, data, headers);\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"FuiUpload onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n        // listen for `progress` event\r\n        //currently listening on FileMosaic component hook\r\n\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n            //console.log(\"FuiUpload onreadystatechange\", xhr.readyState, xhr.response, xhr);\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    resolve(UNEXPECTED_ERROR_RESPONSE);\r\n                }\r\n            } else {\r\n                //console.log(\"FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(method, endpoint, true);\r\n        const headerKeys: string[] = Object.keys(headers);\r\n        //const headerValues: string[] = Object.values(headers);\r\n        for (let i = 0; i < headerKeys.length; i++) {\r\n            //console.log(\"FuiUpload  headers\", headerKeys[i], headers[headerKeys[i]]);\r\n            xhr.setRequestHeader(\r\n                headerKeys[i],\r\n                headers[headerKeys[i]]\r\n            );\r\n        }\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n\r\n","\r\nimport { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from \"../types\"\r\n\r\nexport const unexpectedErrorUploadResult = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: \"Unexpected error\",\r\n        uploadStatus: \"error\",\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: unexpected error \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const unableToUploadResult = (\r\n    extFile: ExtFile\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: \"Unable to upload. XHR was not provided\",\r\n            uploadStatus: \"error\"\r\n        },\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: Unable to upload. XHR was not provided \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const completeUploadResult = (\r\n    extFile: ExtFile,\r\n    serverResponse: ServerResponse,\r\n    uploadStatusresult: UPLOADSTATUS\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: serverResponse.message,\r\n            uploadStatus: uploadStatusresult\r\n        },\r\n        serverResponse: serverResponse\r\n    }\r\n}\r\n\r\n/**\r\n * Initializes the xhr attribute for performing uploads\r\n * @param extFileList the list of extended files\r\n * @returns the array of extFiles with the xhr attribute initialized\r\n */\r\nexport const toUploadableExtFileList = (\r\n    extFileList: ExtFile[] | ExtFileInstance[]\r\n): ExtFile[] => {\r\n    if (!extFileList) return [];\r\n    return extFileList.map(extFile => {\r\n        return { ...extFile, xhr: new XMLHttpRequest() }\r\n    });\r\n}\r\n\r\n/**\r\n * Updates the uploadStatus of the given extFile \r\n * from \"preparing\" to \"uploading\"\r\n * @param extFile the extended file\r\n * @returns the extended file with uploadStatus updated to \"uploading\"\r\n */\r\nexport const instantPreparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): ExtFileInstance | ExtFile => {\r\n    if (extFile.uploadStatus === \"preparing\") {\r\n        //for ExtFile instance\r\n        extFile.uploadStatus = \"uploading\";\r\n        //for ExtFile type\r\n        return {\r\n            ...extFile,\r\n            uploadStatus: \"uploading\",\r\n        };\r\n    }\r\n    return extFile;\r\n};\r\n\r\n/**\r\n * \r\n * @param extFile the extended file\r\n * @returns \r\n */\r\nexport const preparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            if (extFile.uploadStatus === \"preparing\") {\r\n                //for ExtFile instance\r\n                extFile.uploadStatus = \"uploading\";\r\n                //for ExtFile type\r\n                resolve({\r\n                    ...extFile,\r\n                    uploadStatus: \"uploading\",\r\n                });\r\n            } else\r\n                resolve(extFile);\r\n        }, 1500);\r\n    });\r\n};\r\n/**\r\n * Sleeps for 1200 miliseconds for showing a better transition\r\n * on uploading\r\n * @param time the time to sleep in miliseconds\r\n * @returns true is everything is ok\r\n */\r\nexport const sleepTransition = (time = 1500\r\n): Promise<boolean> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve(true);\r\n        }, time);\r\n    });\r\n}\r\n/**\r\n * Removes the deleted files and updates the aborted ones with a message\r\n * @param arrExtFile incomming arr of extFle instances\r\n * @returns an array of ExtFle objects\r\n */\r\nexport const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {\r\n  \r\n    return arrExtFile.filter((extFileInstance: ExtFileInstance) =>\r\n        !extFileInstance.extraData?.deleted)\r\n\r\n        .map((extFileInstance: ExtFileInstance) => {\r\n            if (extFileInstance.uploadStatus === \"aborted\"\r\n                && !extFileInstance.uploadMessage) {\r\n                    // TO-DO: ad localization for this message\r\n                extFileInstance.uploadMessage = \"Upload aborted by user\";\r\n                //extFileInstance.uploadStatus = \"error\";\r\n            }\r\n            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile\r\n        });\r\n}\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @param extFileobj \r\n */\r\nexport const setNextUploadStatus = (\r\n    extFileInstance: ExtFileInstance,\r\n    extFileobj: ExtFile) => {\r\n\r\n    const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;\r\n    const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;\r\n\r\n    //console.log(\"setNextUploadStatus\", prevStatus, nextStstaus);\r\n    //console.log(\"setNextUploadStatus\", extFileInstance.uploadMessage, extFileobj.uploadMessage);\r\n    if (\r\n        prevStatus === \"preparing\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = undefined;\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    } else if (\r\n        prevStatus === \"uploading\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = \"aborted\";\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    }\r\n\r\n}\r\n\r\n","import { NamedColor } from \"../types/NamedColor\";\r\n\r\n/**\r\n * The full list of named Colors provided by\r\n * https://htmlcolorcodes.com/es/nombres-de-los-colores/\r\n */\r\nexport const NAMED_COLORS: NamedColor =\r\n{\r\n    //RED\r\n    indianred: \"#CD5C5C\",\r\n    lightcoral: \"#F08080\",\r\n    salmon: \"#FA8072\",\r\n    darksalmon: \"#E9967A\",\r\n    lightsalmon: \"#FFA07A\",\r\n    crimson: \"#DC143C\",\r\n    red: \"#FF0000\",\r\n    firebrick: \"#B22222\",\r\n    darkred: \"#8B0000\",\r\n    //PINK\r\n    pink: \"#FFC0CB\",\r\n    lightpink: \"#FFB6C1\",\r\n    hotpink: \"#FF69B4\",\r\n    deeppink: \"#FF1493\",\r\n    mediumvioletred: \"#C71585\",\r\n    palevioletred: \"#DB7093\",\r\n    //ORANGE\r\n    //\"lightsalmon: \"#FFA07A\",\r\n    coral: \"#FF7F50\",\r\n    tomato: \"#FF6347\",\r\n    orangered: \"#FF4500\",\r\n    darkorange: \"#FF8C00\",\r\n    orange: \"#FFA500\",\r\n    //YELLOW\r\n    gold: \"#FFD700\",\r\n    yellow: \"#FFFF00\",\r\n    lightyellow: \"#FFFFE0\",\r\n    lemonchiffon: \"#FFFACD\",\r\n    lightgoldenrodyellow: \"#FAFAD2\",\r\n    papayawhip: \"#FFEFD5\",\r\n    moccasin: \"#FFE4B5\",\r\n    peachpuff: \"#FFDAB9\",\r\n    palegoldenrod: \"#EEE8AA\",\r\n    khaki: \"#F0E68C\",\r\n    darkkhaki: \"#BDB76B\",\r\n    //PURPLE\r\n    lavender: \"#E6E6FA\",\r\n    thistle: \"#D8BFD8\",\r\n    plum: \"#DDA0DD\",\r\n    violet: \"#EE82EE\",\r\n    orchid: \"#DA70D6\",\r\n    fuchsia: \"#FF00FF\",\r\n    magenta: \"#FF00FF\",\r\n    mediumorchid: \"#BA55D3\",\r\n    mediumpurple: \"#9370DB\",\r\n    rebeccapurple: \"#663399\",\r\n    blueviolet: \"#8A2BE2\",\r\n    darkviolet: \"#9400D3\",\r\n    darkorchid: \"#9932CC\",\r\n    darkmagenta: \"#8B008B\",\r\n    purple: \"#800080\",\r\n    indigo: \"#4B0082\",\r\n    slateblue: \"#6A5ACD\",\r\n    darkslateblue: \"#483D8B\",\r\n    mediumslateblue: \"#7B68EE\",\r\n    //GREEN\r\n    greenyellow: \"#ADFF2F\",\r\n    chartreuse: \"#7FFF00\",\r\n    lawngreen: \"#7CFC00\",\r\n    lime: \"#00FF00\",\r\n    limegreen: \"#32CD32\",\r\n    palegreen: \"#98FB98\",\r\n    lightgreen: \"#90EE90\",\r\n    mediumspringgreen: \"#00FA9A\",\r\n    springgreen: \"#00FF7F\",\r\n    mediumseagreen: \"#3CB371\",\r\n    seagreen: \"#2E8B57\",\r\n    forestgreen: \"#228B22\",\r\n    green: \"#008000\",\r\n    darkgreen: \"#006400\",\r\n    yellowgreen: \"#9ACD32\",\r\n    olivedrab: \"#6B8E23\",\r\n    olive: \"#808000\",\r\n    darkolivegreen: \"#556B2F\",\r\n    mediumaquamarine: \"#66CDAA\",\r\n    darkseagreen: \"#8FBC8B\",\r\n    lightseagreen: \"#20B2AA\",\r\n    darkcyan: \"#008B8B\",\r\n    teal: \"#008080\",\r\n    //BLUE\r\n    aqua: \"#00FFFF\",\r\n    cyan: \"#00FFFF\",\r\n    lightcyan: \"#E0FFFF\",\r\n    paleturquoise: \"#AFEEEE\",\r\n    aquamarine: \"#7FFFD4\",\r\n    turquoise: \"#40E0D0\",\r\n    mediumturquoise: \"#48D1CC\",\r\n    darkturquoise: \"#00CED1\",\r\n    cadetblue: \"#5F9EA0\",\r\n    steelblue: \"#4682B4\",\r\n    lightsteelblue: \"#B0C4DE\",\r\n    powderblue: \"#B0E0E6\",\r\n    lightblue: \"#ADD8E6\",\r\n    skyblue: \"#87CEEB\",\r\n    lightskyblue: \"#87CEFA\",\r\n    deepskyblue: \"#00BFFF\",\r\n    dodgerblue: \"#1E90FF\",\r\n    cornflowerblue: \"#6495ED\",\r\n    //\"mediumslateblue: \"#7B68EE\",\r\n    royalblue: \"#4169E1\",\r\n    blue: \"#0000FF\",\r\n    mediumblue: \"#0000CD\",\r\n    darkblue: \"#00008B\",\r\n    navy: \"#000080\",\r\n    midnightblue: \"#191970\",\r\n    //BROWN\r\n    cornsilk: \"#FFF8DC\",\r\n    blanchedalmond: \"#FFEBCD\",\r\n    bisque: \"#FFE4C4\",\r\n    navajowhite: \"#FFDEAD\",\r\n    wheat: \"#F5DEB3\",\r\n    burlywood: \"#DEB887\",\r\n    tan: \"#D2B48C\",\r\n    rosybrown: \"#BC8F8F\",\r\n    sandybrown: \"#F4A460\",\r\n    goldenrod: \"#DAA520\",\r\n    darkgoldenrod: \"#B8860B\",\r\n    peru: \"#CD853F\",\r\n    chocolate: \"#D2691E\",\r\n    saddlebrown: \"#8B4513\",\r\n    sienna: \"#A0522D\",\r\n    brown: \"#A52A2A\",\r\n    maroon: \"#800000\",\r\n    //WHITE\r\n    white: \"#FFFFFF\",\r\n    snow: \"#FFFAFA\",\r\n    honeydew: \"#F0FFF0\",\r\n    mintcream: \"#F5FFFA\",\r\n    azure: \"#F0FFFF\",\r\n    aliceblue: \"#F0F8FF\",\r\n    ghostwhite: \"#F8F8FF\",\r\n    whitesmoke: \"#F5F5F5\",\r\n    seashell: \"#FFF5EE\",\r\n    beige: \"#F5F5DC\",\r\n    oldlace: \"#FDF5E6\",\r\n    floralwhite: \"#FFFAF0\",\r\n    ivory: \"#FFFFF0\",\r\n    antiquewhite: \"#FAEBD7\",\r\n    linen: \"#FAF0E6\",\r\n    lavenderblush: \"#FFF0F5\",\r\n    mistyrose: \"#FFE4E1\",\r\n    //GREY\r\n    gainsboro: \"#DCDCDC\",\r\n    lightgray: \"#D3D3D3\",\r\n    silver: \"#C0C0C0\",\r\n    darkgray: \"#A9A9A9\",\r\n    gray: \"#808080\",\r\n    dimgray: \"#696969\",\r\n    lightslategray: \"#778899\",\r\n    slategray: \"#708090\",\r\n    darkslategray: \"#2F4F4F\",\r\n    black: \"#000000\"\r\n}","import { NAMED_COLORS } from \"./namedColors\";\r\n\r\n/**\r\n * Make the color into a darker color\r\n * @param colorInput \r\n * @returns the darked color in\r\n */\r\nexport const darkerColor = (colorInput: string, percentage = 25): string => {\r\n    let darkedColor = \"\";\r\n    const reduce = (100 - percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        darkedColor = `rgb(${component1 * reduce}, ${component2 * reduce},${component3 * reduce})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return darkedColor;\r\n}\r\n/**\r\n * Make the color into a brighted color\r\n * @param colorInput \r\n * @returns the brighted color \r\n */\r\nexport const brighterColor = (colorInput: string, percentage = 25): string => {\r\n    let brightedColor = \"\";\r\n    const increase = (100 + percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        brightedColor = `rgb(${component1 * increase}, ${component2 * increase},${component3 * increase})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return brightedColor;\r\n}\r\n\r\n/**\r\n * In order to managae rgba() we convert hex colors into rgba()\r\n * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()\r\n * \r\n * \r\n * @param colorInput color in hex or in rgb\r\n * @param perc percentage for RGBA() color \r\n * @returns the rgba representation of a hex color\r\n */\r\nexport const hexColorToRGB = (colorInput: string | undefined, perc = 0, defaultColor?: string): string => {\r\n    let resultDefault: string = defaultColor ? defaultColor : \"rgba(255, 255, 255, 0.6)\";\r\n    if (!colorInput) {\r\n        return resultDefault;\r\n    }\r\n    //work only in uppercase\r\n    const color: string = colorInput.toUpperCase();\r\n    // is already a rgba color\r\n    if (color.includes(\"RGBA\")) {\r\n        return color;\r\n    }\r\n\r\n    //return rbg => rgba\r\n    if (color.includes(\"RGB\")) {\r\n        return color.replace('RGB', `rgba`).replace(')', `, ${perc})`);\r\n    }\r\n\r\n    // if is a hex color or named color\r\n    if (!isHexColor(colourNameToHex(color))) {\r\n        return resultDefault;\r\n    }\r\n    let resultOk: string = \"\";\r\n    //let strVar: string = \"\";\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    //If passed all validations, proceed to transform\r\n    component1 = hexTodec(color.charAt(1)) * 16 + hexTodec(color.charAt(2));\r\n    component2 = hexTodec(color.charAt(3)) * 16 + hexTodec(color.charAt(4));\r\n    component3 = hexTodec(color.charAt(5)) * 16 + hexTodec(color.charAt(6));\r\n    resultOk = `rgba(${component1}, ${component2},${component3} , ${perc})`;\r\n    return resultOk;\r\n}\r\n\r\n/**\r\n * Validates wheteher the color is hexadecimal css color\r\n * Example:  #FF56AC\r\n * \r\n * \r\n * @param colorInput the color inpt to test \r\n * @returns true if the inputColor is a hexadecimal css color\r\n */\r\nexport const isHexColor = (colorInput: string): boolean => {\r\n\r\n    // if first element is no '#' return default background color\r\n    if (colorInput.charAt(0) !== '#') {\r\n\r\n        return false;\r\n    }\r\n    // if color lenght is not exactly 7 return default\r\n    if (colorInput.length !== 7) {\r\n\r\n\r\n        return false;\r\n    }\r\n    // if one of the letters is not included in hex array return  default\r\n    for (let i = 1; i < colorInput.length; i++) {\r\n        if (!hexArray.includes(colorInput.charAt(i))) {\r\n\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\n/**\r\n * Converts a named color into hexadecimal color\r\n * from a list of well known namd colors if found.\r\n * When not given returns a \"\"\r\n * When not found in the list, returns the same value given\r\n * @param colour the named color\r\n * @returns The hex representation of the color or \"\" or the same color\r\n */\r\nexport function colourNameToHex(colour: string | undefined): string {\r\n    /**\r\n     * When not given\r\n     */\r\n    if (!colour) {\r\n        return \"\";\r\n    }\r\n    /**\r\n     * when named color is found\r\n     */\r\n    if (NAMED_COLORS[colour.toLocaleLowerCase()] !== undefined) {\r\n        return NAMED_COLORS[colour.toLocaleLowerCase()];\r\n    }\r\n    /**\r\n     * When the named color was not found\r\n     */\r\n\r\n    return colour;\r\n}\r\n\r\n/**\r\n * hexArray & decArray\r\n * \r\n * arrays of numbers used to convert hexadecimal numbers into decimal and viceversa\r\n */\r\nconst hexArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\r\nconst decArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\r\n\r\n/**\r\n * Converts hex number in string representation to decimal number\r\n * \r\n * \r\n * @param letter the string hex number\r\n * @returns a decimal number\r\n */\r\nexport const hexTodec = (letter: string): number => {\r\n    if (hexArray.includes(letter)) {\r\n        return decArray[hexArray.indexOf(letter)];\r\n    } else {\r\n        return 0;\r\n    }\r\n}\r\n\r\n\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const asureColor = (color?: string): string => {\r\n    if (color !== undefined && color !== \"\") {\r\n        return color;\r\n    } else {\r\n        return DEFAULT_FONT_COLOR;\r\n    }\r\n}\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const completeAsureColor = (color?: string, perc = 1): string => {\r\n\r\n    return hexColorToRGB(asureColor(colourNameToHex(color)), perc);\r\n\r\n}\r\n\r\n\r\n\r\nexport const DEFAULT_FONT_COLOR = \"#646c7f\";","import { ExtFile, ExtFileInstance, ExtFileManager } from \"../types\";\r\n\r\nexport const extFileReconcilation = (\r\n    dropzoneId: number | string | undefined,\r\n    extFileIncomming: ExtFile[]\r\n): ExtFile[] | undefined => {\r\n    let result: ExtFile[] = [];\r\n\r\n    let arrOfExtFiles: ExtFileInstance[] | undefined =\r\n        ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n\r\n    // continue only if arrOfExtFiles exists\r\n    if (arrOfExtFiles) {\r\n        //different sizes means there was deleted files\r\n        //also can be new files to be uploaded\r\n        //needed an extra flag to allow add files in the middle of uploading process\r\n        // if new files are added, they are added to the Manager\r\n        // outside they were already added to the UI\r\n        // inside Dropzone, will be needed a .next() method for manager\r\n\r\n        // 1st allow deleted files and ignore new ones\r\n        // reduce the arrOfExtFileInstances array\r\n        // parecido a listas ligadas, iterar hasta encontrar null XD\r\n        let incommingTemp: ExtFile[] = [...extFileIncomming];\r\n        incommingTemp = incommingTemp.filter(\r\n            (F) => arrOfExtFiles?.findIndex(I => I.id === F.id) === -1\r\n        );\r\n\r\n        //console.log(\"reconciliation incommingTemp\", incommingTemp);\r\n        \r\n\r\n        //different sizes not allowed\r\n        if (arrOfExtFiles.length !== extFileIncomming.length || extFileIncomming.length === 0) {\r\n            return undefined;\r\n        }\r\n        for (let i = 0; i < arrOfExtFiles.length; i++) {\r\n            if (\r\n                (extFileIncomming[i].uploadStatus === undefined)\r\n                &&\r\n                (arrOfExtFiles[i].uploadStatus === \"preparing\")\r\n            ) {\r\n                //console.log(\"useDropzoneFileListUpdater onCancel i\", i);\r\n                arrOfExtFiles[i].uploadStatus = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}"],"names":["fileSizeFormater","fileSize","toFixed","DropzoneItalian","defaultLabel","uploadingMessage","amountOfFiles","uploadFinished","uploaded","rejected","concat","noFilesMessage","footer","acceptAll","acceptCustom","accept","header","uploadFilesMessage","maxSizeMessage","maxFileSize","validFilesMessage","numberOfValidFiles","maxFiles","fakeuploadsuccess","fakeUploadError","FileItemItalian","fullInfoLayer","name","size","type","status","preparing","uploading","success","valid","denied","error","aborted","ValidateErrorItalian","maxSizeError","maxSize","acceptError","maxFileCount","DropzoneFrench","FileItemFrench","ValidateErrorFrench","DropzoneEnglish","FileItemEnglish","ValidateErrorEnglish","DropzoneSpanish","FileItemSpanish","ValidateErrorSpanish","DropzoneRussian","FileItemRussian","ValidateErrorRussian","DropzonePortuguese","FileItemPortuguese","ValidateErrorPortuguese","DropzoneSimplifiedChinese","FileItemSimplifiedChinese","ValidateErrorSimplifiedChinese","DropzoneTraditionalChinese","FileItemTraditionalChinese","ValidateErrorTraditionalChinese","FileItemLocalizer","FileItemLocalizerSelector","local","DropzoneLocalizer","DropzoneLocalizerSelector","ValidateErrorLocalizer","ValidateErrorLocalizerSelector","includes","readAsDataURL","file","onProgress","onError","Promise","resolve","reject","reader_1","FileReader","onprogress","onerror","onload","result","undefined","readAsText","encoding","reader_2","readAsBinaryString","reader_3","readAsArrayBuffer","reader_4","resizeImage","base64Str","maxWidth","maxHeight","img_1","Image","src","canvas","document","createElement","MAX_WIDTH","MAX_HEIGHT","width","height","ctx","getContext","drawImage","toDataURL","process","env","NODE_ENV","console","getImageOrientation","imageSource","length","ev","sevenzip","aac","abw","accdb","avi","azw","bmp","bz","bz2","cda","csh","css","csv","docx","drawio","eot","epub","freearc","gif","gzip","html","icalendar","java","jar","javascript","jpeg","json","jsonld","midi","mp3","mp4","mpeg","mpkg","octet","odp","ods","odt","oga","ogv","ogx","opus","otf","pdf","php","png","pptx","psd","python","tar","rar","react","rtf","sass","sh","swf","text","tiff","ttf","typescript","vsd","vue","wav","webm","weba","webp","wma","wmv","woff","xlsx","xml","xul","zip","getExt","fileName","exec","DEF_GEN_MIME","audioSelector","tailMime","textSelector","imageSelector","fontSelector","videoSelector","applicationSelector","mimeSelector","mimeType","headerMime","split","extensionSelector","extension","genericMime","checkIsCode","getURLFileIco","customIcons","fallBack","url","mimeResume","mimeUrlList","extention","customUrl","getURLFileIcoFromNameAndType","arc","mp2t","xhtml","ExtFileInstance","extFile","id","imageUrl","errors","uploadMessage","uploadStatus","progress","xhr","extraData","extraUploadData","serverResponse","downloadUrl","videoUrl","this","toExtFile","extFileInstance","extFileClone","extFileInstanceKeys","Object","keys","extFileInstanceValues","values","i","currentValue","currKey","prototype","ExtFileManager","getNextId","nextId","setFileList","extFilesInstances","fileLists","__spreadArray","createFileListMap","removeFileListMap","getExtFileInstanceList","setFileListMapPreparing","dropzoneId","localFiles","validateFiles","cleanOnUpload","resultExtList","temLocalFiles","filter","map","__assign","F","setFileListMapPreparing2","createUploadConfig","method","headers","uploadLabel","cleanonUpload","SyntheticFile","createFile","File","defineProperty","get","create_aac","create_abw","create_freearc","create_avi","create_azw","create_octet","create_bmp","create_bz","create_bz2","create_cda","create_csh","create_css","create_csv","create_doc","create_docx","create_eot","create_epub","create_gzip","create_gif","create_htm","create_html","create_ico","create_icalendar","create_jar","create_jpeg","create_jpg","create_js","create_json","create_jsonld","create_mid","create_x_mid","create_midi","create_x_midi","create_mjs","create_mp3","create_mp4","create_mpeg","create_mpkg","create_odp","create_ods","create_odt","create_oga","create_ogv","create_ogx","create_opus","create_otf","create_png","create_pdf","create_php","create_ppt","create_pptx","create_rar","create_rtf","create_sh","create_svg","create_swf","create_tar","create_tif","create_tiff","create_ts","create_ttf","create_text","create_typescript","create_vsd","create_wav","create_weba","create_webm","create_webp","create_woff","create_woff2","create_xhtml","create_xlsx","create_xls","create_xml","create_xml_txt","create_xul","create_zip","create_3gp","create_3gp2","create_3gp_a","create_3gp_v","create_7z","create_python","create_java","create_react","create_vue","createFileListMiscelanious","listFile","push","createListOfMultiTypeFile","createSyntheticFile","FileIdGenerator","fileListToExtFileArray","fileList","extFileArray","f","fileListToExtFileInstanceArray","isValidateActive","validator","shrinkWord","word","card","newWord","slice","setPrepToUploading","setTimeout","uploadOne","sleepPreparing","preparingTime","prepToUploadOne","uploadOneExtFile","fakeFuiUpload","Math","floor","random","message","payload","getRandomInt","min","max","cleanInput","inputElement","value","addClassName","baseClassName","className","isUploadAbleExtFile","validateFilesFlag","getLocalFileItemData","localFileName","localFileType","localFileSize","separateAccept","acceptItem","trim","validateAccept","charAt","headerMimeFile","tailMimeFile","fileListvalidator","preValidatedFiles","remainingValids","localValidator","localization","output","countdown","ValidationErrorLocalizer","validatedFile","validateFile","maxFileErrorMessenger","Infinity","validateExtFileList","extFileList","localValidatorProps","fileListResult","remaining","currentExtFile","validateExtFile","validatorProps","localErrors","extFileResult","errorsResult","apply","maxFileSizeErrorMessenger","isValid","idGenerated","listOfErrors","makeSyntheticExtFile","ceil","newUpoadStatus","getRandomUploadStatus","customUploadMessage","randInt","extFileMock","XMLHttpRequest","extraData1","extraData2","deleted","addExtraData","formData","extraDataKeys","append","addHeaders","headerKeys","setRequestHeader","TIMEOUT_ERROR_RESPONSE","ABORTED_ERROR_RESPONSE","JSON_PARSE_ERROR_RESPONSE","UNEXPECTED_ERROR_RESPONSE","NO_XHR_PROVIDED_ERROR","makeServerResponse","JsonParseResponse","jsonResponse","JSON","parse","response","makeSuccessUploadResponse","responseFui","makeErrorUploadResponse","uploadFormData","endpoint","data","finalMethod","toUpperCase","upload","ontimeout","onabort","onloadend","e","__awaiter","onreadystatechange","readyState","open","send","uploadExtFile","uploader","localMethod","fileToUpload","FormData","finalExtraData","otherValue","param2","tecnica","friend","age","addExtraDataUpload","_a","uploadFile","label","_this","sent","FuiUpload","unexpectedErrorUploadResult","unableToUploadResult","uploadedFile","completeUploadResult","uploadStatusresult","toUploadableExtFileList","instantPreparingToUploadOne","preparingToUploadOne","sleepTransition","time","sanitizeArrExtFile","arrExtFile","setNextUploadStatus","extFileobj","prevStatus","nextStstaus","NAMED_COLORS","indianred","lightcoral","salmon","darksalmon","lightsalmon","crimson","red","firebrick","darkred","pink","lightpink","hotpink","deeppink","mediumvioletred","palevioletred","coral","tomato","orangered","darkorange","orange","gold","yellow","lightyellow","lemonchiffon","lightgoldenrodyellow","papayawhip","moccasin","peachpuff","palegoldenrod","khaki","darkkhaki","lavender","thistle","plum","violet","orchid","fuchsia","magenta","mediumorchid","mediumpurple","rebeccapurple","blueviolet","darkviolet","darkorchid","darkmagenta","purple","indigo","slateblue","darkslateblue","mediumslateblue","greenyellow","chartreuse","lawngreen","lime","limegreen","palegreen","lightgreen","mediumspringgreen","springgreen","mediumseagreen","seagreen","forestgreen","green","darkgreen","yellowgreen","olivedrab","olive","darkolivegreen","mediumaquamarine","darkseagreen","lightseagreen","darkcyan","teal","aqua","cyan","lightcyan","paleturquoise","aquamarine","turquoise","mediumturquoise","darkturquoise","cadetblue","steelblue","lightsteelblue","powderblue","lightblue","skyblue","lightskyblue","deepskyblue","dodgerblue","cornflowerblue","royalblue","blue","mediumblue","darkblue","navy","midnightblue","cornsilk","blanchedalmond","bisque","navajowhite","wheat","burlywood","tan","rosybrown","sandybrown","goldenrod","darkgoldenrod","peru","chocolate","saddlebrown","sienna","brown","maroon","white","snow","honeydew","mintcream","azure","aliceblue","ghostwhite","whitesmoke","seashell","beige","oldlace","floralwhite","ivory","antiquewhite","linen","lavenderblush","mistyrose","gainsboro","lightgray","silver","darkgray","gray","dimgray","lightslategray","slategray","darkslategray","black","darkerColor","colorInput","percentage","darkedColor","reduce","component1","component2","component3","isHexColor","colourNameToHex","hexTodec","components","replace","parseInt","brighterColor","brightedColor","increase","hexColorToRGB","perc","defaultColor","resultDefault","color","hexArray","colour","toLocaleLowerCase","decArray","letter","indexOf","asureColor","DEFAULT_FONT_COLOR","completeAsureColor","extFileReconcilation","extFileIncomming","arrOfExtFiles","incommingTemp","findIndex","I"],"mappings":"AAIQ,IAAMA,EAAmB,SAACC,GAE9B,GAAKA,EAiBL,OAdIA,EAAW,KACFA,EAAW,SAGhBA,EAAW,SACDA,EAAW,MAAMC,QAAQ,GAAK,MACjCD,EAAW,YACPA,EAAW,KAAQ,MAAMC,QAAQ,GAAK,MAC1CD,EAAW,eACNA,EAAW,KAAQ,KAAQ,MAAMC,QAAQ,GAAK,OAE7CD,EAAW,KAAQ,KAAQ,KAAQ,MAAMC,QAAQ,GAAK,KAI/E,EClBaC,EAA+B,CACxCC,aAAc,2BAEdC,iBAAkB,SAACC,GAAoB,MAAO,yBAAkBA,EAAa,QAAU,EACvFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,kBAAAC,OAAkBF,EAAQ,sBAAAE,OAAqBD,EAAU,EACjGE,eAAgB,kDAChBC,OAAQ,CACJC,UAAW,sCACXC,aAAc,SAACC,GAAW,MAAA,4BAA4BL,OAAAK,EAAQ,GAElEC,OAAQ,CACJC,mBAAoB,cACpBC,eAAgB,SAACC,GAAgB,MAAA,sBAAsBT,OAAAS,EAAa,EACpEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,SAAAZ,OAASW,EAAkB,KAAAX,OAAIY,EAAU,GAElGC,kBAAmB,yCACnBC,gBAAiB,kCAMRC,EAA+B,CACxCC,cAAe,CACXC,KAAM,SACNC,KAAM,eACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,eACVC,UAAW,WACXC,QAAS,WACTC,MAAO,SACPC,OAAQ,aACRC,MAAO,SACPC,QAAQ,eAMFC,EAAoC,CAC9CC,aAAc,SAACC,GAAY,MAAA,gDAAA9B,OAAgDV,EAAiBwC,GAAoB,EAChHC,YAAa,wBACbC,aAAc,SAACpB,GAAa,MAAA,2BAA2BZ,OAAAY,EAAqB,cAAA,GC5CnEqB,EAA8B,CACvCvC,aAAc,2BAEdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,YAAc,EACrFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,0BAAAC,OAA0BF,EAAQ,wBAAAE,OAAuBD,EAAU,EAC3GE,eAAgB,iCAChBC,OAAQ,CACJC,UAAW,mCACXC,aAAc,SAACC,GAAW,MAAA,qBAAqBL,OAAAK,EAAQ,GAE3DC,OAAQ,CACJC,mBAAoB,UACpBC,eAAgB,SAACC,GAAgB,MAAA,mBAAmBT,OAAAS,EAAa,EACjEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,aAAAZ,OAAaW,EAAkB,KAAAX,OAAIY,EAAU,GAEtGC,kBAAmB,0CACnBC,gBAAiB,kCAMRoB,EAA8B,CACvClB,cAAe,CACXC,KAAM,WACNC,KAAM,cACNC,KAAM,aAEVC,OAAQ,CACJC,UAAU,WACVC,UAAW,WACXC,QAAS,SACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,QAAQ,eAMFQ,EAAmC,CAC7CN,aAAc,SAACC,GAAY,MAAA,6DAAA9B,OAA6DV,EAAiBwC,GAAoB,EAC7HC,YAAa,2BACbC,aAAc,SAACpB,GAAa,MAAA,gCAAgCZ,OAAAY,EAAW,IAAA,GC5C9DwB,EAA+B,CACxC1C,aAAc,uBACdC,iBAAkB,SAACC,GAAoB,MAAO,oBAAaA,EAAa,SAAW,EACnFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,mBAAAC,OAAmBF,EAAQ,sBAAAE,OAAqBD,EAAU,EAClGE,eAAgB,2CAChBC,OAAQ,CACJC,UAAW,0BACXC,aAAc,SAACC,GAAW,MAAA,kBAAkBL,OAAAK,EAAQ,GAExDC,OAAQ,CACJC,mBAAoB,eACpBC,eAAgB,SAACC,GAAgB,MAAA,kBAAkBT,OAAAS,EAAa,EAChEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,SAAAZ,OAASW,EAAkB,KAAAX,OAAIY,EAAU,GAElGC,kBAAmB,gCACnBC,gBAAiB,+CAMRuB,EAA+B,CACxCrB,cAAe,CACXC,KAAM,SACNC,KAAM,SACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,YACVC,UAAW,YACXC,QAAS,UACTC,MAAO,QACPC,OAAQ,YACRC,MAAO,QACPC,QAAQ,YAOHW,EAAoC,CAC7CT,aAAc,SAACC,GACX,MAAA,6CAA6C9B,OAAAV,EAAiBwC,GAAoB,EACtFC,YAAa,2BACbC,aAAc,SAACpB,GACX,MAAA,wBAAAZ,OAAwBY,EAA4B,qBAAA,GC9C/C2B,EAA+B,CACxC7C,aAAc,2BAEdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,YAAc,EACrFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,qBAAAC,OAAqBF,EAAQ,2BAAAE,OAA0BD,EAAU,EACzGE,eAAgB,+CAChBC,OAAQ,CACJC,UAAW,uCACXC,aAAc,SAACC,GAAW,MAAA,kCAAkCL,OAAAK,EAAQ,GAExEC,OAAQ,CACJC,mBAAoB,QACpBC,eAAgB,SAACC,GAAgB,MAAA,eAAeT,OAAAS,EAAa,EAC7DC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,YAAAZ,OAAYW,EAAkB,KAAAX,OAAIY,EAAU,GAErGC,kBAAmB,oCACnBC,gBAAiB,6BAMR0B,EAA+B,CACxCxB,cAAe,CACXC,KAAM,WACNC,KAAM,WACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,aACVC,UAAW,WACXC,QAAS,QACTC,MAAO,SACPC,OAAQ,YACRC,MAAO,QACPC,QAAS,YAMJc,EAAoC,CAC7CZ,aAAc,SAACC,GAAY,MAAA,+CAAA9B,OAA+CV,EAAiBwC,GAAoB,EAC/GC,YAAa,+BACbC,aAAc,SAACpB,GAAa,MAAA,gCAAgCZ,OAAAY,EAAqB,cAAA,GC5CxE8B,EAA+B,CACxChD,aAAc,8BACdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,UAAY,EACnFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,qBAAAC,OAAqBF,EAAQ,0BAAAE,OAAyBD,EAAU,EACxGE,eAAgB,kDAChBC,OAAQ,CACJC,UAAW,+BACXC,aAAc,SAACC,GAAW,MAAA,oBAAoBL,OAAAK,EAAQ,GAE1DC,OAAQ,CACJC,mBAAoB,YACpBC,eAAgB,SAACC,GAAgB,MAAA,gBAAgBT,OAAAS,EAAa,EAC9DC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,SAAAZ,OAASW,EAAkB,KAAAX,OAAIY,EAAU,GAElGC,kBAAmB,4BACnBC,gBAAiB,uBAOR6B,EAA+B,CACxC3B,cAAe,CACXC,KAAM,QACNC,KAAM,WACNC,KAAM,SAEVC,OAAQ,CACJC,UAAU,aACVC,UAAW,WACXC,QAAS,QACTC,MAAO,SACPC,OAAQ,YACRC,MAAO,SACPC,QAAQ,eAOHiB,EAAoC,CAC7Cf,aAAc,SAACC,GACX,MAAA,+DAA+D9B,OAAAV,EAAiBwC,GAAoB,EACxGC,YAAa,wBACbC,aAAc,SAACpB,GACX,MAAA,8CAAAZ,OAA8CY,EAAW,IAAA,GC/CpDiC,EAAkC,CAC3CnD,aAAc,4BAEdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,YAAc,EACrFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,sBAAAC,OAAsBF,EAAQ,2BAAAE,OAA0BD,EAAU,EAC1GE,eAAgB,kDAChBC,OAAQ,CACJC,UAAW,wCACXC,aAAc,SAACC,GAAW,MAAA,qBAAqBL,OAAAK,EAAQ,GAE3DC,OAAQ,CACJC,mBAAoB,SACpBC,eAAgB,SAACC,GAAgB,MAAA,mBAAmBT,OAAAS,EAAa,EACjEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,YAAAZ,OAAYW,EAAkB,KAAAX,OAAIY,EAAU,GAErGC,kBAAmB,oCACnBC,gBAAiB,kBAORgC,EAAkC,CAC3C9B,cAAe,CACXC,KAAM,SACNC,KAAM,YACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,aACVC,UAAW,WACXC,QAAS,QACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,OACPC,QAAQ,aAMFoB,EAAuC,CACjDlB,aAAc,SAACC,GAAY,MAAA,qEAAA9B,OAAqEV,EAAiBwC,GAAoB,EACrIC,YAAa,qCACbC,aAAc,SAACpB,GAAa,MAAA,kCAAkCZ,OAAAY,EAAqB,cAAA,GC7C1EoC,EAAyC,CAClDtD,aAAc,YACdC,iBAAkB,SAACC,GAAoB,MAAO,aAAMA,EAAa,OAAS,EAC1EC,eAAgB,SAACC,EAAUC,GAAa,MAAA,QAAAC,OAAQF,EAAQ,UAAAE,OAASD,EAAU,EAC3EE,eAAgB,eAChBC,OAAQ,CACJC,UAAW,WACXC,aAAc,SAACC,GAAW,MAAA,UAAUL,OAAAK,EAAQ,GAEhDC,OAAQ,CACJC,mBAAoB,OACpBC,eAAgB,SAACC,GAAgB,MAAA,UAAUT,OAAAS,EAAa,EACxDC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,MAAAZ,OAAMW,EAAkB,KAAAX,OAAIY,EAAU,GAE/FC,kBAAmB,UACnBC,gBAAiB,SAMRmC,EAAyC,CAClDjC,cAAe,CACXC,KAAM,SACNC,KAAM,OACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,MACVC,UAAW,KACXC,QAAS,KACTC,MAAO,QACPC,OAAQ,SACRC,MAAO,KACPC,QAAQ,OAOHuB,EAA8C,CACvDrB,aAAc,SAACC,GACX,MAAA,oBAAoB9B,OAAAV,EAAiBwC,GAAoB,EAC7DC,YAAa,UACbC,aAAc,SAACpB,GACX,MAAA,aAAAZ,OAAaY,EAAW,IAAA,GC7CnBuC,EAA0C,CACnDzD,aAAc,aACdC,iBAAkB,SAACC,GAAoB,MAAO,YAAKA,EAAa,MAAQ,EACxEC,eAAgB,SAACC,EAAUC,GAAa,MAAA,SAAAC,OAASF,EAAQ,YAAAE,OAAWD,EAAU,EAC9EE,eAAgB,eAChBC,OAAQ,CACJC,UAAW,WACXC,aAAc,SAACC,GAAW,MAAA,SAASL,OAAAK,EAAQ,GAE/CC,OAAQ,CACJC,mBAAoB,OACpBC,eAAgB,SAACC,GAAgB,MAAA,UAAUT,OAAAS,EAAa,EACxDC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,OAAAZ,OAAOW,EAAkB,KAAAX,OAAIY,EAAU,GAEhGC,kBAAmB,UACnBC,gBAAiB,SAMRsC,EAA0C,CACnDpC,cAAe,CACXC,KAAM,SACNC,KAAM,SACNC,KAAM,UAEVC,OAAQ,CACJC,UAAW,MACXC,UAAW,KACXC,QAAS,KACTC,MAAO,OACPC,OAAQ,OACRC,MAAO,KACPC,QAAS,OAOJ0B,EAA+C,CACxDxB,aAAc,SAACC,GACX,MAAA,oBAAoB9B,OAAAV,EAAiBwC,GAAoB,EAC7DC,YAAa,UACbC,aAAc,SAACpB,GACX,MAAA,aAAAZ,OAAaY,EAAW,IAAA,GC3CnB0C,EAAwC,CACjD,QAASd,EACT,QAASH,EACT,QAASH,EACT,QAASnB,EACT,QAAS+B,EACT,QAASH,EACT,QAASM,EACT,QAASG,GAQAG,EAA4B,SAACC,GACtC,OAAQA,GACJ,IAAK,QAAS,OAAOF,EAAkB,SACvC,IAAK,QAOL,QAAS,OAAOA,EAAkB,SANlC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SAG/C,EC5BaG,EAAwC,CACjD,QAASlB,EACT,QAASH,EACT,QAASH,EACT,QAASxC,EACT,QAASoD,EACT,QAASH,EACT,QAASM,EACT,QAASG,GAQAO,EAA4B,SAACF,GACtC,OAAQA,GACJ,IAAK,QAAS,OAAOC,EAAkB,SACvC,IAAK,QAOL,QAAS,OAAOA,EAAkB,SANlC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SAG/C,EC5BaE,EAA6C,CACtD,QAASlB,EACT,QAASH,EACT,QAASH,EACT,QAASP,EACT,QAASmB,EACT,QAASH,EACT,QAASM,EACT,QAASG,GAOAO,EAAiC,SAACJ,GAC3C,OAAKA,GAAU,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAASK,SAASL,GAG1FG,EAAuBH,GAFnBG,EAAuB,QAGtC,ECvBaG,EAAgB,SAACC,EAAmBC,EAAuBC,GACpE,OAAO,IAAIC,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAMC,EAAS,IAAIC,WACnBD,EAAOE,WAAa,WAChBP,SAAAA,GACJ,EACAK,EAAOG,QAAU,WACbP,SAAAA,GACJ,EACAI,EAAOI,OAAS,WACZN,EAAQE,EAAOK,OACnB,EACAL,EAAOP,cAAcC,EACxB,CAAC,MAAOrC,GACL0C,OAAOO,EACV,CACL,GACJ,EAYaC,EAAa,SAACb,EAAmBc,EAAmBb,EAAuBC,GACpF,OAAO,IAAIC,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAMU,EAAS,IAAIR,WACnBQ,EAAOL,OAAS,WACZN,EAAQW,EAAOJ,OACnB,EACAI,EAAOP,WAAa,WAChBP,SAAAA,GACJ,EACAc,EAAON,QAAU,WACbP,SAAAA,GACJ,EACAa,EAAOF,WAAWb,EAAMc,GAAsB,SACjD,CAAC,MAAOnD,GACL0C,OAAOO,EACV,CACL,GACJ,EAUaI,EAAqB,SAAChB,EAAmBC,EAAuBC,GACzE,OAAO,IAAIC,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAMY,EAAS,IAAIV,WACnBU,EAAOP,OAAS,WACZN,EAAQa,EAAON,OACnB,EACAM,EAAOT,WAAa,WAChBP,SAAAA,GACJ,EACAgB,EAAOR,QAAU,WACbP,SAAAA,GACJ,EACAe,EAAOD,mBAAmBhB,EAC7B,CAAC,MAAOrC,GACL0C,OAAOO,EACV,CACL,GACJ,EAQaM,EAAoB,SAAClB,EAAmBC,EAAuBC,GACxE,OAAO,IAAIC,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAMc,EAAS,IAAIZ,WACnBY,EAAOT,OAAS,WACZN,EAAQe,EAAOR,OACnB,EACAQ,EAAOX,WAAa,WAChBP,SAAAA,GACJ,EACAkB,EAAOV,QAAU,WACbP,SAAAA,GACJ,EACAiB,EAAOD,kBAAkBlB,EAC5B,CAAC,MAAOrC,GACL0C,OAAOO,EACV,CACL,GACJ,WCpGgBQ,EACZC,EACAC,EACAC,GAEA,YAHA,IAAAD,IAAAA,EAAc,UACd,IAAAC,IAAAA,EAAe,KAER,IAAIpB,SAAQ,SAACC,EAASC,GACzB,IACI,IAAImB,EAAwB,IAAIC,MAChCD,EAAIE,IAAML,EACVG,EAAId,OAAS,WACT,IAAIiB,EAA4BC,SAASC,cAAc,UACjDC,EAAoBR,EACpBS,EAAqBR,EACvBS,EAAgBR,EAAIQ,MACpBC,EAAiBT,EAAIS,OAErBX,EAAWU,GAAST,EAAYU,EAChC7B,EAAQiB,GAEJW,EAAQC,EACJD,EAAQF,IACRG,GAAUH,EAAYE,EACtBA,EAAQF,GAGRG,EAASF,IACTC,GAASD,EAAaE,EACtBA,EAASF,GAGrBJ,EAAOK,MAAQA,EACfL,EAAOM,OAASA,EAChB,IAAIC,EAAuCP,EAAOQ,WAAW,MACzDD,GACAA,EAAIE,UAAUZ,EAAK,EAAG,EAAGQ,EAAOC,GAChC7B,EAAQuB,EAAOU,eAGc,gBAAzBC,QAAQC,IAAIC,UACZC,QAAQ9E,MAAM,mDAElB0C,OAAOO,GAEf,CACH,CAAC,MAAOjD,GACwB,gBAAzB2E,QAAQC,IAAIC,UACZC,QAAQ9E,MAAM,mDAElB0C,OAAOO,EACV,CACL,GACJ,CCnDM,SAAU8B,EACZC,GAEA,OAAO,IAAIxC,SAAQ,SAACC,EAASC,GAEzB,GAAKsC,GAAsC,IAAvBA,EAAYC,OAMhC,IAGI,IAAIpB,EAAwB,IAAIC,MAChCD,EAAIE,IAAMiB,EACVnB,EAAIf,QAAU,SAACoC,GAEXxC,EAAO,YACX,EACAmB,EAAId,OAAS,WACT,IAAIsB,EAAgBR,EAAIQ,MACpBC,EAAiBT,EAAIS,OAErB7B,EADA4B,EAAQC,EACA,YAEA,WAEhB,CACH,CAAC,MAAOtE,GAGwB,gBAAzB2E,QAAQC,IAAIC,UACZC,QAAQ9E,MAAM,6DAElB0C,EAAO,YACV,MA5BGA,EAAO,YA6Bf,GACJ,CC/CO,IAAMyC,EAAW,wGACXC,EAAM,wGACNC,EAAM,wGACNC,EAAQ,wGACRC,EAAM,wGACNC,EAAM,wGACNC,EAAM,wGACNC,EAAK,wGACLC,EAAM,wGAENC,EAAM,wGACNC,EAAM,wGACNC,EAAM,wGACNC,EAAM,wGACNC,EAAO,wGAEPC,EAAS,wGAGTC,EAAM,wGAENC,EAAO,wGACPC,GAAU,wGACVC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGACPC,GAAY,wGAGZC,GAAO,wGACPC,GAAM,wGACNC,GAAa,wGACbC,GAAO,wGAEPC,GAAO,wGACPC,GAAS,wGACTC,GAAO,wGAEPC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGACPC,GAAQ,wGACRC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGAGPC,GAAM,wGAGNC,GAAS,wGACTC,GAAM,wGACNC,GAAM,wGACNC,GAAQ,wGAERC,GAAM,wGACNC,GAAO,wGAEPC,GAAK,wGACLC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGACPC,GAAM,wGACNC,GAAa,wGAEbC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGACPC,GAAO,wGACPC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGAEPC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGCnFLC,GAAS,SAACC,GACpB,IACM5G,EADK,kBACO6G,KAAKD,GACvB,OAAI5G,EACOA,EAAO,GAEP,EAGf,ECSM8G,GAA+B,QAMxBC,GAAgB,SAACC,GAC1B,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,OACL,IAAK,SAAU,MAAO,OACtB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OAIpB,IAAK,MAAO,MAAO,MACnB,QAAS,OAAOF,GAExB,EACaG,GAAe,SAACD,GACzB,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,WAAY,MAAO,YACxB,IAAK,aACL,IAAK,eAAgB,MAAO,aAC5B,IAAK,QAAS,MAAO,OACrB,IAAK,MAAO,MAAO,MACnB,QAAS,OAAOF,GAGxB,EACaI,GAAgB,SAACF,GAC1B,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MAGnB,IAAK,MACL,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MAGnB,IAAK,OAAQ,MAAO,OACpB,IAAK,OAAQ,MAAO,OACpB,QAAS,OAAOF,GAGxB,EACaK,GAAe,SAACH,GACzB,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MACnB,IAAK,OACL,IAAK,QAAS,MAAO,OACrB,QAAS,OAAOF,GAGxB,EAEaM,GAAgB,SAACJ,GAC1B,OAAQA,GACJ,IAAK,YACL,IAAK,UACL,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MAEnB,IAAK,OAAQ,MAAO,OAIpB,QAAS,OAAOF,GAExB,EAMaO,GAAsB,SAACL,GAChC,OAAQA,GACJ,IAAK,YACL,IAAK,UAAW,MAAO,MACvB,IAAK,YACL,IAAK,UAAW,MAAO,MACvB,IAAK,mBAAoB,MAAO,MAChC,IAAK,eAAgB,MAAO,QAC5B,IAAK,SAEL,IAAK,OAAQ,MAAO,KADpB,IAAK,UAEL,IAAK,QAAS,MAAO,MACrB,IAAK,QAAS,MAAO,MACrB,IAAK,WAAY,MAAO,QACxB,IAAK,MACL,IAAK,QAAS,MAAO,MACrB,IAAK,oBAAqB,MAAO,MACjC,IAAK,WAAY,MAAO,OACxB,IAAK,OAAQ,MAAO,OACpB,IAAK,eAAgB,MAAO,MAC5B,IAAK,eAAgB,MAAO,aAC5B,IAAK,OAAQ,MAAO,OACpB,IAAK,UAAW,MAAO,SACvB,IAAK,0BAA2B,MAAO,OACvC,IAAK,MAAO,MAAO,MACnB,IAAK,UAAW,MAAO,MACvB,IAAK,MAAO,MAAO,MACnB,IAAK,OACL,IAAK,KAAM,MAAO,KAClB,IAAK,oBAAqB,MAAO,MACjC,IAAK,QAAS,MAAO,MACrB,IAAK,cAAe,MAAO,MAC3B,IAAK,YAAa,MAAO,MACzB,IAAK,YAAa,MAAO,QACzB,IAAK,MAAO,MAAO,MACnB,IAAK,sBAAuB,MAAO,MACnC,IAAK,8DACL,IAAK,SAAU,MAAO,OACtB,IAAK,wDAAyD,MAAO,OACrE,IAAK,gEACL,IAAK,oBAAqB,MAAO,OACjC,IAAK,sCAAuC,MAAO,MACnD,IAAK,8BAA+B,MAAO,MAC3C,IAAK,qCAAsC,MAAO,MAClD,IAAK,MACL,IAAK,mBAAoB,MAAO,MAChC,IAAK,MAAO,MAAO,MACnB,QAAS,OAAOF,GAExB,EAOaQ,GAAe,SAACC,GAEzB,IAAKA,IAAaA,EAASpI,SAAS,KAChC,OAAO2H,GAEX,IAAIU,EAAaD,EAASE,MAAM,KAAK,GACjCT,EAAWO,EAASE,MAAM,KAAK,GAMnC,OAAQD,GACJ,IAAK,cAAe,OAAOH,GAAoBL,GAC/C,IAAK,QAAS,OAAOD,GAAcC,GACnC,IAAK,QAAS,OAAOI,GAAcJ,GACnC,IAAK,OAAQ,OAAOC,GAAaD,GACjC,IAAK,QAAS,OAAOE,GAAcF,GACnC,IAAK,OAAQ,OAAOG,GAAaH,GAEjC,QAAS,OAAOF,GAExB,EAQaY,GAAoB,SAACC,GAC9B,IAAIC,EAA8B,QA6BlC,OA3BID,GAA2B,KAAdA,IACTA,EAAUxI,SAAS,QAAUwI,EAAUxI,SAAS,OAChDyI,EAAc,MACPD,EAAUxI,SAAS,OAC1ByI,EAAc,OACPD,EAAUxI,SAAS,OAC1ByI,EAAc,OACPD,EAAUxI,SAAS,UAC1ByI,EAAc,SACPD,EAAUxI,SAAS,OAC1ByI,EAAc,MACPD,EAAUxI,SAAS,OAC1ByI,EAAc,MACO,QAAdD,EACPC,EAAc,QACO,OAAdD,EACPC,EAAc,SACO,QAAdD,EACPC,EAAc,MACO,SAAdD,EACPC,EAAc,OACO,OAAdD,EACPC,EAAc,aACO,SAAdD,GAAsC,SAAdA,IAC/BC,EAAc,SAGfA,CAEX,EAMaC,GAAc,SAACF,GACxB,IAAIC,EAA8B,OAoBlC,OAnBID,GAA2B,KAAdA,IACK,QAAdA,EACAC,EAAc,QACO,OAAdD,EACPC,EAAc,SACO,QAAdD,EACPC,EAAc,MACO,SAAdD,EACPC,EAAc,OACO,OAAdD,GAAoC,QAAdA,EAC7BC,EAAc,aACO,OAAdD,EACPC,EAAc,aACO,QAAdD,EACPC,EAAc,MACO,QAAdD,IACPC,EAAc,QAGfA,CACX,EAQaE,GAAgB,SACzBzI,EACA0I,GAGA,IAAI/H,EAAyB,WAE7B,IAAKX,EAED,OADAW,EAAS8G,IACLiB,aAAA,EAAAA,EAAaC,UACN,CAAEC,IAAKF,aAAW,EAAXA,EAAaC,SAAUE,WAAYlI,GAE9C,CAAEiI,IAAKE,GAAYnI,GAASkI,WAAYlI,GAE/CA,EAASsH,GAAajI,EAAK5C,MAG/B,IAAM2L,EAAoBzB,GAAOtH,EAAK9C,MAEvB,SAAXyD,IACAA,EAAS6H,GAAYO,IAIrBpI,IAAW8G,KACX9G,EAAS0H,GAAkBU,IAG/B,IAAMC,EAAYN,eAAAA,EAAc/H,GAChC,YAAkBC,IAAdoI,EACO,CAAEJ,IAAKI,EAAWH,WAAYlI,GAGlC,CAAEiI,IAAKE,GAAYnI,GAASkI,WAAYlI,EACnD,EAMasI,GAA+B,SACxC/L,EACAE,EACAsL,GAGA,IAAI/H,EAAyB,QAE7B,IAAKzD,EAED,OADAyD,EAAS8G,IACLiB,aAAA,EAAAA,EAAaC,UACN,CAAEC,IAAKF,aAAW,EAAXA,EAAaC,SAAUE,WAAYlI,GAC9C,CAAEiI,IAAKE,GAAYnI,GAASkI,WAAYlI,GAE/CA,EAASsH,GAAa7K,GAG1B,IAAM2L,EAAoBzB,GAAOpK,GAElB,SAAXyD,IACAA,EAAS6H,GAAYO,IAIrBpI,IAAW8G,KACX9G,EAAS0H,GAAkBU,IAE/B,IAAMC,EAAYN,eAAAA,EAAc/H,GAChC,YAAkBC,IAAdoI,EACO,CAAEJ,IAAKI,EAAWH,WAAYlI,GAElC,CAAEiI,IAAKE,GAAYnI,GAASkI,WAAYlI,EACnD,EAcMmI,GAA4B,CAC9B/F,IAAKA,EACLE,MAAOA,EACPD,IAAKA,EACLkG,IAAKnF,GACLb,IAAKA,EACLC,IAAKA,EACL4B,MAAOA,GACP3B,IAAKA,EACLC,GAAIA,EACJC,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,KAAMA,EACNC,OAAQA,EACRC,IAAKA,EACLC,KAAMA,EACNG,KAAMA,GACND,IAAKA,GACLE,KAAMA,GAENC,UAAWA,GACXE,IAAKA,GACLE,KAAMA,GACND,WAAYA,GACZE,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GAENC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNqE,KAAMpE,GACNC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,IAAKA,GACLG,IAAKA,GACLF,IAAKA,GACLC,IAAKA,GACLE,KAAMA,GACNC,IAAKA,GACLG,IAAKA,GACLE,IAAKA,GACLC,KAAMA,GACNC,GAAIA,GAEJC,IAAKA,GACLN,IAAKA,GACLQ,KAAMA,GACNC,IAAKA,GAELC,WAAYA,GACZH,KAAMA,GACNI,IAAKA,GACLE,IAAKA,GACLE,KAAMA,GACND,KAAMA,GACNE,KAAMA,GACNG,KAAMA,GACNF,IAAKA,GACLC,IAAKA,GACLoC,MAAOlF,GACPgD,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GAELvE,SAAUA,EACV+C,OAAQA,GACRzB,KAAMA,GACN4B,MAAOA,GACPU,IAAKA,GAGLiC,SAAU5D,ICvVdsE,GAAA,WAuEI,SAAAA,EAAYC,GAEJ,IAAAC,EAgBAD,KAfAtJ,EAeAsJ,EAAOtJ,KAdP9C,EAcAoM,EAAOpM,KAbPC,EAaAmM,EAbInM,KACJC,EAYAkM,EAZIlM,KACJoM,EAWAF,WAVA7L,EAUA6L,QATAG,EASAH,EAAOG,OARPC,EAQAJ,EAAOI,cAPPC,EAOAL,EAPYK,aACZC,EAMAN,EANQM,SACRC,EAKAP,MAJAQ,EAIAR,EAAOQ,UAHPC,EAGAT,EAAOS,gBAFPC,EAEAV,EAFcU,eACdC,EACAX,EADWW,YAAEC,EACbZ,WAEJa,KAAKZ,GAAKA,EACVY,KAAKnK,KAAOA,EACZmK,KAAKjN,KAAOA,EACZiN,KAAKhN,KAAOA,EACZgN,KAAK/M,KAAOA,EACZ+M,KAAKX,SAAWA,EAEhBW,KAAK1M,MAAQA,EACb0M,KAAKV,OAASA,EACdU,KAAKR,aAAeA,EACpBQ,KAAKT,cAAgBA,EACrBS,KAAKP,SAAWA,EAChBO,KAAKN,IAAMA,EAEXM,KAAKL,UAAYA,EACjBK,KAAKJ,gBAAkBA,EACvBI,KAAKH,eAAiBA,EAEtBG,KAAKF,YAAcA,EACnBE,KAAKD,SAAWA,CACnB,CA+CL,OAlCWb,EAASe,UAAhB,SAAiBC,GAOb,IAJA,IAAIC,EAAwB,CAAA,EACtBC,EAAsBC,OAAOC,KAAKJ,GAClCK,EAAwBF,OAAOG,OAAON,GAEnCO,EAAI,EAAGA,EAAIF,EAAsB9H,OAAQgI,IAAK,CACnD,IAAMC,EAAuCH,EAAsBE,GAG7DE,EAAUP,EAAoBK,QACfhK,IAAjBiK,IAEAP,EAAaQ,GAAWD,EAE/B,CAGD,OAAOP,GAMXjB,EAAA0B,UAAAX,UAAA,WACI,OAAOf,EAAgBe,UAAUD,OAQxCd,CAAD,2vDCtPA,IAAA2B,GAAA,WAAA,SAAAA,IAkOC,CAAD,OA3NkBA,EAAAC,UAAd,WAEI,OADAD,EAAeE,SACRF,EAAeE,QAQZF,EAAAG,YAAd,SACI5B,EACA6B,GAEA,OAAK7B,GAGDyB,EAAeK,UAAU9B,GAAU+B,GAAA,GAAAF,MAE5B7B,GAJA,GAYDyB,EAAAO,kBAAd,WACI,IAAML,EAAiBF,EAAeC,YAGtC,OAFAD,EAAeK,UAAUH,GAAU,GAE5BA,GAOGF,EAAiBQ,kBAA/B,SAAgCjC,GAC5B,IAAKA,EACD,OAAO,EAEP,IAEI,OADAyB,EAAeK,UAAU9B,QAAM3I,EACxB2I,CACV,CAAC,MAAO5L,GAGL,MAF6B,gBAAzB2E,QAAQC,IAAIC,UACZC,QAAQ9E,MAAM,kBAAmBA,GAC9B,CACV,GAQKqN,EAAsBS,uBAApC,SACIlC,GAEA,IACI,IAAKA,EACD,OAEJ,OAAOyB,EAAeK,UAAU9B,EACnC,CAAC,MAAO5L,GAGL,YAF6B,gBAAzB2E,QAAQC,IAAIC,UACZC,QAAQ9E,MAAM,kCAAmCA,GAExD,GAeSqN,EAAuBU,wBAArC,SACIC,EACAC,EACAC,EACAC,GAIA,GAA4B,iBAAfH,GAAiD,iBAAfA,EAG/C,IAEI,IAAII,EAGAC,EAAaV,GAAA,GAAkBM,GAAU,GAGzCE,GAAiBD,IAEjBG,EAAgBA,EAAcC,QAAO,SAAA3C,GAAW,OAAAA,EAAQ7L,KAAR,KAqCpDsO,GA1BIC,EALAH,EAMIG,EACKE,KAAI,SAAA5C,GACD,MAA6B,YAAzBA,EAAQK,cAA8BL,EAAQ7L,MAC9C0O,GAAAA,GAAA,GAAY7C,GAAO,CAAEK,aAAc,cAEnCwC,GAAA,GAAY7C,EAEpB,IAKJ0C,EACKE,KAAI,SAAA5C,GACD,MAA6B,YAAzBA,EAAQK,aACRwC,GAAAA,GAAA,GAAY7C,GAAO,CAAEK,aAAc,cAEnCwC,GAAA,GAAY7C,EAEpB,KAMkB4C,KAAI,SAAAE,GAAK,OAAA,IAAI/C,GAAgB+C,EAApB,IAGrBpB,EAAeG,YAAYQ,EAAYI,GAGzD,OAAOA,CAEV,CAAC,MAAOpO,GAGL,YAF6B,gBAAzB2E,QAAQC,IAAIC,UACZC,QAAQ9E,MAAM,4CAA6CA,GAElE,GAmBSqN,EAAwBqB,yBAAtC,SACIV,EACAC,EACAC,EACAC,GAKA,OAFAd,EAAeG,YAAYQ,EAAYC,EAAWM,KAAI,SAAAE,GAAK,OAAA,IAAI/C,GAAe8C,GAAAA,GAAA,CAAA,EAAMC,GAAC,CAAEzC,aAAc,cAAc,KAE5GqB,EAAeS,uBAAuBE,IA5LlCX,EAAME,OAAW,EACzBF,EAASK,UAA2D,GAgO9EL,CAAA,IC/KYsB,GAAqB,SAC9B1D,EACA2D,EACAC,EACAC,EACAC,GAEA,MAAO,CACH9D,IAAGA,EACH2D,OAAMA,EACNC,QAAOA,EACPC,YAAWA,EACXC,cAAaA,EAErB,EC9DAC,GAAA,WAAA,SAAAA,IAmyBC,CAAD,OA3xBWA,EAAAC,WAAa,SAAC1P,EAAcC,EAAcC,GAC7C,IAAM4C,EAAO,IAAI6M,KAAK,GAAI3P,EAAM,CAAEE,KAAIA,IAMtC,OALAoN,OAAOsC,eAAe9M,EAAM,OAAQ,CAChC+M,IAAG,WACC,OAAO5P,CACV,IAEE6C,CACX,EAMO2M,EAAUK,WAAG,SAAC7P,GACjB,OAAOwP,EAAcC,WAAW,qCAAsCzP,GAAc,QAAS,YACjG,EAMOwP,EAAUM,WAAG,SAAC9P,GACjB,OAAOwP,EAAcC,WAAW,mCAAoCzP,GAAc,QAAS,wBAC/F,EAMOwP,EAAcO,eAAG,SAAC/P,GACrB,OAAOwP,EAAcC,WAAW,mCAAoCzP,GAAc,QAAS,wBAC/F,EAMOwP,EAAUQ,WAAG,SAAChQ,GACjB,OAAOwP,EAAcC,WAAW,+BAAgCzP,GAAc,QAAS,kBAC3F,EAMOwP,EAAUS,WAAG,SAACjQ,GACjB,OAAOwP,EAAcC,WAAW,+CAAgDzP,GAAc,QAAS,+BAC3G,EAMOwP,EAAYU,aAAG,SAAClQ,GACnB,OAAOwP,EAAcC,WAAW,+CAAgDzP,GAAc,QAAS,2BAC3G,EAMOwP,EAAUW,WAAG,SAACnQ,GACjB,OAAOwP,EAAcC,WAAW,mCAAoCzP,GAAc,QAAS,YAC/F,EAMOwP,EAASY,UAAG,SAACpQ,GAChB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,qBAC7F,EAMOwP,EAAUa,WAAG,SAACrQ,GACjB,OAAOwP,EAAcC,WAAW,oCAAqCzP,GAAc,QAAS,sBAChG,EAMOwP,EAAUc,WAAG,SAACtQ,GACjB,OAAOwP,EAAcC,WAAW,oCAAqCzP,GAAc,QAAS,oBAChG,EAMOwP,EAAUe,WAAG,SAACvQ,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,oBAC5F,EAMOwP,EAAUgB,WAAG,SAACxQ,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,WAC5F,EAMOwP,EAAUiB,WAAG,SAACzQ,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,WAC5F,EAMOwP,EAAUkB,WAAG,SAAC1Q,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,qBAC5F,EAMOwP,EAAWmB,YAAG,SAAC3Q,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,0EAC7F,EAMOwP,EAAUoB,WAAG,SAAC5Q,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,gCAC5F,EAMOwP,EAAWqB,YAAG,SAAC7Q,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,uBAC7F,EAMOwP,EAAWsB,YAAG,SAAC9Q,GAClB,OAAOwP,EAAcC,WAAW,+BAAgCzP,GAAc,QAAS,mBAC3F,EAMOwP,EAAUuB,WAAG,SAAC/Q,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,YAC5F,EAMOwP,EAAUwB,WAAG,SAAChR,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,YAC5F,EAMOwP,EAAWyB,YAAG,SAACjR,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,YAC7F,EAMOwP,EAAU0B,WAAG,SAAClR,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,2BAC5F,EAMOwP,EAAgB2B,iBAAG,SAACnR,GACvB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,gBAC5F,EAMOwP,EAAU4B,WAAG,SAACpR,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,2BAC5F,EAMOwP,EAAW6B,YAAG,SAACrR,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,aAC7F,EAMOwP,EAAU8B,WAAG,SAACtR,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,aAC5F,EAMOwP,EAAS+B,UAAG,SAACvR,GAChB,OAAOwP,EAAcC,WAAW,+BAAgCzP,GAAc,QAAS,kBAC3F,EAMOwP,EAAWgC,YAAG,SAACxR,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,mBAC7F,EAMOwP,EAAaiC,cAAG,SAACzR,GACpB,OAAOwP,EAAcC,WAAW,mCAAoCzP,GAAc,QAAS,sBAC/F,EAMOwP,EAAUkC,WAAG,SAAC1R,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,aAC5F,EAMOwP,EAAYmC,aAAG,SAAC3R,GACnB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,eAC5F,EAMOwP,EAAWoC,YAAG,SAAC5R,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,eAC7F,EAMOwP,EAAaqC,cAAG,SAAC7R,GACpB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,eAC7F,EAMOwP,EAAUsC,WAAG,SAAC9R,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,kBAC5F,EAMOwP,EAAUuC,WAAG,SAAC/R,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,aAC5F,EAMOwP,EAAUwC,WAAG,SAAChS,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,YAC5F,EAMOwP,EAAWyC,YAAG,SAACjS,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,aAC7F,EAMOwP,EAAW0C,YAAG,SAAClS,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,sCAC7F,EAMOwP,EAAU2C,WAAG,SAACnS,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,kDAC5F,EAMOwP,EAAU4C,WAAG,SAACpS,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,iDAC5F,EAMOwP,EAAU6C,WAAG,SAACrS,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,0CAC5F,EAMOwP,EAAU8C,WAAG,SAACtS,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,YAC5F,EAMOwP,EAAU+C,WAAG,SAACvS,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,YAC5F,EAMOwP,EAAUgD,WAAG,SAACxS,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,kBAC5F,EAMOwP,EAAWiD,YAAG,SAACzS,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,aAC7F,EAMOwP,EAAUkD,WAAG,SAAC1S,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,WAC5F,EAMOwP,EAAUmD,WAAG,SAAC3S,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,YAC5F,EAMOwP,EAAUoD,WAAG,SAAC5S,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,kBAC5F,EAMOwP,EAAUqD,WAAG,SAAC7S,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,0BAC5F,EAMOwP,EAAUsD,WAAG,SAAC9S,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,gCAC5F,EAMOwP,EAAWuD,YAAG,SAAC/S,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,4EAC7F,EAMOwP,EAAUwD,WAAG,SAAChT,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,sBAC5F,EAMOwP,EAAUyD,WAAG,SAACjT,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,kBAC5F,EAMOwP,EAAS0D,UAAG,SAAClT,GAChB,OAAOwP,EAAcC,WAAW,+BAAgCzP,GAAc,QAAS,mBAC3F,EAMOwP,EAAU2D,WAAG,SAACnT,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,gBAC5F,EAMOwP,EAAU4D,WAAG,SAACpT,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,gCAC5F,EAMOwP,EAAU6D,WAAG,SAACrT,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,oBAC5F,EAMOwP,EAAU8D,WAAG,SAACtT,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,aAC5F,EAMOwP,EAAW+D,YAAG,SAACvT,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,aAC7F,EAMOwP,EAASgE,UAAG,SAACxT,GAChB,OAAOwP,EAAcC,WAAW,qCAAsCzP,GAAc,QAAS,aACjG,EAMOwP,EAAUiE,WAAG,SAACzT,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,WAC5F,EAMOwP,EAAWkE,YAAG,SAAC1T,GAClB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,aAC5F,EAMOwP,EAAiBmE,kBAAG,SAAC3T,GACxB,OAAOwP,EAAcC,WAAW,qCAAsCzP,GAAc,QAAS,aACjG,EAMOwP,EAAUoE,WAAG,SAAC5T,GACjB,OAAOwP,EAAcC,WAAW,oCAAqCzP,GAAc,QAAS,wBAChG,EAMOwP,EAAUqE,WAAG,SAAC7T,GACjB,OAAOwP,EAAcC,WAAW,qCAAsCzP,GAAc,QAAS,YACjG,EAMOwP,EAAWsE,YAAG,SAAC9T,GAClB,OAAOwP,EAAcC,WAAW,sCAAuCzP,GAAc,QAAS,aAClG,EAMOwP,EAAWuE,YAAG,SAAC/T,GAClB,OAAOwP,EAAcC,WAAW,sCAAuCzP,GAAc,QAAS,aAClG,EAMOwP,EAAWwE,YAAG,SAAChU,GAClB,OAAOwP,EAAcC,WAAW,sCAAuCzP,GAAc,QAAS,aAClG,EAMOwP,EAAWyE,YAAG,SAACjU,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,YAC7F,EAMOwP,EAAY0E,aAAG,SAAClU,GACnB,OAAOwP,EAAcC,WAAW,kCAAmCzP,GAAc,QAAS,aAC9F,EAMOwP,EAAY2E,aAAG,SAACnU,GACnB,OAAOwP,EAAcC,WAAW,kCAAmCzP,GAAc,QAAS,wBAC9F,EAMOwP,EAAW4E,YAAG,SAACpU,GAClB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,2BAC5F,EAMOwP,EAAU6E,WAAG,SAACrU,GACjB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,oEAC7F,EAMOwP,EAAU8E,WAAG,SAACtU,GACjB,OAAOwP,EAAcC,WAAW,+BAAgCzP,GAAc,QAAS,kBAC3F,EAMOwP,EAAc+E,eAAG,SAACvU,GACrB,OAAOwP,EAAcC,WAAW,0CAA2CzP,GAAc,QAAS,kBACtG,EAMOwP,EAAUgF,WAAG,SAACxU,GACjB,OAAOwP,EAAcC,WAAW,gCAAiCzP,GAAc,QAAS,kCAC5F,EAMOwP,EAAUiF,WAAG,SAACzU,GACjB,OAAOwP,EAAcC,WAAW,+BAAgCzP,GAAc,QAAS,kBAC3F,EAMOwP,EAAUkF,WAAG,SAAC1U,GACjB,OAAOwP,EAAcC,WAAW,qCAAsCzP,GAAc,QAAS,aACjG,EAMOwP,EAAWmF,YAAG,SAAC3U,GAClB,OAAOwP,EAAcC,WAAW,sCAAuCzP,GAAc,QAAS,cAClG,EAMOwP,EAAYoF,aAAG,SAAC5U,GACnB,OAAOwP,EAAcC,WAAW,qCAAsCzP,GAAc,QAAS,aACjG,EAMOwP,EAAYqF,aAAG,SAAC7U,GACnB,OAAOwP,EAAcC,WAAW,sCAAuCzP,GAAc,QAAS,cAClG,EAMOwP,EAASsF,UAAG,SAAC9U,GAChB,OAAOwP,EAAcC,WAAW,oCAAqCzP,GAAc,QAAS,8BAChG,EAMOwP,EAAauF,cAAG,SAAC/U,GACpB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,aAC7F,EAMOwP,EAAWwF,YAAG,SAAChV,GAClB,OAAOwP,EAAcC,WAAW,iCAAkCzP,GAAc,QAAS,aAC7F,EAMOwP,EAAYyF,aAAG,SAACjV,GACnB,OAAOwP,EAAcC,WAAW,qCAAsCzP,GAAc,QAAS,aACjG,EAMOwP,EAAU0F,WAAG,SAAClV,GACjB,OAAOwP,EAAcC,WAAW,+BAAgCzP,GAAc,QAAS,aAC3F,EAMOwP,EAA0B2F,2BAAG,SAACnV,GAEjC,IAAIoV,EAAmB,GAyFvB,OAvFAA,EAASC,KAAK7F,EAAcK,WAAW7P,IACvCoV,EAASC,KAAK7F,EAAcM,WAAW9P,IACvCoV,EAASC,KAAK7F,EAAcO,eAAe/P,IAC3CoV,EAASC,KAAK7F,EAAcQ,WAAWhQ,IACvCoV,EAASC,KAAK7F,EAAcS,WAAWjQ,IACvCoV,EAASC,KAAK7F,EAAcU,aAAalQ,IACzCoV,EAASC,KAAK7F,EAAcW,WAAWnQ,IACvCoV,EAASC,KAAK7F,EAAcY,UAAUpQ,IACtCoV,EAASC,KAAK7F,EAAca,WAAWrQ,IACvCoV,EAASC,KAAK7F,EAAcc,WAAWtQ,IACvCoV,EAASC,KAAK7F,EAAce,WAAWvQ,IACvCoV,EAASC,KAAK7F,EAAcgB,WAAWxQ,IACvCoV,EAASC,KAAK7F,EAAciB,WAAWzQ,IACvCoV,EAASC,KAAK7F,EAAckB,WAAW1Q,IACvCoV,EAASC,KAAK7F,EAAcmB,YAAY3Q,IACxCoV,EAASC,KAAK7F,EAAcoB,WAAW5Q,IACvCoV,EAASC,KAAK7F,EAAcqB,YAAY7Q,IACxCoV,EAASC,KAAK7F,EAAcsB,YAAY9Q,IACxCoV,EAASC,KAAK7F,EAAcuB,WAAW/Q,IACvCoV,EAASC,KAAK7F,EAAcwB,WAAWhR,IACvCoV,EAASC,KAAK7F,EAAcyB,YAAYjR,IACxCoV,EAASC,KAAK7F,EAAc0B,WAAWlR,IACvCoV,EAASC,KAAK7F,EAAc2B,iBAAiBnR,IAC7CoV,EAASC,KAAK7F,EAAc4B,WAAWpR,IACvCoV,EAASC,KAAK7F,EAAc6B,YAAYrR,IACxCoV,EAASC,KAAK7F,EAAc8B,WAAWtR,IACvCoV,EAASC,KAAK7F,EAAc+B,UAAUvR,IACtCoV,EAASC,KAAK7F,EAAcgC,YAAYxR,IACxCoV,EAASC,KAAK7F,EAAciC,cAAczR,IAC1CoV,EAASC,KAAK7F,EAAckC,WAAW1R,IACvCoV,EAASC,KAAK7F,EAAcoC,YAAY5R,IACxCoV,EAASC,KAAK7F,EAAcmC,aAAa3R,IACzCoV,EAASC,KAAK7F,EAAcqC,cAAc7R,IAC1CoV,EAASC,KAAK7F,EAAcsC,WAAW9R,IACvCoV,EAASC,KAAK7F,EAAcuC,WAAW/R,IACvCoV,EAASC,KAAK7F,EAAcwC,WAAWhS,IACvCoV,EAASC,KAAK7F,EAAcyC,YAAYjS,IACxCoV,EAASC,KAAK7F,EAAc0C,YAAYlS,IACxCoV,EAASC,KAAK7F,EAAc2C,WAAWnS,IACvCoV,EAASC,KAAK7F,EAAc4C,WAAWpS,IACvCoV,EAASC,KAAK7F,EAAc6C,WAAWrS,IACvCoV,EAASC,KAAK7F,EAAc8C,WAAWtS,IACvCoV,EAASC,KAAK7F,EAAc+C,WAAWvS,IACvCoV,EAASC,KAAK7F,EAAcgD,WAAWxS,IACvCoV,EAASC,KAAK7F,EAAciD,YAAYzS,IACxCoV,EAASC,KAAK7F,EAAckD,WAAW1S,IACvCoV,EAASC,KAAK7F,EAAcmD,WAAW3S,IACvCoV,EAASC,KAAK7F,EAAcoD,WAAW5S,IACvCoV,EAASC,KAAK7F,EAAcqD,WAAW7S,IACvCoV,EAASC,KAAK7F,EAAcsD,WAAW9S,IACvCoV,EAASC,KAAK7F,EAAcuD,YAAY/S,IACxCoV,EAASC,KAAK7F,EAAcwD,WAAWhT,IACvCoV,EAASC,KAAK7F,EAAcyD,WAAWjT,IACvCoV,EAASC,KAAK7F,EAAc0D,UAAUlT,IACtCoV,EAASC,KAAK7F,EAAc2D,WAAWnT,IACvCoV,EAASC,KAAK7F,EAAc4D,WAAWpT,IACvCoV,EAASC,KAAK7F,EAAc6D,WAAWrT,IACvCoV,EAASC,KAAK7F,EAAc8D,WAAWtT,IACvCoV,EAASC,KAAK7F,EAAc+D,YAAYvT,IACxCoV,EAASC,KAAK7F,EAAcgE,UAAUxT,IACtCoV,EAASC,KAAK7F,EAAciE,WAAWzT,IACvCoV,EAASC,KAAK7F,EAAckE,YAAY1T,IACxCoV,EAASC,KAAK7F,EAAcmE,kBAAkB3T,IAC9CoV,EAASC,KAAK7F,EAAcoE,WAAW5T,IACvCoV,EAASC,KAAK7F,EAAcqE,WAAW7T,IACvCoV,EAASC,KAAK7F,EAAcsE,YAAY9T,IACxCoV,EAASC,KAAK7F,EAAcuE,YAAY/T,IACxCoV,EAASC,KAAK7F,EAAcwE,YAAYhU,IACxCoV,EAASC,KAAK7F,EAAcyE,YAAYjU,IACxCoV,EAASC,KAAK7F,EAAc0E,aAAalU,IACzCoV,EAASC,KAAK7F,EAAc2E,aAAanU,IACzCoV,EAASC,KAAK7F,EAAc4E,YAAYpU,IACxCoV,EAASC,KAAK7F,EAAc6E,WAAWrU,IACvCoV,EAASC,KAAK7F,EAAc8E,WAAWtU,IACvCoV,EAASC,KAAK7F,EAAc+E,eAAevU,IAC3CoV,EAASC,KAAK7F,EAAcgF,WAAWxU,IACvCoV,EAASC,KAAK7F,EAAciF,WAAWzU,IAMvCoV,EAASC,KAAK7F,EAAcuF,cAAc/U,IAC1CoV,EAASC,KAAK7F,EAAcwF,YAAYhV,IACxCoV,EAASC,KAAK7F,EAAcyF,aAAajV,IACzCoV,EAASC,KAAK7F,EAAc0F,WAAWlV,IAEhCoV,CACX,EACH5F,CAAA,IAOY8F,GAA4B,SAACtV,GACtC,OAAOwP,GAAc2F,2BAA2BnV,EACpD,EAUauV,GAAsB,SAC/BxV,EACAC,EACAC,GAEA,YAJA,IAAAF,IAAAA,EAA2C,2CAC3C,IAAAC,IAAAA,EAAa,aACb,IAAAC,IAAAA,EAAkB,aAEXuP,GAAcC,WAAW1P,EAAMC,EAAMC,EAChD,EC9zBCuV,GAAA,WAAA,SAAAA,IAUA,CAAD,OAJWA,EAAA1H,UAAP,WAEI,OADA0H,EAAgBzH,SACTyH,EAAgBzH,QAPpByH,EAAMzH,OAAG,EASnByH,CAAA,ICJYC,GAAyB,SAACC,GAEnC,IADA,IAAIC,EAA0B,GACrBlI,EAAI,EAAGmI,SAAUA,EAAIF,EAASjI,GAAKA,IACxCkI,EAAaN,KAAK,CAAEjJ,GAAIoJ,GAAgB1H,YAAajL,KAAM+S,EAAG7V,KAAM6V,EAAE7V,KAAMC,KAAM4V,EAAE5V,KAAMC,KAAM2V,EAAE3V,OAEtG,OAAO0V,CACX,EAOaE,GAAiC,SAACH,GAE3C,IADA,IAAIC,EAAkC,GAC7BlI,EAAI,EAAGmI,SAAUA,EAAIF,EAASjI,GAAKA,IACxCkI,EAAaN,KAAK,IAAInJ,GAAgB,CAAEE,GAAIoJ,GAAgB1H,YAAajL,KAAM+S,EAAG7V,KAAM6V,EAAE7V,KAAMC,KAAM4V,EAAE5V,KAAMC,KAAM2V,EAAE3V,QAE1H,OAAO0V,CACX,EC5BaG,GAAmB,SAC5B3W,EACAI,EACAG,EACAqW,GAEA,OACE,MAAC5W,GACD,MAACI,GACD,MAACG,GACA,MAAAqW,CAEL,ECHWC,GAAa,SAACC,EAAWC,QAAX,IAAAD,IAAAA,EAAS,SAAE,IAAAC,IAAAA,GAAY,GAC9C,IAAIC,EAAUF,EAQd,OAPIC,EACID,EAAKxQ,QAAU,KACf0Q,EAAUF,EAAKG,MAAM,EAAG,IAAM,MAAQH,EAAKG,OAAO,IAE/CH,EAAKxQ,QAZiB,KAa7B0Q,EAAUF,EAAKG,MAAM,EAAG,IAAM,MAAQH,EAAKG,OAAO,IAE/CD,CACX,ECVaE,GAAqB,SAC9BlK,GAGA,OAAO,IAAInJ,SAAQ,SAACC,EAASC,GACzBoT,YAAW,WACPrT,WACOkJ,GAAO,CACVK,aAAc,cAErB,GAAE,KAEP,GACJ,EAMa+J,GAAY,SACrBpK,GAGA,OAAO,IAAInJ,SAAQ,SAACC,EAASC,GACzBoT,YAAW,WACPrT,WACOkJ,GAAO,CACVK,aAAc,YAErB,GAAE,IACP,GACJ,EAMagK,GAAiB,SAC1BC,GAGA,YAHA,IAAAA,IAAAA,EAA4B,KAGrB,IAAIzT,SAAQ,SAACC,EAASC,GAEzBoT,YAAW,WACPrT,GACH,GAAEwT,EAEP,GACJ,EAOaC,GAAkB,SAC3BxJ,GAGA,OAAO,IAAIlK,SAAQ,SAACC,EAASC,GACzBoT,YAAW,WACPpJ,EAAgBV,aAAe,YAC/BvJ,WACOiK,GAAe,CAClBV,aAAc,cAErB,GAAE,KAEP,GACJ,EAOamK,GAAmB,SAC5BzJ,GAGA,OAAO,IAAIlK,SAAQ,SAACC,EAASC,GACzBoT,YAAW,WACPpJ,EAAgBV,aAAe,UAC/BvJ,WACOiK,GAAe,CAClBV,aAAc,YAErB,GAAE,IACP,GACJ,EASaoK,GAAgB,SACzB1J,EACA3K,QAAA,IAAAA,IAAAA,EAAoBC,EAA0B,UAG9C,IAAM2J,EAAkBe,EAAgBD,YAExC,OAAO,IAAIjK,SAAQ,SAACC,EAASC,GACzBoT,YAAW,WAEP,GAD6BO,KAAKC,MAAsB,GAAhBD,KAAKE,UAC1B,GAAM,EAAG,CACxB,IAAM1W,GAAU,EACV2W,EAAUzU,EAAkB5C,kBAC5BsX,EAAU,CAAExL,IAAK,IACvBxI,EAAO+L,GAAAA,GAAA,CAAA,EACA7C,GAAO,CACVU,eAAgB,CAAExM,QAAOA,EAAE2W,QAAOA,EAAEC,QAAOA,GAC3CzK,aAAc,UACdD,cAAeyK,IAGtB,KAAM,CACG3W,GAAU,EACV2W,EAAUzU,EAAkB3C,gBAC5BqX,EAAU,CAAA,EAChBhU,EAAO+L,GAAAA,GAAA,CAAA,EACA7C,GAAO,CACVU,eAAgB,CAAExM,QAAOA,EAAE2W,QAAOA,EAAEC,QAAOA,GAC3CzK,aAAc,QACdD,cAAeyK,IAEtB,CACJ,GAAE,KACP,GACJ,ECvIgB,SAAAE,GAAaC,EAAiBC,GAC1C,YADyB,IAAAD,IAAAA,EAAe,QAAE,IAAAC,IAAAA,EAAe,GAClDP,KAAKC,MAAMD,KAAKE,UAAYK,EAAMD,IAAQA,CACrD,CCJO,IAAME,GAAa,SAACC,GAClBA,IACLA,EAAaC,MAAQ,GACzB,ECDaC,GAAe,SACxBC,EACAC,GAEA,OAAIA,EACO,GAAG5Y,OAAA2Y,EAAiB,KAAA3Y,OAAA4Y,GACxBD,CACX,ECXaE,GAAsB,SAACxL,EAAkByL,GAClD,QAASA,GAAsBA,GAAqBzL,EAAQ7L,QAAoC,YAAzB6L,EAAQK,YACnF,ECIaqL,GAAuB,SAChChV,EACA9C,EACAE,EACAD,GAGA,IAAI8X,EAAwB,GACxBC,OAAoCtU,EACpCuU,OAAoCvU,EAaxC,OATIZ,GAA6B,iBAAdA,EAAK9C,MACpB+X,EAAgBjV,EAAK9C,KACrBgY,EAAgBlV,EAAK5C,KACrB+X,EAAgBnV,EAAK7C,MACdD,GAAwB,iBAATA,IACtB+X,EAAgB/X,EAChBgY,EAAgB9X,EAChB+X,EAAgBhY,GAEb,CAAC8X,EAAeC,EAAeC,EAC1C,EC1BaC,GAAiB,SAAC9Y,GAC3B,OAAKA,GAA4B,IAAlBA,EAAOsG,OAGiBtG,EAAO8L,MAAM,KAAK8D,KAAI,SAACmJ,GAAe,OAAAA,EAAWC,MAAM,IAFnF,EAIf,ECFcC,GAAiB,SAACjZ,EAAkB0D,GAI9C,IAHA,IACQ9C,EAAe8C,EAAI9C,KAAbE,EAAS4C,EAAI5C,KAElBwN,EAAI,EAAGA,EAAItO,EAAOsG,OAAQgI,IAAK,CACpC,IAAMyK,EAAqB/Y,EAAOsO,GAElC,GAA0B,IAAtByK,EAAWzS,OAAc,CAEzB,GAA6B,MAAzByS,EAAWG,OAAO,IACdH,EAAWvV,SAASwH,GAAOpK,IAC3B,OAAO,EAKf,GAAIE,GAAQA,EAAKwF,OAAS,GAAKyS,EAAWvV,SAAS,MAAQ1C,EAAK0C,SAAS,KAAM,CAC3E,IAAIqI,EAAakN,EAAWjN,MAAM,KAAK,GACnCT,EAAW0N,EAAWjN,MAAM,KAAK,GAEjCqN,EAAiBrY,EAAKgL,MAAM,KAAK,GACjCsN,EAAetY,EAAKgL,MAAM,KAAK,GAEnC,GAAID,IAAesN,EAAgB,CAE/B,GAAiB,MAAb9N,EACA,OAAO,EACJ,GAAIA,IAAa+N,EACpB,OAAO,CAEd,CACJ,CACJ,CACJ,CACD,OAjCqB,CAkCzB,EC3BaC,GAAoB,SAC7BC,EACAC,EACAC,EACA5C,EACArW,EACAkZ,GASA,IAPA,IAAMC,EAAoB,GAEtBC,EAAoBJ,EAElBK,EACFrW,EAA+BkW,GAE1BnL,EAAI,EAAGmI,SAAUA,EAAI6C,EAAkBhL,GAAKA,IAAK,CAEtD,IAAIuL,EAAyBC,GAAarD,EAAGG,EAAW4C,EAAgBI,GACxE,GAAIC,EAAc1Y,MAAO,CAErB,IAAMA,EAAQwY,EAAY,EAG1B,GAFAE,EAAc1Y,MAAQA,GAEjBA,EAAO,CACR,IAAM4Y,EAAuCH,EAAyBjY,aACtEkY,EAAc1M,OAAS0M,EAAc1M,OAChC6B,GAAAA,GAAA,GAAK6K,EAAc1M,YAAQ4M,EAAsBxZ,GAAYyZ,UAC5D,CAACD,EAAsBxZ,GAAYyZ,KAC5C,CACDL,GACH,CACDD,EAAOxD,KAAK2D,EACf,CACD,OAAOH,CACX,EAeaO,GAAsB,SAC/BC,EACAX,EACAY,EACAvD,EACArW,EACAkZ,GAGA,IAAIW,EAA4B,GAChC,IAAKb,EAAiB,OAAOa,EAK7B,IAJA,IAAIC,EAAoBd,EAClBK,EACFrW,EAA+BkW,GAC7BM,EAAuCH,EAAyBjY,aAC7D2M,EAAI,EAAGA,EAAI4L,EAAY5T,OAAQgI,IAAK,CACzC,IAAIgM,EAA0BJ,EAAY5L,GAK1C,IAHAgM,EAAiBC,GAAgBD,EAAgB1D,EAAWuD,EAAqBP,IAG9DzY,MAAO,CAEtB,IAAMA,EAAQkZ,EAAY,EAC1BC,EAAenZ,MAAQA,EAElBA,IACDmZ,EAAenN,OAASmN,EAAenN,OAClC6B,GAAAA,GAAA,GAAKsL,EAAenN,YAAQ4M,EAAsBxZ,GAAYyZ,UAC7D,CAACD,EAAsBxZ,GAAYyZ,OAE7CK,GACH,CACDD,EAAelE,KAAKoE,EAEvB,CACD,OAAOF,CACX,EAUaG,GAAkB,SAC3BvN,EACA4J,EACA4D,EACAC,GAEA,IAAIC,EAAa7K,GAAA,CAAA,EAAiB7C,GAC9BG,EAAmB,GAEvB,IAAKH,EAAQtJ,KACT,OAAAmM,GAAA,GAAY6K,GAIhB,GAAI9D,EAAW,CACX,IACgB+D,EADqC/D,EAAU8D,EAAchX,MACtByJ,OACnDwN,GACAxN,EAAO+I,KAAI0E,MAAXzN,EAAewN,EAEtB,CAEO,IAAAva,EAAwBoa,EAAcpa,YAAzBJ,EAAWwa,EAAcxa,OAGxC0D,EAAasJ,EAAQtJ,KAG3B,GAAItD,GAAesD,EAAK7C,KAAOT,EAAa,CACxC,IAAMya,EAA2CJ,EAAYjZ,aAI7D2L,EAAO+I,KAAK2E,EAA0Bza,GACzC,CAEGJ,IAAWiZ,GAAeH,GAAe9Y,GAAS0D,IAClDyJ,EAAO+I,KAAKuE,EAAY/Y,aAE5B,IAAMoZ,EAAqC,IAAlB3N,EAAO7G,OAGhC,OAFAoU,EAAa7K,GAAAA,GAAA,CAAA,EAAQ6K,GAAe,CAAAvZ,MAAO2Z,EAAS3N,OAAS2N,OAAmBxW,EAAT6I,GAI3E,EAWa2M,GAAe,SACxBpW,EACAkT,EACA4D,EACAC,GAGA,IAAMM,EAAc1E,GAAgB1H,YAChCxB,EAAmB,GACvB,GAAIyJ,EACA,OAAS/G,GAAA,CAAA5C,GAAI8N,EAAarX,KAAIA,GAAKkT,EAAUlT,IAGzC,IAAAtD,EAAwBoa,EAAcpa,YAAzBJ,EAAWwa,EAAcxa,OAG9C,GAAII,GAAesD,EAAK7C,KAAOT,EAAa,CACxC,IAAMya,EAA2CJ,EAAYjZ,aAC7D2L,EAAO+I,KAAK2E,EAA0Bza,GACzC,CAgBD,OAZIJ,IAAWiZ,GAAeH,GAAe9Y,GAAS0D,IAClDyJ,EAAO+I,KAAKuE,EAAY/Y,aAIA,CACxBuL,GAAI8N,EACJrX,KAAMA,EACNvC,MAAyB,IAAlBgM,EAAO7G,OACd6G,OAAQA,EAIhB,ECzMa6N,GACT,CACI,kDACA,8BACA,8CCSMC,GAAuB,SACjCvX,EACAvC,EACAkM,EACAD,QAFA,IAAAjM,IAAAA,EAASuW,KAAKwD,KAAqB,GAAhBxD,KAAKE,UAAiB,GAAM,GAK/C,IAAIzK,EAA+B,GAC/BgO,EAAiB9N,GCZa,WAElC,OADuB0K,GAAa,EAAG,IAEnC,KAAK,EAAG,MAAO,QACf,KAAK,EAAG,MAAO,YACf,KAAK,EAAG,MAAO,UACf,QACI,OAEZ,CDGyCqD,GAEjCC,EAA0CjO,GAAiB,GAC/D,GAAIjM,EAAO,CAEP,IAAKiM,EACD,OAAQ+N,GACJ,IAAK,QAASE,EAAsB,oCAAqC,MACzE,IAAK,UAAWA,EAAsB,+BAAgC,MACtE,QAASjO,OAAgB9I,EAGjC6I,OAAS7I,CACZ,KAAM,CAEH,IAAMgX,EAAkBvD,GAAa,EAAG,GACxC5K,EAAO+I,KAAK8E,GAAaM,IACzBH,OAAiB7W,EACjB+W,OAAsB/W,CACzB,CAUD,MARkC,CAC9B2I,GAAIoJ,GAAgB1H,YACpBxN,MAAOA,EACPuC,KAAMA,EACN2J,aAAc8N,EACd/N,cAAeiO,EACflO,OAAQA,EAGhB,EEjDaoO,GAAc,SAACtO,GACxB,MAAO,CACHA,GAAIA,GAAMoJ,GAAgB1H,YAC1B/N,KAAM,eACNC,KAAM,SACNC,KAAM,gBACN4C,KAAM0S,GAAoB,eAAgB,SAAkB,iBAC5DjJ,OAAQ6N,GACR5N,cAAe,WACfC,aAAc,YACdlM,OAAO,EACPmM,SAAU,GACVC,IAAK,IAAIiO,eACThO,UAAW,CACPiO,WAAY,uBACZC,WAAY,CACRzO,GAAI,EACJrM,KAAM,iBAEV+a,SAAS,GAEbhO,YAAa,8CAErB,EC5Bc,SAAUiO,GACpBC,EACArO,GAKA,IAFA,IAAMsO,EAA0B5N,OAAOC,KAAKX,GAAa,CAAE,GAElDc,EAAI,EAAGA,EAAIwN,EAAcxV,QAAUkH,EAAWc,IAEnDuN,EAASE,OAAOD,EAAcxN,GAAId,EAAUsO,EAAcxN,KAG9DuN,EAASE,OAAO,aAAc,mBAElC,CCdc,SAAUC,GACpBzO,EACA2C,GAKA,IAFA,IAAM+L,EAAuB/N,OAAOC,KAAK+B,GAAW,CAAE,GAE7C5B,EAAI,EAAGA,EAAI2N,EAAW3V,QAAU4J,EAAS5B,IAE9Cf,EAAI2O,iBACAD,EAAW3N,GACX4B,EAAQ+L,EAAW3N,IAK/B,CCda,IAAA6N,GAAyB,CAClCjb,SAAS,EACT2W,QAAS,gBACTC,QAAS,CAAE,GAEFsE,GAAyB,CAClClb,SAAS,EACT2W,QAAS,iBACTC,QAAS,CAAE,GAEFuE,GAA4B,CACrCnb,SAAS,EACT2W,QAAS,mCACTC,QAAS,CAAE,GAGFwE,GAA4B,CACrCpb,SAAS,EACT2W,QAAS,mBACTC,QAAS,CAAE,GAGFyE,GAAwB,SAACvP,GAClC,OAAA6C,GAAAA,GAAA,CAAA,EAEO7C,GACH,CAAAI,cAAe,gDACfC,aAAc,QAEdK,eAAgB,CAAExM,SAAS,IAEnC,EC9Basb,GAAqB,SAACtb,EAAc2W,EAAiBC,GAE9D,MAD+B,CAAE5W,QAASA,EAAS2W,QAASA,EAASC,QAASA,EAElF,EACa2E,GAAoB,SAAClP,GAC9B,IACI,IAAMmP,EAAeC,KAAKC,MAAMrP,EAAIsP,UAC9B3b,EAAewb,EAAaxb,QAC5B2W,EAAkB6E,EAAa7E,QAQrC,MALoC,CAChC3W,QAA4B,kBAAZA,GAAwBA,EACxC2W,QAA4B,iBAAZA,EAAuBA,EAAU,4BACjDC,QALiB4E,EAAa5E,SAKV,CAAE,EAG7B,CAAC,MAAOzW,GAEL,OAAOgb,EACV,CACL,EAIaS,GAA4B,SACrC9P,EACA+P,GAEA,OAAAlN,GAAAA,GAAA,CAAA,EACO7C,GAAO,CACVU,eAAgBqP,EAChB3P,cAAe2P,EAAYlF,QAC3BxK,aAAc,WAGtB,EAGa2P,GAA0B,SACnChQ,EACA+P,GAGA,OAAAlN,GAAAA,GAAA,CAAA,EACO7C,GAAO,CACVI,cAAe2P,EAAYlF,QAC3BxK,aAAc,QACdK,eAAgBqP,GAExB,ECnCaE,GAAiB,SAC1B1P,EACA0C,EACAiN,EACAC,EACAjN,GAEA,YALA,IAAAD,IAAAA,EAAmC,QAK5B,IAAIpM,SAAwB,SAACC,EAASC,GAGzC,IAAMqZ,EAAsB,CAAC,OAAQ,MAAO,SAAS5Z,SAASyM,EAAOoN,eAAiBpN,EAAS,OAM/F1C,EAAI+P,OAAOlZ,OAAS,WAEpB,EACAmJ,EAAI+P,OAAOC,UAAY,WAAM,OAAAzZ,EAAQqY,KACrC5O,EAAI+P,OAAOE,QAAU,WAEjB1Z,EAAQsY,GACZ,EACA7O,EAAIkQ,UAAY,SAAOC,GAAC,OAAAC,QAAA,OAAA,OAAA,GAAA,wDAQxBpQ,EAAIqQ,mBAAqB,SAAOF,GAAC,OAAAC,QAAA,OAAA,OAAA,GAAA,8CAOjBpQ,EAAIsQ,WAEO,IAAnBtQ,EAAIsQ,aACiB,KAAjBtQ,EAAIsP,SAEJ/Y,EAAQ2Y,GAAkBlP,IAQ1BzJ,EAAQsY,gBAQpB7O,EAAIuQ,KAAKV,EAAaF,GAAU,GAGhClB,GAAWzO,EAAK2C,GAEhB3C,EAAIwQ,KAAKZ,EACb,GAEJ,EAUaa,GAAgB,SACzBhR,EACAV,EACA2D,EACAC,EACAC,GAAoB,OAAAwN,QAAA,OAAA,OAAA,GAAA,uCAEpB,MAAA,CAAA,EAAO,IAAI9Z,SAAQ,SAAOC,EAASC,GAAM,OAAA4Z,QAAA,OAAA,OAAA,GAAA,8EAIjC,8BAFMM,EAAuCjR,EAAQO,MAO/C2Q,EAAsBjO,GAAU,OAChCkO,EAAqBnR,EAAQtJ,MAE7BmY,EAAW,IAAIuC,UAEZrC,OAAO5L,GAAe,OAAQgO,GAGjCE,EAAcxO,GAAA,CACdyO,WAAY,sBAAuBC,OAAQ,CAAEC,QAAS,YAAaC,OAAQ,QAASC,IAAK,KAAS1R,EAAQS,iBAEhHkR,GAAmB9C,EAAUwC,GAGzBtB,SACU,CAAA,EAAME,GAChBgB,EACAC,EACA5R,EACAuP,EACA3L,GAAW,CAAE,MAxBbpM,EAAQyY,GAAsBvP,IACvB,CAAA,kBAkBX+P,EAAc6B,UAOE1d,QAEZ4C,EAAQgZ,GAA0B9P,EAAS+P,IAG3CjZ,EAAQkZ,GAAwBhQ,EAAS+P,iCAK7CjZ,EACIkZ,GAAwBhQ,EAASsP,+BAG5C,GAAA,UACH,EAKI,SAAUuC,GACZnb,EACA4I,EACA2D,EACA6O,EACA5O,GALJ,IAwBC6O,EAAAlR,KAjBG,OAAO,IAAIhK,SAAQ,SAAOC,EAASC,GAAM,OAAA4Z,GAAAoB,OAAA,OAAA,GAAA,uEAI/BlD,EAAW,IAAIuC,UAEZrC,OAAO+C,GAAS,OAAQpb,oBAGU,6BAAA,CAAA,EAAMuZ,GAAe,IAAIzB,eAAkBvL,EAAQ3D,EAAKuP,EAAU3L,kBAAnGxC,EAAiCkR,EAA0EI,OACjHlb,EAAQ4J,gCAIR5J,EAAQwY,8BAEf,GAAA,GACL,CAkBO,IAAM2C,GAAY,SACrB1R,EACA0C,EACAiN,EACAC,EACAjN,GAEA,OAAO,IAAIrM,SAAwB,SAACC,EAASC,GAGzCwJ,EAAI+P,OAAOlZ,OAAS,WAEpB,EAEAmJ,EAAI+P,OAAOC,UAAY,WAAM,OAAAzZ,EAAQqY,KACrC5O,EAAI+P,OAAOE,QAAU,WAAM,OAAA1Z,EAAQsY,KAKnC7O,EAAIqQ,mBAAqB,SAAOF,GAAC,OAAAC,QAAA,OAAA,OAAA,GAAA,8CAIN,IAAnBpQ,EAAIsQ,aACiB,KAAjBtQ,EAAIsP,SAEJ/Y,EAAQ2Y,GAAkBlP,IAG1BzJ,EAAQwY,gBAOpB/O,EAAIuQ,KAAK7N,EAAQiN,GAAU,GAG3B,IAFA,IAAMjB,EAAuB/N,OAAOC,KAAK+B,GAEhC5B,EAAI,EAAGA,EAAI2N,EAAW3V,OAAQgI,IAEnCf,EAAI2O,iBACAD,EAAW3N,GACX4B,EAAQ+L,EAAW3N,KAI3Bf,EAAIwQ,KAAKZ,EACb,GAEJ,ECpPa+B,GAA8B,SAAClS,GACxC,OACO6C,GAAAA,GAAA,CAAA,EAAA7C,GACH,CAAAI,cAAe,mBACfC,aAAc,QACdK,eAAgB,CACZxM,SAAS,EACT2W,QAAS,qCACTC,QAAS,CAAE,IAGvB,EACaqH,GAAuB,SAChCnS,GAEA,MAAO,CACHC,GAAID,EAAQC,GACZmS,aAAYvP,GAAAA,GAAA,CAAA,EACL7C,GAAO,CACVI,cAAe,yCACfC,aAAc,UAElBK,eAAgB,CACZxM,SAAS,EACT2W,QAAS,2DACTC,QAAS,CAAE,GAGvB,EACauH,GAAuB,SAChCrS,EACAU,EACA4R,GAEA,MAAO,CACHrS,GAAID,EAAQC,GACZmS,aACOvP,GAAAA,GAAA,CAAA,EAAA7C,GACH,CAAAI,cAAeM,EAAemK,QAC9BxK,aAAciS,IAElB5R,eAAgBA,EAExB,EAOa6R,GAA0B,SACnCrF,GAEA,OAAKA,EACEA,EAAYtK,KAAI,SAAA5C,GACnB,OAAA6C,GAAAA,GAAA,CAAA,EAAY7C,GAAS,CAAAO,IAAK,IAAIiO,gBAClC,IAHyB,EAI7B,EAQagE,GAA8B,SACvCxS,GAEA,MAA6B,cAAzBA,EAAQK,cAERL,EAAQK,aAAe,YAEvBwC,GAAAA,GAAA,GACO7C,GAAO,CACVK,aAAc,eAGfL,CACX,EAOayS,GAAuB,SAChCzS,GAEA,OAAO,IAAInJ,SAAQ,SAACC,EAASC,GACzBoT,YAAW,WACsB,cAAzBnK,EAAQK,cAERL,EAAQK,aAAe,YAEvBvJ,WACOkJ,GAAO,CACVK,aAAc,gBAGlBvJ,EAAQkJ,EACf,GAAE,KACP,GACJ,EAOa0S,GAAkB,SAACC,GAE5B,YAF4B,IAAAA,IAAAA,EAAW,MAEhC,IAAI9b,SAAQ,SAACC,EAASC,GACzBoT,YAAW,WACPrT,GAAQ,EACX,GAAE6b,EACP,GACJ,EAMaC,GAAqB,SAACC,GAE/B,OAAOA,EAAWlQ,QAAO,SAAC5B,SACtB,QAA0B,QAAzB6Q,EAAA7Q,EAAgBP,iBAAS,IAAAoR,OAAA,EAAAA,EAAEjD,YAE3B/L,KAAI,SAAC7B,GAOF,MANqC,YAAjCA,EAAgBV,cACZU,EAAgBX,gBAEpBW,EAAgBX,cAAgB,0BAG7BL,GAAgBe,UAAUC,EACrC,GACR,EAMa+R,GAAsB,SAC/B/R,EACAgS,GAEA,IAAMC,EAAuCjS,EAAgBV,aACvD4S,EAAwCF,EAAW1S,aAKtC,cAAf2S,GACA,CAAC,eAAW1b,GAAWd,SAASyc,IAEhClS,EAAgBV,kBAAe/I,EAC/ByJ,EAAgBX,cAAgB2S,EAAW3S,eAG5B,cAAf4S,GACA,CAAC,eAAW1b,GAAWd,SAASyc,KAEhClS,EAAgBV,aAAe,UAC/BU,EAAgBX,cAAgB2S,EAAW3S,cAInD,ECpKa8S,GACb,CAEIC,UAAW,UACXC,WAAY,UACZC,OAAQ,UACRC,WAAY,UACZC,YAAa,UACbC,QAAS,UACTC,IAAK,UACLC,UAAW,UACXC,QAAS,UAETC,KAAM,UACNC,UAAW,UACXC,QAAS,UACTC,SAAU,UACVC,gBAAiB,UACjBC,cAAe,UAGfC,MAAO,UACPC,OAAQ,UACRC,UAAW,UACXC,WAAY,UACZC,OAAQ,UAERC,KAAM,UACNC,OAAQ,UACRC,YAAa,UACbC,aAAc,UACdC,qBAAsB,UACtBC,WAAY,UACZC,SAAU,UACVC,UAAW,UACXC,cAAe,UACfC,MAAO,UACPC,UAAW,UAEXC,SAAU,UACVC,QAAS,UACTC,KAAM,UACNC,OAAQ,UACRC,OAAQ,UACRC,QAAS,UACTC,QAAS,UACTC,aAAc,UACdC,aAAc,UACdC,cAAe,UACfC,WAAY,UACZC,WAAY,UACZC,WAAY,UACZC,YAAa,UACbC,OAAQ,UACRC,OAAQ,UACRC,UAAW,UACXC,cAAe,UACfC,gBAAiB,UAEjBC,YAAa,UACbC,WAAY,UACZC,UAAW,UACXC,KAAM,UACNC,UAAW,UACXC,UAAW,UACXC,WAAY,UACZC,kBAAmB,UACnBC,YAAa,UACbC,eAAgB,UAChBC,SAAU,UACVC,YAAa,UACbC,MAAO,UACPC,UAAW,UACXC,YAAa,UACbC,UAAW,UACXC,MAAO,UACPC,eAAgB,UAChBC,iBAAkB,UAClBC,aAAc,UACdC,cAAe,UACfC,SAAU,UACVC,KAAM,UAENC,KAAM,UACNC,KAAM,UACNC,UAAW,UACXC,cAAe,UACfC,WAAY,UACZC,UAAW,UACXC,gBAAiB,UACjBC,cAAe,UACfC,UAAW,UACXC,UAAW,UACXC,eAAgB,UAChBC,WAAY,UACZC,UAAW,UACXC,QAAS,UACTC,aAAc,UACdC,YAAa,UACbC,WAAY,UACZC,eAAgB,UAEhBC,UAAW,UACXC,KAAM,UACNC,WAAY,UACZC,SAAU,UACVC,KAAM,UACNC,aAAc,UAEdC,SAAU,UACVC,eAAgB,UAChBC,OAAQ,UACRC,YAAa,UACbC,MAAO,UACPC,UAAW,UACXC,IAAK,UACLC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,cAAe,UACfC,KAAM,UACNC,UAAW,UACXC,YAAa,UACbC,OAAQ,UACRC,MAAO,UACPC,OAAQ,UAERC,MAAO,UACPC,KAAM,UACNC,SAAU,UACVC,UAAW,UACXC,MAAO,UACPC,UAAW,UACXC,WAAY,UACZC,WAAY,UACZC,SAAU,UACVC,MAAO,UACPC,QAAS,UACTC,YAAa,UACbC,MAAO,UACPC,aAAc,UACdC,MAAO,UACPC,cAAe,UACfC,UAAW,UAEXC,UAAW,UACXC,UAAW,UACXC,OAAQ,UACRC,SAAU,UACVC,KAAM,UACNC,QAAS,UACTC,eAAgB,UAChBC,UAAW,UACXC,cAAe,UACfC,MAAO,WCzJEC,GAAc,SAACC,EAAoBC,QAAA,IAAAA,IAAAA,EAAe,IAC3D,IAAIC,EAAc,GACZC,GAAU,IAAMF,GAAc,IAChCG,EAAqB,EACrBC,EAAqB,EACrBC,EAAqB,EACzB,GAAIC,GAAWC,GAAgBR,IAE3BI,EAA8C,GAAjCK,GAAST,EAAW/P,OAAO,IAAWwQ,GAAST,EAAW/P,OAAO,IAC9EoQ,EAA8C,GAAjCI,GAAST,EAAW/P,OAAO,IAAWwQ,GAAST,EAAW/P,OAAO,IAC9EqQ,EAA8C,GAAjCG,GAAST,EAAW/P,OAAO,IAAWwQ,GAAST,EAAW/P,OAAO,IAE9EiQ,EAAc,OAAAxpB,OAAO0pB,EAAaD,EAAW,MAAAzpB,OAAA2pB,EAAaF,EAAU,KAAAzpB,OAAA4pB,EAAaH,YAEjF,GAAIH,EAAWzlB,SAAS,QAAS,CAC7B,IACImmB,EADSV,EAAWW,QAAQ,QAAS,IACP9d,MAAM,KACxCqd,EAAc,OAAOxpB,OAAAkqB,SAASF,EAAW,GAAI,IAAMP,eAAWS,SAASF,EAAW,GAAI,IAAMP,EAAM,KAAAzpB,OAAIkqB,SAASF,EAAW,GAAI,IAAMP,MAEvI,MAAM,GAAIH,EAAWzlB,SAAS,OAAQ,CAG/BmmB,EADSV,EAAWW,QAAQ,OAAQ,IACN9d,MAAM,KACxCqd,EAAc,OAAOxpB,OAAAkqB,SAASF,EAAW,GAAI,IAAMP,eAAWS,SAASF,EAAW,GAAI,IAAMP,EAAM,KAAAzpB,OAAIkqB,SAASF,EAAW,GAAI,IAAMP,MAEvI,CAGL,OAAOD,CACX,EAMaW,GAAgB,SAACb,EAAoBC,QAAA,IAAAA,IAAAA,EAAe,IAC7D,IAAIa,EAAgB,GACdC,GAAY,IAAMd,GAAc,IAClCG,EAAqB,EACrBC,EAAqB,EACrBC,EAAqB,EACzB,GAAIC,GAAWC,GAAgBR,IAE3BI,EAA8C,GAAjCK,GAAST,EAAW/P,OAAO,IAAWwQ,GAAST,EAAW/P,OAAO,IAC9EoQ,EAA8C,GAAjCI,GAAST,EAAW/P,OAAO,IAAWwQ,GAAST,EAAW/P,OAAO,IAC9EqQ,EAA8C,GAAjCG,GAAST,EAAW/P,OAAO,IAAWwQ,GAAST,EAAW/P,OAAO,IAE9E6Q,EAAgB,OAAApqB,OAAO0pB,EAAaW,EAAa,MAAArqB,OAAA2pB,EAAaU,EAAY,KAAArqB,OAAA4pB,EAAaS,YAEvF,GAAIf,EAAWzlB,SAAS,QAAS,CAC7B,IACImmB,EADSV,EAAWW,QAAQ,QAAS,IACP9d,MAAM,KACxCie,EAAgB,OAAOpqB,OAAAkqB,SAASF,EAAW,GAAI,IAAMK,eAAaH,SAASF,EAAW,GAAI,IAAMK,EAAQ,KAAArqB,OAAIkqB,SAASF,EAAW,GAAI,IAAMK,MAE7I,MAAM,GAAIf,EAAWzlB,SAAS,OAAQ,CAG/BmmB,EADSV,EAAWW,QAAQ,OAAQ,IACN9d,MAAM,KACxCie,EAAgB,OAAOpqB,OAAAkqB,SAASF,EAAW,GAAI,IAAMK,eAAaH,SAASF,EAAW,GAAI,IAAMK,EAAQ,KAAArqB,OAAIkqB,SAASF,EAAW,GAAI,IAAMK,MAE7I,CAGL,OAAOD,CACX,EAWaE,GAAgB,SAAChB,EAAgCiB,EAAUC,QAAV,IAAAD,IAAAA,EAAQ,GAClE,IAAIE,EAAwBD,GAA8B,2BAC1D,IAAKlB,EACD,OAAOmB,EAGX,IAAMC,EAAgBpB,EAAW5L,cAEjC,GAAIgN,EAAM7mB,SAAS,QACf,OAAO6mB,EAIX,GAAIA,EAAM7mB,SAAS,OACf,OAAO6mB,EAAMT,QAAQ,MAAO,QAAQA,QAAQ,IAAK,YAAKM,EAAI,MAI9D,IAAKV,GAAWC,GAAgBY,IAC5B,OAAOD,EAEX,IAEIf,EACAC,EACAC,EAMJ,OAJAF,EAAyC,GAA5BK,GAASW,EAAMnR,OAAO,IAAWwQ,GAASW,EAAMnR,OAAO,IACpEoQ,EAAyC,GAA5BI,GAASW,EAAMnR,OAAO,IAAWwQ,GAASW,EAAMnR,OAAO,IACpEqQ,EAAyC,GAA5BG,GAASW,EAAMnR,OAAO,IAAWwQ,GAASW,EAAMnR,OAAO,IACzD,QAAQvZ,OAAA0pB,EAAe,MAAA1pB,OAAA2pB,cAAcC,EAAU,OAAA5pB,OAAMuqB,EAAI,IAExE,EAUaV,GAAa,SAACP,GAGvB,GAA6B,MAAzBA,EAAW/P,OAAO,GAElB,OAAO,EAGX,GAA0B,IAAtB+P,EAAW3iB,OAGX,OAAO,EAGX,IAAK,IAAIgI,EAAI,EAAGA,EAAI2a,EAAW3iB,OAAQgI,IACnC,IAAKgc,GAAS9mB,SAASylB,EAAW/P,OAAO5K,IAGrC,OAAO,EAIf,OAAO,CACX,EAUM,SAAUmb,GAAgBc,GAI5B,OAAKA,OAM4CjmB,IAA7C4b,GAAaqK,EAAOC,qBACbtK,GAAaqK,EAAOC,qBAMxBD,EAZI,EAaf,CAOA,IAAMD,GAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvFG,GAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IASvDf,GAAW,SAACgB,GACrB,OAAIJ,GAAS9mB,SAASknB,GACXD,GAASH,GAASK,QAAQD,IAE1B,CAEf,EAUaE,GAAa,SAACP,GACvB,YAAc/lB,IAAV+lB,GAAiC,KAAVA,EAChBA,EAEAQ,EAEf,EAQaC,GAAqB,SAACT,EAAgBH,GAE/C,YAF+C,IAAAA,IAAAA,EAAQ,GAEhDD,GAAcW,GAAWnB,GAAgBY,IAASH,EAE7D,EAIaW,GAAqB,UCpOrBE,GAAuB,SAChC1b,EACA2b,GAEA,IAEIC,EACAvc,GAAeS,uBAAuBE,GAG1C,GAAI4b,EAAe,CAWf,IAAIC,EAAalc,GAAA,GAAkBgc,GAAgB,GASnD,GARAE,EAAgBA,EAAcvb,QAC1B,SAACG,GAAM,OAAkD,KAAlDmb,eAAAA,EAAeE,WAAU,SAAAC,GAAK,OAAAA,EAAEne,KAAO6C,EAAE7C,EAAX,IAAqB,IAO1Dge,EAAc3kB,SAAW0kB,EAAiB1kB,QAAsC,IAA5B0kB,EAAiB1kB,OACrE,OAEJ,IAAK,IAAIgI,EAAI,EAAGA,EAAI2c,EAAc3kB,OAAQgI,SAEIhK,IAArC0mB,EAAiB1c,GAAGjB,cAEc,cAAlC4d,EAAc3c,GAAGjB,eAGlB4d,EAAc3c,GAAGjB,kBAAe/I,EAG3C,CAED,MAzCwB,EA0C5B"}
\ No newline at end of file
diff --git a/src/files-ui/core/index.js b/src/files-ui/core/index.js
deleted file mode 100644
index 73109351a6991b2093e65cc3cc6c84d258038c69..0000000000000000000000000000000000000000
--- a/src/files-ui/core/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},t={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},r={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},a={maxSizeError:function(t){return"Il file è molto grande. Il tam. il massimo è ".concat(e(t))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},n={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},o={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},i={maxSizeError:function(t){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(e(t))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},s={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},c={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},u={maxSizeError:function(t){return"File is too big. Max file size allowed is ".concat(e(t))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},l={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},p={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},d={maxSizeError:function(t){return"El archivo es muy grande. El tam. máximo es ".concat(e(t))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},f={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},m={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},g={maxSizeError:function(t){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(e(t))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},h={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},x={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},b={maxSizeError:function(t){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(e(t))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},v={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},F={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},w={maxSizeError:function(t){return"文件太大。 允许的最大文件大小为 ".concat(e(t))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},_={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},E={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},y={maxSizeError:function(t){return"文件太大。 允許的最大文件大小為 ".concat(e(t))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}},A={"ES-es":p,"EN-en":c,"FR-fr":o,"IT-it":r,"PT-pt":x,"RU-ru":m,"ZH-cn":F,"ZH-hk":E},z={"ES-es":l,"EN-en":s,"FR-fr":n,"IT-it":t,"PT-pt":h,"RU-ru":f,"ZH-cn":v,"ZH-hk":_},S=function(e){switch(e){case"ES-es":return z["ES-es"];case"EN-en":default:return z["EN-en"];case"FR-fr":return z["FR-fr"];case"IT-it":return z["IT-it"];case"PT-pt":return z["PT-pt"];case"RU-ru":return z["RU-ru"];case"ZH-cn":return z["ZH-cn"];case"ZH-hk":return z["ZH-hk"]}},k={"ES-es":d,"EN-en":u,"FR-fr":i,"IT-it":a,"PT-pt":b,"RU-ru":g,"ZH-cn":w,"ZH-hk":y},D=function(e){return e&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(e)?k[e]:k["EN-en"]};var R="https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",C="https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",M="https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",j="https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",I="https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",T="https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",L="https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",U="https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",B="https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",N="https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",P="https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",O="https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",q="https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",H="https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",V="https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",Z="https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",G="https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",X="https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",J="https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",K="https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",Q="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",W="https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",$="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",Y="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",ee="https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",te="https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",re="https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",ae="https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",ne="https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",oe="https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",ie="https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",se="https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",ce="https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",ue="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",le="https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",pe="https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",de="https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",fe="https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",me="https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",ge="https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",he="https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",xe="https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",be="https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",ve="https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",Fe="https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",we="https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",_e="https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",Ee="https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",ye="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Ae="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",ze="https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",Se="https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",ke="https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",De="https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",Re="https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",Ce="https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",Me="https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",je="https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",Ie="https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",Te="https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",Le="https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",Ue="https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",Be="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Ne="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Pe="https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",Oe="https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",qe="https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",He="https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",Ve="https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",Ze="https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",Ge="https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",Xe="https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",Je=function(e){var t=/(?:\.([^.]+))?$/.exec(e);return t?t[1]:""},Ke="octet",Qe=function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return Ke}},We=function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return Ke}},$e=function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return Ke}},Ye=function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return Ke}},et=function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return Ke}},tt=function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return Ke}},rt=function(e){if(!e||!e.includes("/"))return Ke;var t=e.split("/")[0],r=e.split("/")[1];switch(t){case"application":return tt(r);case"audio":return Qe(r);case"video":return et(r);case"text":return We(r);case"image":return $e(r);case"font":return Ye(r);default:return Ke}},at=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},nt=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},ot={aac:C,accdb:j,abw:M,arc:X,avi:I,azw:T,octet:ue,bmp:L,bz:U,bz2:B,cda:N,csh:P,css:O,csv:q,docx:H,drawio:V,eot:Z,epub:G,gzip:K,gif:J,html:Q,icalendar:W,jar:Y,jpeg:te,javascript:ee,json:re,jsonld:ae,midi:ne,mp3:oe,mp4:ie,mpeg:se,mpkg:ce,mp2t:ue,odp:le,ods:pe,odt:de,oga:fe,ogv:me,ogx:ge,opus:he,otf:xe,png:Fe,pdf:be,php:ve,pptx:we,psd:_e,rar:Ae,rtf:Se,sass:ke,sh:De,swf:Re,tar:ye,tiff:Me,ttf:je,typescript:Ie,text:Ce,vsd:Te,wav:Ue,weba:Ne,webm:Be,webp:Pe,woff:He,wma:Oe,wmv:qe,xhtml:Q,xlsx:Ve,xml:Ze,xul:Ge,zip:Xe,sevenzip:R,python:Ee,java:$,react:ze,vue:Le,fallBack:ue},it=function(){function e(e){var t=e.id,r=e.file,a=e.name,n=e.size,o=e.type,i=e.imageUrl,s=e.valid,c=e.errors,u=e.uploadMessage,l=e.uploadStatus,p=e.progress,d=e.xhr,f=e.extraData,m=e.extraUploadData,g=e.serverResponse,h=e.downloadUrl,x=e.videoUrl;this.id=t,this.file=r,this.name=a,this.size=n,this.type=o,this.imageUrl=i,this.valid=s,this.errors=c,this.uploadStatus=l,this.uploadMessage=u,this.progress=p,this.xhr=d,this.extraData=f,this.extraUploadData=m,this.serverResponse=g,this.downloadUrl=h,this.videoUrl=x}return e.toExtFile=function(e){for(var t={},r=Object.keys(e),a=Object.values(e),n=0;n<a.length;n++){var o=a[n],i=r[n];void 0!==o&&(t[i]=o)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),st=function(){return st=Object.assign||function(e){for(var t,r=1,a=arguments.length;r<a;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},st.apply(this,arguments)};function ct(e,t,r,a){return new(r||(r=Promise))((function(n,o){function i(e){try{c(a.next(e))}catch(e){o(e)}}function s(e){try{c(a.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}c((a=a.apply(e,t||[])).next())}))}function ut(e,t){var r,a,n,o,i={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(i=0)),i;)try{if(r=1,a&&(n=2&s[0]?a.return:s[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,s[1])).done)return n;switch(a=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,a=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(n=i.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){i.label=s[1];break}if(6===s[0]&&i.label<n[1]){i.label=n[1],n=s;break}if(n&&i.label<n[2]){i.label=n[2],i.ops.push(s);break}n[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],a=0}finally{r=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}function lt(e,t,r){if(r||2===arguments.length)for(var a,n=0,o=t.length;n<o;n++)!a&&n in t||(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}var pt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,r){return t?(e.fileLists[t]=lt([],r,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return"development"===process.env.NODE_ENV&&console.error("Error on remove",e),0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return void("development"===process.env.NODE_ENV&&console.error("Error on getExtFileInstanceList",e))}},e.setFileListMapPreparing=function(t,r,a,n){if("number"==typeof t||"string"==typeof t)try{var o,i=lt([],r,!0);n&&a&&(i=i.filter((function(e){return e.valid}))),o=(i=a?i.map((function(e){return"success"!==e.uploadStatus&&e.valid?st(st({},e),{uploadStatus:"preparing"}):st({},e)})):i.map((function(e){return"success"!==e.uploadStatus?st(st({},e),{uploadStatus:"preparing"}):st({},e)}))).map((function(e){return new it(e)}));e.setFileList(t,o);return o}catch(e){return void("development"===process.env.NODE_ENV&&console.error("setFileListMapPreparing Error on get List",e))}},e.setFileListMapPreparing2=function(t,r,a,n){return e.setFileList(t,r.map((function(e){return new it(st(st({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),dt=function(){function e(){}return e.createFile=function(e,t,r){var a=new File([],e,{type:r});return Object.defineProperty(a,"size",{get:function(){return t}}),a},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var r=[];return r.push(e.create_aac(t)),r.push(e.create_abw(t)),r.push(e.create_freearc(t)),r.push(e.create_avi(t)),r.push(e.create_azw(t)),r.push(e.create_octet(t)),r.push(e.create_bmp(t)),r.push(e.create_bz(t)),r.push(e.create_bz2(t)),r.push(e.create_cda(t)),r.push(e.create_csh(t)),r.push(e.create_css(t)),r.push(e.create_csv(t)),r.push(e.create_doc(t)),r.push(e.create_docx(t)),r.push(e.create_eot(t)),r.push(e.create_epub(t)),r.push(e.create_gzip(t)),r.push(e.create_gif(t)),r.push(e.create_htm(t)),r.push(e.create_html(t)),r.push(e.create_ico(t)),r.push(e.create_icalendar(t)),r.push(e.create_jar(t)),r.push(e.create_jpeg(t)),r.push(e.create_jpg(t)),r.push(e.create_js(t)),r.push(e.create_json(t)),r.push(e.create_jsonld(t)),r.push(e.create_mid(t)),r.push(e.create_midi(t)),r.push(e.create_x_mid(t)),r.push(e.create_x_midi(t)),r.push(e.create_mjs(t)),r.push(e.create_mp3(t)),r.push(e.create_mp4(t)),r.push(e.create_mpeg(t)),r.push(e.create_mpkg(t)),r.push(e.create_odp(t)),r.push(e.create_ods(t)),r.push(e.create_odt(t)),r.push(e.create_oga(t)),r.push(e.create_ogv(t)),r.push(e.create_ogx(t)),r.push(e.create_opus(t)),r.push(e.create_otf(t)),r.push(e.create_png(t)),r.push(e.create_pdf(t)),r.push(e.create_php(t)),r.push(e.create_ppt(t)),r.push(e.create_pptx(t)),r.push(e.create_rar(t)),r.push(e.create_rtf(t)),r.push(e.create_sh(t)),r.push(e.create_svg(t)),r.push(e.create_swf(t)),r.push(e.create_tar(t)),r.push(e.create_tif(t)),r.push(e.create_tiff(t)),r.push(e.create_ts(t)),r.push(e.create_ttf(t)),r.push(e.create_text(t)),r.push(e.create_typescript(t)),r.push(e.create_vsd(t)),r.push(e.create_wav(t)),r.push(e.create_weba(t)),r.push(e.create_webm(t)),r.push(e.create_webp(t)),r.push(e.create_woff(t)),r.push(e.create_woff2(t)),r.push(e.create_xhtml(t)),r.push(e.create_xlsx(t)),r.push(e.create_xls(t)),r.push(e.create_xml(t)),r.push(e.create_xml_txt(t)),r.push(e.create_xul(t)),r.push(e.create_zip(t)),r.push(e.create_python(t)),r.push(e.create_java(t)),r.push(e.create_react(t)),r.push(e.create_vue(t)),r},e}(),ft=function(e,t,r){return void 0===e&&(e="png-image-file-with-large-name.png"),void 0===t&&(t=455555),void 0===r&&(r="image/png"),dt.createFile(e,t,r)},mt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}();function gt(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),Math.floor(Math.random()*(t-e))+e}var ht=function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]},xt=function(e,t){for(var r=t.name,a=t.type,n=0;n<e.length;n++){var o=e[n];if(0!==o.length){if("."===o.charAt(0)&&o.includes(Je(r)))return!0;if(a&&a.length>0&&o.includes("/")&&a.includes("/")){var i=o.split("/")[0],s=o.split("/")[1],c=a.split("/")[0],u=a.split("/")[1];if(i===c){if("*"===s)return!0;if(s===u)return!0}}}}return!1},bt=function(e,t,r,a){var n=st({},e),o=[];if(!e.file)return st({},n);if(t){var i=t(n.file).errors;i&&o.push.apply(o,i)}var s=r.maxFileSize,c=r.accept,u=e.file;if(s&&u.size>s){var l=a.maxSizeError;o.push(l(s))}c&&!xt(ht(c),u)&&o.push(a.acceptError);var p=0===o.length;return n=st(st({},n),{valid:p,errors:p?void 0:o})},vt=function(e,t,r,a){var n=mt.getNextId(),o=[];if(t)return st({id:n,file:e},t(e));var i=r.maxFileSize,s=r.accept;if(i&&e.size>i){var c=a.maxSizeError;o.push(c(i))}return s&&!xt(ht(s),e)&&o.push(a.acceptError),{id:n,file:e,valid:0===o.length,errors:o}},Ft=["File is too big. Max file size allowed is 80mb.","File's type is not allowed.","Max amount of files (28) has been reached."];function wt(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.append(r[a],t[r[a]]);e.append("otherValue","HAAAAAAAAAAAAAAa")}function _t(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.setRequestHeader(r[a],t[r[a]])}var Et={success:!1,message:"Timeout error",payload:{}},yt={success:!1,message:"Upload aborted",payload:{}},At={success:!1,message:"Error when parsing JSON response",payload:{}},zt={success:!1,message:"Unexpected error",payload:{}},St=function(e){return st(st({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})},kt=function(e){try{var t=JSON.parse(e.response),r=t.success,a=t.message;return{success:"boolean"==typeof r&&r,message:"string"==typeof a?a:"Error on message response",payload:t.payload||{}}}catch(e){return At}},Dt=function(e,t){return st(st({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})},Rt=function(e,t){return st(st({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},Ct=function(e,t,r,a,n){return void 0===t&&(t="POST"),new Promise((function(o,i){var s=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return o(Et)},e.upload.onabort=function(){o(yt)},e.onloadend=function(e){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(t){return e.readyState,4===e.readyState&&(""!==e.response?o(kt(e)):o(yt)),[2]}))}))},e.open(s,r,!0),_t(e,n),e.send(a)}))};var Mt={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},jt=function(e,t,r){void 0===t&&(t=0);var a=r||"rgba(255, 255, 255, 0.6)";if(!e)return a;var n=e.toUpperCase();if(n.includes("RGBA"))return n;if(n.includes("RGB"))return n.replace("RGB","rgba").replace(")",", ".concat(t,")"));if(!It(Tt(n)))return a;var o,i,s;return o=16*Bt(n.charAt(1))+Bt(n.charAt(2)),i=16*Bt(n.charAt(3))+Bt(n.charAt(4)),s=16*Bt(n.charAt(5))+Bt(n.charAt(6)),"rgba(".concat(o,", ").concat(i,",").concat(s," , ").concat(t,")")},It=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!Lt.includes(e.charAt(t)))return!1;return!0};function Tt(e){return e?void 0!==Mt[e.toLocaleLowerCase()]?Mt[e.toLocaleLowerCase()]:e:""}var Lt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],Ut=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],Bt=function(e){return Lt.includes(e)?Ut[Lt.indexOf(e)]:0},Nt=function(e){return void 0!==e&&""!==e?e:Pt},Pt="#646c7f";exports.ABORTED_ERROR_RESPONSE=yt,exports.DropzoneEnglish=s,exports.DropzoneFrench=n,exports.DropzoneItalian=t,exports.DropzoneLocalizer=z,exports.DropzoneLocalizerSelector=S,exports.DropzonePortuguese=h,exports.DropzoneRussian=f,exports.DropzoneSimplifiedChinese=v,exports.DropzoneSpanish=l,exports.DropzoneTraditionalChinese=_,exports.ExtFileInstance=it,exports.ExtFileManager=pt,exports.FileIdGenerator=mt,exports.FileItemEnglish=c,exports.FileItemFrench=o,exports.FileItemItalian=r,exports.FileItemLocalizer=A,exports.FileItemLocalizerSelector=function(e){switch(e){case"ES-es":return A["ES-es"];case"EN-en":default:return A["EN-en"];case"FR-fr":return A["FR-fr"];case"IT-it":return A["IT-it"];case"PT-pt":return A["PT-pt"];case"RU-ru":return A["RU-ru"];case"ZH-cn":return A["ZH-cn"];case"ZH-hk":return A["ZH-hk"]}},exports.FileItemPortuguese=x,exports.FileItemRussian=m,exports.FileItemSimplifiedChinese=F,exports.FileItemSpanish=p,exports.FileItemTraditionalChinese=E,exports.FuiUpload=function(e,t,r,a,n){return new Promise((function(o,i){e.upload.onload=function(){},e.upload.ontimeout=function(){return o(Et)},e.upload.onabort=function(){return o(yt)},e.onreadystatechange=function(t){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(t){return 4===e.readyState&&(""!==e.response?o(kt(e)):o(zt)),[2]}))}))},e.open(t,r,!0);for(var s=Object.keys(n),c=0;c<s.length;c++)e.setRequestHeader(s[c],n[s[c]]);e.send(a)}))},exports.JSON_PARSE_ERROR_RESPONSE=At,exports.JsonParseResponse=kt,exports.NAMED_COLORS=Mt,exports.NO_XHR_PROVIDED_ERROR=St,exports.SyntheticFile=dt,exports.TIMEOUT_ERROR_RESPONSE=Et,exports.UNEXPECTED_ERROR_RESPONSE=zt,exports.ValidateErrorEnglish=u,exports.ValidateErrorFrench=i,exports.ValidateErrorItalian=a,exports.ValidateErrorLocalizer=k,exports.ValidateErrorLocalizerSelector=D,exports.ValidateErrorPortuguese=b,exports.ValidateErrorRussian=g,exports.ValidateErrorSimplifiedChinese=w,exports.ValidateErrorSpanish=d,exports.ValidateErrorTraditionalChinese=y,exports.aac=C,exports.abw=M,exports.accdb=j,exports.addClassName=function(e,t){return t?"".concat(e," ").concat(t):e},exports.addExtraData=wt,exports.addHeaders=_t,exports.applicationSelector=tt,exports.asureColor=Nt,exports.audioSelector=Qe,exports.avi=I,exports.azw=T,exports.bmp=L,exports.brighterColor=function(e,t){void 0===t&&(t=25);var r="",a=(100+t)/100,n=0,o=0,i=0;if(It(Tt(e)))n=16*Bt(e.charAt(1))+Bt(e.charAt(2)),o=16*Bt(e.charAt(3))+Bt(e.charAt(4)),i=16*Bt(e.charAt(5))+Bt(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(o*a,",").concat(i*a,")");else if(e.includes("rgba")){var s=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}else if(e.includes("rgb")){s=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}return r},exports.bz=U,exports.bz2=B,exports.cda=N,exports.checkIsCode=nt,exports.cleanInput=function(e){e&&(e.value="")},exports.colourNameToHex=Tt,exports.completeAsureColor=function(e,t){return void 0===t&&(t=1),jt(Nt(Tt(e)),t)},exports.completeUploadResult=function(e,t,r){return{id:e.id,uploadedFile:st(st({},e),{uploadMessage:t.message,uploadStatus:r}),serverResponse:t}},exports.createListOfMultiTypeFile=function(e){return dt.createFileListMiscelanious(e)},exports.createSyntheticFile=ft,exports.createUploadConfig=function(e,t,r,a,n){return{url:e,method:t,headers:r,uploadLabel:a,cleanonUpload:n}},exports.csh=P,exports.css=O,exports.csv=q,exports.darkerColor=function(e,t){void 0===t&&(t=25);var r="",a=(100-t)/100,n=0,o=0,i=0;if(It(Tt(e)))n=16*Bt(e.charAt(1))+Bt(e.charAt(2)),o=16*Bt(e.charAt(3))+Bt(e.charAt(4)),i=16*Bt(e.charAt(5))+Bt(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(o*a,",").concat(i*a,")");else if(e.includes("rgba")){var s=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}else if(e.includes("rgb")){s=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}return r},exports.docx=H,exports.drawio=V,exports.eot=Z,exports.epub=G,exports.extFileMock=function(e){return{id:e||mt.getNextId(),name:"fileName.ext",size:29360128,type:"files-ui/mock",file:ft("fileName.ext",29360128,"files-ui/mock"),errors:Ft,uploadMessage:"uploaded",uploadStatus:"preparing",valid:!1,progress:28,xhr:new XMLHttpRequest,extraData:{extraData1:"files-ui is the best",extraData2:{id:1,name:"files-ui.mock"},deleted:!0},downloadUrl:"https://www.files-ui.com/mock/file-download"}},exports.extFileReconcilation=function(e,t){var r=pt.getExtFileInstanceList(e);if(r){var a=lt([],t,!0);if(a=a.filter((function(e){return-1===(null==r?void 0:r.findIndex((function(t){return t.id===e.id})))})),r.length!==t.length||0===t.length)return;for(var n=0;n<r.length;n++)void 0===t[n].uploadStatus&&"preparing"===r[n].uploadStatus&&(r[n].uploadStatus=void 0)}return[]},exports.extensionSelector=at,exports.fakeFuiUpload=function(e,t){void 0===t&&(t=S("EN-en"));var r=e.toExtFile();return new Promise((function(e,a){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var a=!0,n=t.fakeuploadsuccess,o={url:""};e(st(st({},r),{serverResponse:{success:a,message:n,payload:o},uploadStatus:"success",uploadMessage:n}))}else{a=!1,n=t.fakeUploadError,o={};e(st(st({},r),{serverResponse:{success:a,message:n,payload:o},uploadStatus:"error",uploadMessage:n}))}}),1700)}))},exports.fileListToExtFileArray=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push({id:mt.getNextId(),file:a,name:a.name,size:a.size,type:a.type});return t},exports.fileListToExtFileInstanceArray=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push(new it({id:mt.getNextId(),file:a,name:a.name,size:a.size,type:a.type}));return t},exports.fileListvalidator=function(e,t,r,a,n,o){for(var i=[],s=t,c=D(o),u=0,l=void 0;l=e[u];u++){var p=vt(l,a,r,c);if(p.valid){var d=s>0;if(p.valid=d,!d){var f=c.maxFileCount;p.errors=p.errors?lt(lt([],p.errors,!0),[f(n||1/0)],!1):[f(n||1/0)]}s--}i.push(p)}return i},exports.fileSizeFormater=e,exports.fontSelector=Ye,exports.freearc=X,exports.getExt=Je,exports.getImageOrientation=function(e){return new Promise((function(t,r){if(e&&0!==e.length)try{var a=new Image;a.src=e,a.onerror=function(e){r("landscape")},a.onload=function(){var e=a.width,r=a.height;t(e>r?"landscape":"portrait")}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to get the image orientation"),r("landscape")}else r("landscape")}))},exports.getLocalFileItemData=function(e,t,r,a){var n="",o=void 0,i=void 0;return e&&"string"==typeof e.name?(n=e.name,o=e.type,i=e.size):t&&"string"==typeof t&&(n=t,o=r,i=a),[n,o,i]},exports.getRandomInt=gt,exports.getURLFileIco=function(e,t){var r="fallBack";if(!e)return r=Ke,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:r}:{url:ot[r],mimeResume:r};r=rt(e.type);var a=Je(e.name);"text"===r&&(r=nt(a)),r===Ke&&(r=at(a));var n=null==t?void 0:t[r];return void 0!==n?{url:n,mimeResume:r}:{url:ot[r],mimeResume:r}},exports.getURLFileIcoFromNameAndType=function(e,t,r){var a="octet";if(!e)return a=Ke,(null==r?void 0:r.fallBack)?{url:null==r?void 0:r.fallBack,mimeResume:a}:{url:ot[a],mimeResume:a};a=rt(t);var n=Je(e);"text"===a&&(a=nt(n)),a===Ke&&(a=at(n));var o=null==r?void 0:r[a];return void 0!==o?{url:o,mimeResume:a}:{url:ot[a],mimeResume:a}},exports.gif=J,exports.gzip=K,exports.hexColorToRGB=jt,exports.hexTodec=Bt,exports.html=Q,exports.icalendar=W,exports.imageSelector=$e,exports.instantPreparingToUploadOne=function(e){return"preparing"===e.uploadStatus?(e.uploadStatus="uploading",st(st({},e),{uploadStatus:"uploading"})):e},exports.isHexColor=It,exports.isUploadAbleExtFile=function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus},exports.isValidateActive=function(e,t,r,a){return null!=e||null!=t||null!=r||null!=a},exports.jar=Y,exports.java=$,exports.javascript=ee,exports.jpeg=te,exports.json=re,exports.jsonld=ae,exports.makeErrorUploadResponse=Rt,exports.makeServerResponse=function(e,t,r){return{success:e,message:t,payload:r}},exports.makeSuccessUploadResponse=Dt,exports.makeSyntheticExtFile=function(e,t,r,a){void 0===t&&(t=Math.ceil(28*Math.random())%2==0);var n=[],o=r||function(){switch(gt(0,4)){case 0:return"error";case 1:return"uploading";case 2:return"success";default:return}}(),i=a||"";if(t){if(!a)switch(o){case"error":i="Upload failed. There was an error";break;case"success":i="File was successfully upload";break;default:a=void 0}n=void 0}else{var s=gt(0,3);n.push(Ft[s]),o=void 0,i=void 0}return{id:mt.getNextId(),valid:t,file:e,uploadStatus:o,uploadMessage:i,errors:n}},exports.midi=ne,exports.mimeSelector=rt,exports.mp3=oe,exports.mp4=ie,exports.mpeg=se,exports.mpkg=ce,exports.octet=ue,exports.odp=le,exports.ods=pe,exports.odt=de,exports.oga=fe,exports.ogv=me,exports.ogx=ge,exports.opus=he,exports.otf=xe,exports.pdf=be,exports.php=ve,exports.png=Fe,exports.pptx=we,exports.prepToUploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="uploading",t(st(st({},e),{uploadStatus:"uploading"}))}),1500)}))},exports.preparingToUploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){"preparing"===e.uploadStatus?(e.uploadStatus="uploading",t(st(st({},e),{uploadStatus:"uploading"}))):t(e)}),1500)}))},exports.psd=_e,exports.python=Ee,exports.rar=Ae,exports.react=ze,exports.readAsArrayBuffer=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onload=function(){a(o.result)},o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.readAsArrayBuffer(e)}catch(e){n(void 0)}}))},exports.readAsBinaryString=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onload=function(){a(o.result)},o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.readAsBinaryString(e)}catch(e){n(void 0)}}))},exports.readAsDataURL=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.onload=function(){a(o.result)},o.readAsDataURL(e)}catch(e){n(void 0)}}))},exports.readAsText=function(e,t,r,a){return new Promise((function(n,o){try{var i=new FileReader;i.onload=function(){n(i.result)},i.onprogress=function(){null==r||r()},i.onerror=function(){null==a||a()},i.readAsText(e,t||"base64")}catch(e){o(void 0)}}))},exports.resizeImage=function(e,t,r){return void 0===t&&(t=135),void 0===r&&(r=120),new Promise((function(a,n){try{var o=new Image;o.src=e,o.onload=function(){var i=document.createElement("canvas"),s=t,c=r,u=o.width,l=o.height;t>u&&r>l?a(e):u>l?u>s&&(l*=s/u,u=s):l>c&&(u*=c/l,l=c),i.width=u,i.height=l;var p=i.getContext("2d");p?(p.drawImage(o,0,0,u,l),a(i.toDataURL())):("development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0))}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0)}}))},exports.rtf=Se,exports.sanitizeArrExtFile=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),it.toExtFile(e)}))},exports.sass=ke,exports.separateAccept=ht,exports.setNextUploadStatus=function(e,t){var r=e.uploadStatus,a=t.uploadStatus;"preparing"===r&&["aborted",void 0].includes(a)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===r&&["aborted",void 0].includes(a)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)},exports.setPrepToUploading=function(e){return new Promise((function(t,r){setTimeout((function(){t(st(st({},e),{uploadStatus:"uploading"}))}),1500)}))},exports.sevenzip=R,exports.sh=De,exports.shrinkWord=function(e,t){void 0===e&&(e=""),void 0===t&&(t=!1);var r=e;return t?e.length>=20&&(r=e.slice(0,10)+"..."+e.slice(-7)):e.length>=30&&(r=e.slice(0,13)+"..."+e.slice(-8)),r},exports.sleepPreparing=function(e){return void 0===e&&(e=5e3),new Promise((function(t,r){setTimeout((function(){t()}),e)}))},exports.sleepTransition=function(e){return void 0===e&&(e=1500),new Promise((function(t,r){setTimeout((function(){t(!0)}),e)}))},exports.swf=Re,exports.tar=ye,exports.text=Ce,exports.textSelector=We,exports.tiff=Me,exports.toUploadableExtFileList=function(e){return e?e.map((function(e){return st(st({},e),{xhr:new XMLHttpRequest})})):[]},exports.ttf=je,exports.typescript=Ie,exports.unableToUploadResult=function(e){return{id:e.id,uploadedFile:st(st({},e),{uploadMessage:"Unable to upload. XHR was not provided",uploadStatus:"error"}),serverResponse:{success:!1,message:"Error on upload: Unable to upload. XHR was not provided ",payload:{}}}},exports.unexpectedErrorUploadResult=function(e){return st(st({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})},exports.uploadExtFile=function(e,t,r,a,n){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(o){return[2,new Promise((function(o,i){return ct(void 0,void 0,void 0,(function(){var i,s,c,u,l,p;return ut(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(i=e.xhr)?(s=r||"POST",c=e.file,(u=new FormData).append(n||"file",c),l=st({otherValue:"other valueee haaaa",param2:{tecnica:"KIKOHUUUU",friend:"Chaos",age:25}},e.extraUploadData),wt(u,l),p=void 0,[4,Ct(i,s,t,u,a||{})]):(o(St(e)),[2]);case 1:return(p=d.sent()).success?o(Dt(e,p)):o(Rt(e,p)),[3,3];case 2:return d.sent(),o(Rt(e,zt)),[3,3];case 3:return[2]}}))}))}))]}))}))},exports.uploadFile=function(e,t,r,a,n){var o=this;return new Promise((function(i,s){return ct(o,void 0,void 0,(function(){var o,s;return ut(this,(function(c){switch(c.label){case 0:(o=new FormData).append(a||"file",e),c.label=1;case 1:return c.trys.push([1,3,,4]),[4,Ct(new XMLHttpRequest,r,t,o,n)];case 2:return s=c.sent(),i(s),[3,4];case 3:return c.sent(),i(zt),[3,4];case 4:return[2]}}))}))}))},exports.uploadFormData=Ct,exports.uploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){t(st(st({},e),{uploadStatus:"success"}))}),2e3)}))},exports.uploadOneExtFile=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="success",t(st(st({},e),{uploadStatus:"success"}))}),2e3)}))},exports.validateAccept=xt,exports.validateExtFile=bt,exports.validateExtFileList=function(e,t,r,a,n,o){var i=[];if(!t)return i;for(var s=t,c=D(o),u=c.maxFileCount,l=0;l<e.length;l++){var p=e[l];if((p=bt(p,a,r,c)).valid){var d=s>0;p.valid=d,d||(p.errors=p.errors?lt(lt([],p.errors,!0),[u(n||1/0)],!1):[u(n||1/0)]),s--}i.push(p)}return i},exports.validateFile=vt,exports.videoSelector=et,exports.vsd=Te,exports.vue=Le,exports.wav=Ue,exports.weba=Ne,exports.webm=Be,exports.webp=Pe,exports.wma=Oe,exports.wmv=qe,exports.woff=He,exports.xlsx=Ve,exports.xml=Ze,exports.xul=Ge,exports.zip=Xe;
-//# sourceMappingURL=index.js.map
diff --git a/src/files-ui/core/index.js.map b/src/files-ui/core/index.js.map
deleted file mode 100644
index bfd639ec327266600a8f7301ac3a51d3791fe975..0000000000000000000000000000000000000000
--- a/src/files-ui/core/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sources":["../src/utils/fileSizeFormatter.ts","../src/localization/Italian/localization.italian.ts","../src/localization/French/localization.french.ts","../src/localization/English/localization.english.ts","../src/localization/Spanish/localization.spanish.ts","../src/localization/Russian/localization.russian.ts","../src/localization/Portuguese/localization.portuguese.ts","../src/localization/Chinese-simplified/localization.simplifiedChinese.ts","../src/localization/Chinese-traditional/localization.traditionalChinese.ts","../src/localization/FileItem.localization.ts","../src/localization/dropzone.localization.ts","../src/localization/validationError.localization.ts","../src/mime/icons.ts","../src/utils/getExt.ts","../src/mime/mime.ts","../src/types/ExtFile.ts","../src/types/ExtFileManager.ts","../src/synthetic-file/SyntheticFile.ts","../src/utils/IdGenerator.ts","../src/utils/randomInt.ts","../src/utils/input.utils.ts","../src/validation/separateAccept.ts","../src/validation/validateAccept.ts","../src/validation/fileValidator.ts","../src/validation/fakeerros.ts","../src/upload/addExtraData.upload.ts","../src/upload/addheaders.upload.ts","../src/upload/errors.upload.ts","../src/upload/response.upload.ts","../src/upload/upload.ts","../src/color/namedColors.ts","../src/color/colors.ts","../src/utils/addClassName.ts","../src/upload/utils.upload.ts","../src/types/UploadConfig.ts","../src/mocks/extFileMock.ts","../src/file-manager/reconcilation.ts","../src/utils/fakeupload.utils.ts","../src/utils/fileListParser.ts","../src/reader/imageOrientation.ts","../src/utils/getLocalFileItemData.ts","../src/utils/isUploadAbleExtFile.ts","../src/utils/dropzone.utils.ts","../src/synthetic-file/syntheticfileGenerator.ts","../src/validation/randomStatus.ts","../src/reader/readers.ts","../src/reader/resizeImage.ts","../src/utils/shrinkWord.ts"],"sourcesContent":["/**\r\n * Gives a XX.XX format in Bytes KB, MB, GB or TB\r\n * @param fileSize file size to give format in Bytes\r\n */\r\n export const fileSizeFormater = (fileSize?: number | false): string| undefined => {\r\n    let result = \"\";\r\n    if (!fileSize) {\r\n        return undefined;\r\n    }\r\n    if (fileSize < 1024) {\r\n        result = fileSize + \" Bytes\"\r\n    } else {\r\n        //KB\r\n        if (fileSize < 1024 * 1024) {\r\n            result = (fileSize / 1024).toFixed(2) + \" KB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024) {\r\n            result = ((fileSize / 1024) / 1024).toFixed(2) + \" MB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024 * 1024) {\r\n            result = (((fileSize / 1024) / 1024) / 1024).toFixed(2) + \" GB\";\r\n        } else {\r\n            result = ((((fileSize / 1024) / 1024) / 1024) / 1024).toFixed(2) + \" TB\";\r\n        }\r\n    }\r\n    return result;\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Italian translation for Dropzone component\r\n */\r\nexport const DropzoneItalian: LocalLabels = {\r\n    defaultLabel: \"Trascina qui i tuoi file\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Caricamento di ${amountOfFiles} file`; },\r\n    uploadFinished: (uploaded, rejected) => `File caricati: ${uploaded}, File rifiutati: ${rejected}`,\r\n    noFilesMessage: `Nessun file valido in attesa di essere caricato`,\r\n    footer: {\r\n        acceptAll: `Tutti i tipi di file sono accettati`,\r\n        acceptCustom: (accept) => `Tipi di file consentiti: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Caricamento\",\r\n        maxSizeMessage: (maxFileSize) => `Dimensione massima ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `File  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Il file è stato caricato con successo \",\r\n    fakeUploadError: \"Errore di caricamento del file\",\r\n}\r\n\r\n/**\r\n * Italian translation for FileItem component\r\n */\r\nexport const FileItemItalian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Dimensione: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"preparazione\",\r\n        uploading: \"In corso\",\r\n        success: \"Successo\",\r\n        valid: \"Valido\",\r\n        denied: \"Non válido\",\r\n        error: \"Errore\",\r\n        aborted:\"Interrotto\"\r\n    },\r\n}\r\n/**\r\n * Italian translation for Validation Errors\r\n */\r\n export const ValidateErrorItalian: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Il file è molto grande. Il tam. il massimo è ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo di file illegale`,\r\n    maxFileCount: (maxFiles) => `Numero massimo di file (${maxFiles}) raggiunto`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * French translation for Dropzone component\r\n */\r\nexport const DropzoneFrench: LocalLabels = {\r\n    defaultLabel: \"Déposez vos fichiers ici\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Envoi de ${amountOfFiles} fichiers`; },\r\n    uploadFinished: (uploaded, rejected) => `Fichiers téléchargés : ${uploaded}, Fichiers rejetés: ${rejected}`,\r\n    noFilesMessage: `Aucun fichier valide ne manque`,\r\n    footer: {\r\n        acceptAll: `Tous types de fichiers acceptés `,\r\n        acceptCustom: (accept) => `Types de fichier: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Envoyer\",\r\n        maxSizeMessage: (maxFileSize) => `Taille maximale ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Fichiers  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Le fichier a été téléchargé avec succès\",\r\n    fakeUploadError: \"Erreur lors du téléchargement \",\r\n}\r\n\r\n/**\r\n * French translation for FileItem component\r\n */\r\nexport const FileItemFrench: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Le nom: `,\r\n        size: \"Le taille: \",\r\n        type: \"Le type: \"\r\n    },\r\n    status: {\r\n        preparing:\"préparer\",\r\n        uploading: \"En cours\",\r\n        success: \"Succès\",\r\n        valid: \"Valide\",\r\n        denied: \"Refusé\",\r\n        error: \"Erreur\",\r\n        aborted:\"Interrompu\"\r\n    },\r\n}\r\n/**\r\n * French translation for Validation Errors\r\n */\r\n export const ValidateErrorFrench: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Le fichier est très volumineux. Le tam. le maximum est de ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Type de fichier illégal `,\r\n    maxFileCount: (maxFiles) => `Limite de fichiers atteinte (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneEnglish: LocalLabels = {\r\n    defaultLabel: \"Drop your files here\",\r\n    uploadingMessage: (amountOfFiles) => { return `Uploading ${amountOfFiles} files`; },\r\n    uploadFinished: (uploaded, rejected) => `Uploaded files: ${uploaded}, Rejected files: ${rejected}`,\r\n    noFilesMessage: `There is no missing valid file to upload`,\r\n    footer: {\r\n        acceptAll: `All file types accepted`,\r\n        acceptCustom: (accept) => `Allowed types: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Upload files\",\r\n        maxSizeMessage: (maxFileSize) => `Max file size: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Files ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"File was successfuly uploaded\",\r\n    fakeUploadError: \"Error on uploading. Please try again later.\",\r\n}\r\n\r\n/**\r\n * English translation for FileItem component\r\n */\r\nexport const FileItemEnglish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Name: `,\r\n        size: \"Size: \",\r\n        type: \"Type: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparing\",\r\n        uploading: \"Uploading\",\r\n        success: \"Success\",\r\n        valid: \"Valid\",\r\n        denied: \"Not valid\",\r\n        error: \"Error\",\r\n        aborted:\"Aborted\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorEnglish: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `File is too big. Max file size allowed is ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `File type is not allowed`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Max amount of files (${maxFiles}) has been reached`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Spanish translation for Dropzone component\r\n */\r\nexport const DropzoneSpanish: LocalLabels = {\r\n    defaultLabel: \"Suelta tus archivos aquí\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Subiendo ${amountOfFiles} archivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Archivos subidos: ${uploaded}, Archivos rechazados: ${rejected}`,\r\n    noFilesMessage: `No hay archivos válidos pendientes por subir`,\r\n    footer: {\r\n        acceptAll: `Todos los tipos de archivo aceptados`,\r\n        acceptCustom: (accept) => `Tipo(s) de archivo permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Subir\",\r\n        maxSizeMessage: (maxFileSize) => `Tam. máximo ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Archivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"El archivo se subió correctamente\",\r\n    fakeUploadError: \"Error al subir el archivo\",\r\n}\r\n\r\n/**\r\n * Spanish translation for FileItem component\r\n */\r\nexport const FileItemSpanish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nombre: `,\r\n        size: \"Tamaño: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Subiendo\",\r\n        success: \"Éxito\",\r\n        valid: \"Válido\",\r\n        denied: \"No válido\",\r\n        error: \"Error\",\r\n        aborted: \"Anulado\"\r\n    },\r\n}\r\n/**\r\n * Spanish translation for Validation Errors\r\n */\r\nexport const ValidateErrorSpanish: LocalLabels = {\r\n    maxSizeError: (maxSize) => `El archivo es muy grande. El tam. máximo es ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo de archivo no permitido`,\r\n    maxFileCount: (maxFiles) => `Cantidad máxima de archivos (${maxFiles}) alcanzada`\r\n}\r\n","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Russian translation for Dropzone component\r\n */\r\nexport const DropzoneRussian: LocalLabels = {\r\n    defaultLabel: \"Перетащите сюда свои файлы.\",\r\n    uploadingMessage: (amountOfFiles) => { return `Выгрузка ${amountOfFiles} файлов`; },\r\n    uploadFinished: (uploaded, rejected) => `Загружено файлов: ${uploaded}, отклоненных файлов: ${rejected}`,\r\n    noFilesMessage: `Действительный файл не отсутствует для загрузки`,\r\n    footer: {\r\n        acceptAll: `Принимаются все типы файлов `,\r\n        acceptCustom: (accept) => `Допустимые типы: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Отправить\",\r\n        maxSizeMessage: (maxFileSize) => `макс размер: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Файлы ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Файл был успешно загружен\",\r\n    fakeUploadError: \"Ошибка при загрузке\",\r\n}\r\n\r\n/**\r\n * Russian translation for FileItem component\r\n *\r\n */\r\nexport const FileItemRussian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Имя: `,\r\n        size: \"Размер: \",\r\n        type: \"Tип: \"\r\n    },\r\n    status: {\r\n        preparing:\"подготовка\",\r\n        uploading: \"Загрузка\",\r\n        success: \"успех\",\r\n        valid: \"годный\",\r\n        denied: \"выкинутый\",\r\n        error: \"ошибка\",\r\n        aborted:\"прерванный\"\r\n    },\r\n}\r\n\r\n/**\r\n * Russian translation for Validation Errors\r\n */\r\nexport const ValidateErrorRussian: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `Файл слишком большой. Максимально допустимый размер файла - ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Тип файла не разрешен`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Достигнуто максимальное количество файлов (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Portuguese translation for Dropzone\r\n */\r\nexport const DropzonePortuguese: LocalLabels = {\r\n    defaultLabel: \"Solte seus arquivos aqui \",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Enviando ${amountOfFiles} arquivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Arquivos enviados: ${uploaded}, Arquivos rejeitados: ${rejected}`,\r\n    noFilesMessage: `Nenhum arquivo válido está faltando para enviar`,\r\n    footer: {\r\n        acceptAll: `Todos os tipos de arquivo são aceitos`,\r\n        acceptCustom: (accept) => `Tipos permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Enviar\",\r\n        maxSizeMessage: (maxFileSize) => `Tamanho máximo: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Arquivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"O arquivo foi enviado com sucesso\",\r\n    fakeUploadError: \"Erro ao enviar\",\r\n}\r\n\r\n\r\n/**\r\n * Portuguese translation for FileItem component\r\n */\r\nexport const FileItemPortuguese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Tamanho: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Enviando\",\r\n        success: \"Êxito\",\r\n        valid: \"válido\",\r\n        denied: \"Negado\",\r\n        error: \"Erro\",\r\n        aborted:\"Abortado\"\r\n    },\r\n}\r\n/**\r\n * Portuguese translation for Validation Errors\r\n */\r\n export const ValidateErrorPortuguese: LocalLabels = {\r\n    maxSizeError: (maxSize) => `O arquivo é muito grande. O tamanho máximo de arquivo permitido é ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `O tipo de arquivo não é permitido `,\r\n    maxFileCount: (maxFiles) => `Quantidade máxima de arquivos (${maxFiles}) alcançada`\r\n}","import { LocalLabels } from \"../../types\";\r\nimport { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneSimplifiedChinese: LocalLabels = {\r\n    defaultLabel: \"将您的文件放在这里\",\r\n    uploadingMessage: (amountOfFiles) => { return `上传 ${amountOfFiles} 个文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上传文件:${uploaded},拒绝文件:${rejected}`,\r\n    noFilesMessage: `没有缺少要加载的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件类型`,\r\n        acceptCustom: (accept) => `允许的类型: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上传文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `文档 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上传\",\r\n    fakeUploadError: \"上传时出错\",\r\n}\r\n\r\n/**\r\n * Chinnese translation for FileItem component\r\n */\r\nexport const FileItemSimplifiedChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文档名称: `,\r\n        size: \"尺寸: \",\r\n        type: \"文件类型: \"\r\n    },\r\n    status: {\r\n        preparing:\"预加载\",\r\n        uploading: \"上传\",\r\n        success: \"成功\",\r\n        valid: \"接受的文件\",\r\n        denied: \"被拒绝的文件\",\r\n        error: \"错误\",\r\n        aborted:\"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorSimplifiedChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允许的最大文件大小为 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件类型不允许`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已达到最大文件数 (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneTraditionalChinese: LocalLabels = {\r\n    defaultLabel: \"把你的文件放在這裡 \",\r\n    uploadingMessage: (amountOfFiles) => { return `上傳${amountOfFiles}個文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上傳文件: ${uploaded}, 拒絕的文件:${rejected}`,\r\n    noFilesMessage: `沒有缺少要上傳的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件類型`,\r\n        acceptCustom: (accept) => `允許的類型:${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上傳文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => ` 文件 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上傳\",\r\n    fakeUploadError: \"上傳時出錯\",\r\n}\r\n\r\n/**\r\n * Chinese translation for FileItem component\r\n */\r\nexport const FileItemTraditionalChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文檔名稱: `,\r\n        size: \"文件大小: \",\r\n        type: \"文件類型: \"\r\n    },\r\n    status: {\r\n        preparing: \"預加載\",\r\n        uploading: \"上傳\",\r\n        success: \"成功\",\r\n        valid: \"有效文件\",\r\n        denied: \"無效文件\",\r\n        error: \"錯誤\",\r\n        aborted: \"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorTraditionalChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允許的最大文件大小為 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件類型不允許`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已達到最大文件數 (${maxFiles})`\r\n}","import { FileItemRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"../types\";\r\nimport { FileItemEnglish } from \"./English/localization.english\";\r\nimport { FileItemFrench } from \"./French/localization.french\";\r\nimport { FileItemPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { FileItemSpanish } from \"./Spanish/localization.spanish\";\r\nimport { FileItemSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { FileItemTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { FileItemItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const FileItemLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": FileItemSpanish,\r\n    \"EN-en\": FileItemEnglish,\r\n    \"FR-fr\": FileItemFrench,\r\n    \"IT-it\": FileItemItalian,\r\n    \"PT-pt\": FileItemPortuguese,\r\n    \"RU-ru\": FileItemRussian,\r\n    \"ZH-cn\": FileItemSimplifiedChinese,\r\n    \"ZH-hk\": FileItemTraditionalChinese\r\n}\r\n\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const FileItemLocalizerSelector = (local?: Localization): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return FileItemLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return FileItemLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return FileItemLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return FileItemLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return FileItemLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return FileItemLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return FileItemLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return FileItemLocalizer[\"ZH-hk\"];\r\n        default: return FileItemLocalizer[\"EN-en\"];\r\n    }\r\n}","import { DropzoneRussian } from \"./Russian/localization.russian\";\r\nimport { DropzoneEnglish } from \"./English/localization.english\";\r\nimport { DropzoneFrench } from \"./French/localization.french\";\r\nimport { DropzonePortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { DropzoneSpanish } from \"./Spanish/localization.spanish\";\r\nimport { DropzoneSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { DropzoneTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { DropzoneItalian } from \"./Italian/localization.italian\";\r\nimport { ComponentLocalizer, Localization, LocalLabels } from \"../types\";\r\n\r\nexport const DropzoneLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": DropzoneSpanish,\r\n    \"EN-en\": DropzoneEnglish,\r\n    \"FR-fr\": DropzoneFrench,\r\n    \"IT-it\": DropzoneItalian,\r\n    \"PT-pt\": DropzonePortuguese,\r\n    \"RU-ru\": DropzoneRussian,\r\n    \"ZH-cn\": DropzoneSimplifiedChinese,\r\n    \"ZH-hk\": DropzoneTraditionalChinese\r\n\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const DropzoneLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return DropzoneLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return DropzoneLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return DropzoneLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return DropzoneLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return DropzoneLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return DropzoneLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return DropzoneLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return DropzoneLocalizer[\"ZH-hk\"];\r\n        default: return DropzoneLocalizer[\"EN-en\"];\r\n    }\r\n}","import { ValidateErrorRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"./../types\";\r\nimport { ValidateErrorEnglish } from \"./English/localization.english\";\r\nimport { ValidateErrorFrench } from \"./French/localization.french\";\r\nimport { ValidateErrorPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { ValidateErrorSpanish } from \"./Spanish/localization.spanish\";\r\nimport { ValidateErrorSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { ValidateErrorTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { ValidateErrorItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const ValidateErrorLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": ValidateErrorSpanish,\r\n    \"EN-en\": ValidateErrorEnglish,\r\n    \"FR-fr\": ValidateErrorFrench,\r\n    \"IT-it\": ValidateErrorItalian,\r\n    \"PT-pt\": ValidateErrorPortuguese,\r\n    \"RU-ru\": ValidateErrorRussian,\r\n    \"ZH-cn\": ValidateErrorSimplifiedChinese,\r\n    \"ZH-hk\": ValidateErrorTraditionalChinese,\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const ValidateErrorLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    if (!local || ![\"ES-es\", \"EN-en\", \"FR-fr\", \"IT-it\", \"PT-pt\", \"RU-ru\", \"ZH-cn\", \"ZH-hk\"].includes(local)) {\r\n        return ValidateErrorLocalizer[\"EN-en\"];\r\n    }\r\n    return ValidateErrorLocalizer[local];\r\n}","export const sevenzip = \"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png\";\r\nexport const aac = \"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png\";\r\nexport const abw = \"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png\";\r\nexport const accdb = \"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png\";\r\nexport const avi = \"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png\";\r\nexport const azw = \"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png\";\r\nexport const bmp = \"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png\";\r\nexport const bz = \"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png\";\r\nexport const bz2 = \"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png\";\r\nexport const c = \"https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png\";\r\nexport const cda = \"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png\";\r\nexport const csh = \"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png\";\r\nexport const css = \"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png\";\r\nexport const csv = \"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png\";\r\nexport const docx = \"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png\";\r\nexport const docx2 = \"https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png\";\r\nexport const drawio = \"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png\";\r\nexport const dw = \"https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png\";\r\nexport const eml = \"https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png\";\r\nexport const eot = \"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png\";\r\nexport const eps = \"https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png\";\r\nexport const epub = \"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png\";\r\nexport const freearc = \"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png\";\r\nexport const gif = \"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png\";\r\nexport const gzip = \"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png\";\r\nexport const html = \"https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png\";\r\nexport const icalendar = \"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png\";\r\nexport const ind = \"https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png\";\r\nexport const ini = \"https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png\";\r\nexport const java = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const jar = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const javascript = \"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png\";\r\nexport const jpeg = \"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png\";\r\nexport const jsf = \"https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png\";\r\nexport const json = \"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png\";\r\nexport const jsonld = \"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png\";\r\nexport const midi = \"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png\";\r\nexport const mov = \"https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png\";\r\nexport const mp3 = \"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png\";\r\nexport const mp4 = \"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png\";\r\nexport const mpeg = \"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png\";\r\nexport const mpkg = \"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png\";\r\nexport const octet = \"https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png\";\r\nexport const odp = \"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png\";\r\nexport const ods = \"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png\";\r\nexport const odt = \"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png\";\r\nexport const oga = \"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png\";\r\nexport const ogv = \"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png\";\r\nexport const ogx = \"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png\";\r\nexport const opus = \"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png\";\r\nexport const otf = \"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png\";\r\nexport const pdf = \"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png\";\r\nexport const php = \"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png\";\r\nexport const png = \"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png\";\r\nexport const pptx = \"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png\";\r\nexport const pptx2 = \"https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png\";\r\nexport const proj = \"https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png\";\r\nexport const psd = \"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png\";\r\nexport const pst = \"https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png\";\r\nexport const publisher = \"https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png\";\r\nexport const python = \"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png\";\r\nexport const tar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const rar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const react = \"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png\";\r\nexport const richtextformat = \"https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png\";\r\nexport const rtf = \"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png\";\r\nexport const sass = \"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png\";\r\nexport const settings = \"https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png\";\r\nexport const sh = \"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png\";\r\nexport const swf = \"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png\";\r\nexport const text = \"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png\";\r\nexport const tiff = \"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png\";\r\nexport const ttf = \"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png\";\r\nexport const typescript = \"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png\";\r\nexport const url = \"https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png\";\r\nexport const vsd = \"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png\";\r\nexport const vue = \"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png\";\r\nexport const wav = \"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png\";\r\nexport const webm = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const weba = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const webp = \"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png\";\r\nexport const wma = \"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png\";\r\nexport const wmv = \"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png\";\r\nexport const woff = \"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png\";\r\nexport const xlsx = \"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png\";\r\nexport const xlsx2 = \"https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png\";\r\nexport const xml = \"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png\";\r\nexport const xul = \"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png\";\r\nexport const zip = \"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png\";\r\n","/**\r\n * Looks for the first file extension\r\n * @param fileName file name\r\n * @returns the file name extension\r\n */\r\n export const getExt = (fileName: string): string => {\r\n    const re = /(?:\\.([^.]+))?$/;\r\n    const result = re.exec(fileName);\r\n    if (result) {\r\n        return result[1];\r\n    } else {\r\n        return \"\";\r\n    }\r\n\r\n};","import {\r\n    aac, abw, accdb, avi, azw,\r\n    bmp, bz, bz2, cda,\r\n    csh, css, csv,\r\n    docx, drawio,\r\n    eot, epub,\r\n    freearc, gif, gzip,\r\n    html, icalendar,\r\n    jar, java, javascript, jpeg, json, jsonld,\r\n    midi, mp3, mp4, mpeg, mpkg,\r\n    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,\r\n    pdf, php, png, pptx, psd, python,\r\n    rar, react, rtf,\r\n    sass, sevenzip, sh, swf,\r\n    tar, text, tiff, ttf, typescript,\r\n    vsd, vue,\r\n    wav, weba, webm, webp, wma, wmv, woff,\r\n    xlsx, xml, xul,\r\n    zip\r\n} from \"./icons\";\r\nimport { getExt } from \"../utils/getExt\";\r\nimport { IconsMap } from \"../types\";\r\n\r\nconst DEF_GEN_MIME: keyof IconsMap = \"octet\";\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const audioSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"aac\": return \"aac\";\r\n        case \"midi\": return \"midi\";\r\n        case \"x-midi\": return \"midi\";\r\n        case \"mpeg\": return \"mpeg\";//mp3\r\n        case \"ogg\": return \"oga\";\r\n        case \"opus\": return \"opus\";\r\n        case \"wav\": return \"wav\";\r\n        case \"webm\": return \"webm\";\r\n        //case \"3gpp\": return \"threegp\";\r\n        //case \"3gpp2\": return \"threegp\";\r\n        //case \"mp3\": return \"mp3\";\r\n        case \"wma\": return \"wma\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\nexport const textSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"css\": return \"css\";\r\n        case \"csv\": return \"csv\";\r\n        case \"html\": return \"html\";\r\n        case \"calendar\": return \"icalendar\";\r\n        case \"javascript\": return \"javascript\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"plain\": return \"text\";\r\n        case \"xml\": return \"xml\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const imageSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"bmp\": return \"bmp\";\r\n        case \"gif\": return \"gif\";\r\n        // case \"vnd.microsoft.icon\": return \"ico\";\r\n        //case \"ico\": return \"ico\";\r\n        case \"jpg\": return \"jpeg\";\r\n        case \"jpeg\": return \"jpeg\";\r\n        case \"png\": return \"png\";\r\n        //case \"svg+xml\": return \"svg\";\r\n        //case \"svg\": return \"svg\";\r\n        case \"tiff\": return \"tiff\";\r\n        case \"webp\": return \"webp\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const fontSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"otf\": return \"otf\";\r\n        case \"ttf\": return \"ttf\";\r\n        case \"woff\": return \"woff\";\r\n        case \"woff2\": return \"woff\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\n\r\nexport const videoSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-msvideo\": return \"avi\";\r\n        case \"msvideo\": return \"avi\";\r\n        case \"avi\": return \"avi\";\r\n        case \"mp4\": return \"mp4\";\r\n        case \"mpeg\": return \"mpeg\";\r\n        case \"ogg\": return \"ogv\";\r\n        case \"mp2t\": return \"mp2t\";\r\n        case \"wmv\": return \"wmv\";\r\n\r\n        case \"webm\": return \"webm\";\r\n        // case \"3gpp\": return \"threegp\";\r\n        // case \"3gpp2\": return \"threegp2\";\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const applicationSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-abiword\": return \"abw\";\r\n        case \"abiword\": return \"abw\";\r\n        case \"x-freearc\": return \"arc\";\r\n        case \"freearc\": return \"arc\";\r\n        case \"vnd.amazon.ebook\": return \"azw\";\r\n        case \"octet-stream\": return \"octet\";\r\n        case \"x-bzip\": return \"bz\";\r\n        case \"x-bzip2\": return \"bz2\";\r\n        case \"bzip\": return \"bz\";\r\n        case \"bzip2\": return \"bz2\";\r\n        case \"x-cdf\": return \"cda\";\r\n        case \"msaccess\": return \"accdb\";\r\n        case \"csh\": return \"csh\";\r\n        case \"x-csh\": return \"csh\";\r\n        case \"vnd.ms-fontobject\": return \"eot\";\r\n        case \"epub+zip\": return \"epub\";\r\n        case \"gzip\": return \"gzip\";\r\n        case \"java-archive\": return \"jar\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"json\": return \"json\";\r\n        case \"ld+json\": return \"jsonld\";\r\n        case \"vnd.apple.installer+xml\": return \"mpkg\";\r\n        case \"ogg\": return \"ogx\";\r\n        case \"vnd.rar\": return \"rar\";\r\n        case \"rtf\": return \"rtf\";\r\n        case \"x-sh\": return \"sh\";\r\n        case \"sh\": return \"sh\";\r\n        case \"x-shockwave-flash\": return \"swf\";\r\n        case \"x-tar\": return \"tar\";\r\n        case \"x-httpd-php\": return \"php\";\r\n        case \"vnd.visio\": return \"vsd\";\r\n        case \"xhtml+xml\": return \"xhtml\";\r\n        case \"xml\": return \"xml\";\r\n        case \"vnd.mozilla.xul+xml\": return \"xul\";\r\n        case \"vnd.openxmlformats-officedocument.wordprocessingml.document\": return \"docx\";\r\n        case \"msword\": return \"docx\";\r\n        case \"vnd.openxmlformats-officedocument.spreadsheetml.sheet\": return \"xlsx\";\r\n        case \"vnd.openxmlformats-officedocument.presentationml.presentation\": return \"pptx\";\r\n        case \"vnd.ms-powerpoint\": return \"pptx\";\r\n        case \"vnd.oasis.opendocument.presentation\": return \"odp\";\r\n        case \"vnd.oasis.opendocument.text\": return \"odt\";\r\n        case \"vnd.oasis.opendocument.spreadsheet\": return \"ods\";\r\n        case \"zip\": return \"zip\";\r\n        case \"x-zip-compressed\": return \"zip\";\r\n        case \"pdf\": return \"pdf\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mime type the mime type given belongs to\r\n * @param mimeType mime type to be searched \r\n * @returns the generic type, \r\nif not found it return \"octet\" that means generic binary file\r\n */\r\nexport const mimeSelector = (mimeType?: string): keyof IconsMap => {\r\n    // let genericMime: string | undefined = undefined;\r\n    if (!mimeType || !mimeType.includes(\"/\")) {\r\n        return DEF_GEN_MIME;\r\n    }\r\n    let headerMime = mimeType.split(\"/\")[0];\r\n    let tailMime = mimeType.split(\"/\")[1];\r\n    /**\r\n     * Every mimetype that \r\n     * starts with: \"application/....\"\r\n     */\r\n\r\n    switch (headerMime) {\r\n        case \"application\": return applicationSelector(tailMime);\r\n        case \"audio\": return audioSelector(tailMime);\r\n        case \"video\": return videoSelector(tailMime);\r\n        case \"text\": return textSelector(tailMime);\r\n        case \"image\": return imageSelector(tailMime);\r\n        case \"font\": return fontSelector(tailMime);\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mapped extension\r\n * the given exension belongs to\r\n * \r\n * @param extension \r\n * @returns \r\n */\r\nexport const extensionSelector = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"octet\";\r\n\r\n    if (extension && extension !== \"\") {\r\n        if (extension.includes(\"zip\") || extension.includes(\"rar\")) {\r\n            genericMime = \"zip\";\r\n        } else if (extension.includes(\"doc\")) {\r\n            genericMime = \"docx\";\r\n        } else if (extension.includes(\"xls\")) {\r\n            genericMime = \"xlsx\";\r\n        } else if (extension.includes(\"drawio\")) {\r\n            genericMime = \"drawio\";\r\n        } else if (extension.includes(\"psd\")) {\r\n            genericMime = \"psd\";\r\n        } else if (extension.includes(\"csv\")) {\r\n            genericMime = \"csv\";\r\n        } else if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"sass\" || extension === \"scss\") {\r\n            genericMime = \"sass\";\r\n        }\r\n    }\r\n    return genericMime;\r\n\r\n}\r\n/**\r\n * Chack for extention whether the file is code os not\r\n * @param extension \r\n * @returns \r\n */\r\nexport const checkIsCode = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"text\";\r\n    if (extension && extension !== \"\") {\r\n        if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\" || extension === \"tsx\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"js\") {\r\n            genericMime = \"javascript\";\r\n        } else if (extension === \"xml\") {\r\n            genericMime = \"xml\";\r\n        } else if (extension === \"php\") {\r\n            genericMime = \"php\";\r\n        }\r\n    }\r\n    return genericMime;\r\n}\r\n\r\n/**\r\n * Looks for a suitable file icon\r\n * If not found, returns octet-stream url\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico\r\n */\r\nexport const getURLFileIco = (\r\n    file: File | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"fallBack\";\r\n    //if not file, return octet\r\n    if (!file) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(file.type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(file.name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\n/**\r\n * Looks for a suitable file icon\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico, if not found, turns octet-stream url\r\n */\r\nexport const getURLFileIcoFromNameAndType = (\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"octet\";\r\n    //if not nam and type, return octet\r\n    if (!name) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\ninterface ResultFileIco {\r\n    url: string;\r\n    mimeResume: keyof IconsMap;\r\n}\r\n/**\r\n * set of registered mimes on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\r\n * \r\n */\r\ninterface MimeSelector {\r\n    [mime: string]: string;\r\n}\r\n\r\nconst mimeUrlList: MimeSelector = {\r\n    aac: aac,\r\n    accdb: accdb,\r\n    abw: abw,\r\n    arc: freearc,\r\n    avi: avi,\r\n    azw: azw,\r\n    octet: octet,\r\n    bmp: bmp,\r\n    bz: bz,\r\n    bz2: bz2,\r\n    cda: cda,\r\n    csh: csh,\r\n    css: css,\r\n    csv: csv,\r\n    docx: docx,\r\n    drawio: drawio,\r\n    eot: eot,\r\n    epub: epub,\r\n    gzip: gzip,\r\n    gif: gif,\r\n    html: html,\r\n    //ico: ico,\r\n    icalendar: icalendar,\r\n    jar: jar,\r\n    jpeg: jpeg,\r\n    javascript: javascript,\r\n    json: json,\r\n    jsonld: jsonld,\r\n    midi: midi,\r\n    //  js: js,\r\n    mp3: mp3,\r\n    mp4: mp4,\r\n    mpeg: mpeg,\r\n    mpkg: mpkg,\r\n    mp2t: octet,\r\n    odp: odp,\r\n    ods: ods,\r\n    odt: odt,\r\n    oga: oga,\r\n    ogv: ogv,\r\n    ogx: ogx,\r\n    opus: opus,\r\n    otf: otf,\r\n    png: png,\r\n    pdf: pdf,\r\n    php: php,\r\n    pptx: pptx,\r\n    psd: psd,\r\n    rar: rar,\r\n    rtf: rtf,\r\n    sass: sass,\r\n    sh: sh,\r\n    //svg: svg,\r\n    swf: swf,\r\n    tar: tar,\r\n    tiff: tiff,\r\n    ttf: ttf,\r\n    //ts: ts,\r\n    typescript: typescript,\r\n    text: text,\r\n    vsd: vsd,\r\n    wav: wav,\r\n    weba: weba,\r\n    webm: webm,\r\n    webp: webp,\r\n    woff: woff,\r\n    wma: wma,\r\n    wmv: wmv,\r\n    xhtml: html,\r\n    xlsx: xlsx,\r\n    xml: xml,\r\n    xul: xul,\r\n    zip: zip,\r\n    // threegp: threegp,\r\n    sevenzip: sevenzip,\r\n    python: python,\r\n    java: java,\r\n    react: react,\r\n    vue: vue,\r\n\r\n\r\n    fallBack: octet,\r\n};","\r\nimport { UPLOADSTATUS, ServerResponse } from \"../types\";\r\n\r\n/**\r\n * ExtFile === \"Extended File\".\r\n * This object \"extends\" the File Object\r\n */\r\nexport declare type ExtFile = {\r\n    /** \r\n     * An identifier for the extFile\r\n     */\r\n    id?: number | string | undefined;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    size?: number;\r\n    /**\r\n     * a flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    errors?: string[];\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    uploadMessage?: string;\r\n    /**\r\n     * Link, URI or string representation of an image\r\n     */\r\n    imageUrl?: string;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    xhr?: XMLHttpRequest;\r\n    /**\r\n     * The current percentage of upload progress.\r\n     * This value will have a higher priority over the upload progress value calculated inside the component.\r\n     * @default undefined\r\n     */\r\n    progress?: number;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when files are uploaded individually\r\n     */\r\n    extraUploadData?: Record<string, any>;\r\n    /**\r\n     * Any kind of extra data that could be needed.\r\n     */\r\n    extraData?: Object;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    serverResponse?: ServerResponse;\r\n    /**\r\n     * The url to be used to perform a GET request in order to download the\r\n        file. If defined, the download icon will be shown.\r\n     */\r\n    downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    videoUrl?: string;\r\n}\r\n\r\n/**\r\n * A class definition for ExtFile.\r\n * This class has the purpose to allow the creation of instances\r\n * of an ExtFile for performing complex operations that cannot be\r\n * accomplished just by using the ExtFile type.\r\n * For instance, it can help in changing the value of some attributes\r\n * across different scopes thanks to memory reference.\r\n */\r\nexport class ExtFileInstance {\r\n    /**\r\n     * An identifier for the extFile\r\n     */\r\n    public id?: number | string;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    public file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public size?: number;\r\n\r\n    public imageUrl?: string;\r\n    /**\r\n     * A flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    public valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    public errors?: string[];\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    public uploadMessage?: string;\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    public uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * The current upload progress\r\n     */\r\n    public progress?: number;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    public xhr?: XMLHttpRequest;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     */\r\n    public extraData?: Record<string, any>;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when filesare uploaded individually\r\n     */\r\n    public extraUploadData?: Record<string, any>;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    public serverResponse?: ServerResponse;\r\n    /**\r\n     * Url to perform a GET request in order to download the file.\r\n     * This  action is triggered when download button is clicked or pressed.\r\n     * In case onDownload prop is given\r\n     */\r\n    public downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    public videoUrl?: string;\r\n\r\n    constructor(extFile: ExtFile) {\r\n        const {\r\n            id,\r\n            file,\r\n            name,\r\n            size,\r\n            type,\r\n            imageUrl,\r\n            valid,\r\n            errors,\r\n            uploadMessage,\r\n            uploadStatus,\r\n            progress,\r\n            xhr,\r\n            extraData,\r\n            extraUploadData,\r\n            serverResponse,\r\n            downloadUrl, videoUrl\r\n        } = extFile;\r\n\r\n        this.id = id;\r\n        this.file = file;\r\n        this.name = name;\r\n        this.size = size;\r\n        this.type = type;\r\n        this.imageUrl = imageUrl;\r\n\r\n        this.valid = valid;\r\n        this.errors = errors;\r\n        this.uploadStatus = uploadStatus;\r\n        this.uploadMessage = uploadMessage;\r\n        this.progress = progress;\r\n        this.xhr = xhr;\r\n\r\n        this.extraData = extraData;\r\n        this.extraUploadData = extraUploadData;\r\n        this.serverResponse = serverResponse;\r\n\r\n        this.downloadUrl = downloadUrl;\r\n        this.videoUrl = videoUrl;\r\n    }\r\n    /**\r\n     * method under construction\r\n     */\r\n    /*  private static kamuiFile() {\r\n \r\n     }\r\n  */\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object\r\n     * @param extFileInstance the instance of ExtFile\r\n     * @returns an ExtFile object\r\n     */\r\n    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {\r\n        //console.log(\"before toExtFile()\", extFileInstance);\r\n\r\n        let extFileClone: ExtFile = {}; // the new empty object\r\n        const extFileInstanceKeys = Object.keys(extFileInstance) as [keyof ExtFile];\r\n        const extFileInstanceValues = Object.values(extFileInstance) as Array<ExtFile[keyof ExtFile]>;\r\n        // let's copy all user properties into it\r\n        for (let i = 0; i < extFileInstanceValues.length; i++) {\r\n            const currentValue: ExtFile[keyof ExtFile] = extFileInstanceValues[i];\r\n\r\n\r\n            const currKey = extFileInstanceKeys[i];\r\n            if (currentValue !== undefined) {\r\n\r\n                extFileClone[currKey] = currentValue as ExtFile[keyof ExtFile] as never;\r\n            }\r\n        }\r\n        //console.log(\"after toExtFile()\", extFileClone);\r\n        //console.log(\"current extFileClone keys\",Object.keys( extFileClone).length);\r\n        return extFileClone;\r\n    }\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.\r\n     * @returns an ExtFile object\r\n     */\r\n    toExtFile(): ExtFile {\r\n        return ExtFileInstance.toExtFile(this);\r\n    }\r\n\r\n  /*   static mock = (id?: number): ExtFileInstance => {\r\n        return new ExtFileInstance(\r\n            extFileMock(id)\r\n        );\r\n    } */\r\n}\r\n\r\n\r\n","import { ExtFileInstance, ExtFile } from \"./ExtFile\";\r\n\r\nexport class ExtFileManager {\r\n    private static nextId: number = 0;\r\n    static fileLists: Record<number | string, ExtFileInstance[] | undefined> = {};\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    public static getNextId(): number {\r\n        ExtFileManager.nextId++;\r\n        return ExtFileManager.nextId;\r\n    }\r\n    /**\r\n     * Updates a dui file list given an id\r\n     * @param id id of the fileList\r\n     * @param extFiles list of DuiFiles forinitializing the array\r\n     * @returns the id of the fileList\r\n     */\r\n    public static setFileList(\r\n        id: number | string | undefined,\r\n        extFilesInstances: ExtFileInstance[]\r\n    ): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            ExtFileManager.fileLists[id] = [...extFilesInstances];\r\n\r\n            return id;\r\n        }\r\n\r\n    }\r\n    /**\r\n     * Generates a new ID\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static createFileListMap(): number {\r\n        const nextId: number = ExtFileManager.getNextId();\r\n        ExtFileManager.fileLists[nextId] = [];\r\n\r\n        return nextId;\r\n    }\r\n\r\n    /**\r\n     * Deletes a list map\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static removeFileListMap(id?: number | string): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            try {\r\n                ExtFileManager.fileLists[id] = undefined;\r\n                return id;\r\n            } catch (error) {\r\n                if (process.env.NODE_ENV === \"development\")\r\n                    console.error(\"Error on remove\", error);\r\n                return 0;\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * \r\n     * @param id the id of the dropzone\r\n     * @returns \r\n     */\r\n    public static getExtFileInstanceList(\r\n        id?: number | string\r\n    ): ExtFileInstance[] | undefined {\r\n        try {\r\n            if (!id) {\r\n                return undefined;\r\n            }\r\n            return ExtFileManager.fileLists[id];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"Error on getExtFileInstanceList\", error);\r\n            return undefined;\r\n        }\r\n    }\r\n    /**\r\n     * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n     * Then sets on preparing stage all files according to the following creiteria:\r\n     * If theuploadStatus is diferent than \"sucess\" AND\r\n     * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n     * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n     * @param dropzoneId the id to access the right list\r\n     * @param localFiles the list of extFiles\r\n     * @param validateFiles flag that indicates that validation is active or o¿not\r\n     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n     * @returns a list of ExtFileInstance\r\n     */\r\n    public static setFileListMapPreparing(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n        //console.log(\"setFileListMapPreparing before if\", dropzoneId, localFiles, cleanOnUpload);\r\n\r\n        if (!(typeof dropzoneId === \"number\" || typeof dropzoneId === \"string\")) return undefined;\r\n\r\n        //console.log(\"setFileListMapPreparing before try\", localFiles, cleanOnUpload);\r\n        try {\r\n\r\n            let resultExtList: ExtFileInstance[] = [];\r\n\r\n            //initializes the extFileLInstance list\r\n            let temLocalFiles: ExtFile[] = [...localFiles];\r\n\r\n            //remove non valids if cleanOnUpload is true and validateFiles is also true\r\n            if (cleanOnUpload && validateFiles) {\r\n                // clean on Upload is true, so non valid files must be removed\r\n                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)\r\n                //console.log(\"temLocalFiles filter\", temLocalFiles);\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing after remove non valids\", temLocalFiles);\r\n\r\n            if (validateFiles) {\r\n                // validation flag was set to true, so only valid=true files will be set to \"preparing\"\r\n\r\n                //so, only valid files was kept in the temLocalfiles array\r\n                //now set the preparing state only for files with uploadStatus !== \"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\" && extFile.valid) {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            } else {\r\n                // all files will be set to \"preparing\" whether the valid value\r\n                // except those files with uploadStatus ===\"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\") {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing result\", temLocalFiles);\r\n\r\n            //converto to Object instances\r\n            resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));\r\n            //console.log(\"setFileListMapPreparing RESULT resultExtList\", resultExtList);\r\n\r\n            const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);\r\n            //console.log(\"setFileListMapPreparing RESULT resultSet\", resultSet);\r\n\r\n            return resultExtList;\r\n            // return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"setFileListMapPreparing Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    }\r\n\r\n\r\n\r\n    /**\r\n * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n * Then sets on preparing stage all files according to the following creiteria:\r\n * If theuploadStatus is diferent than \"sucess\" AND\r\n * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n * @param dropzoneId the id to access the right list\r\n * @param localFiles the list of extFiles\r\n * @param validateFiles flag that indicates that validation is active or o¿not\r\n * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n * @returns a list of ExtFileInstance\r\n */\r\n    public static setFileListMapPreparing2(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n\r\n        ExtFileManager.setFileList(dropzoneId, localFiles.map(F => new ExtFileInstance({ ...F, uploadStatus: \"preparing\" })));\r\n\r\n        return ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * \r\n     * @param dropzoneId \r\n     * @param index \r\n     * @param incommingDuiFile \r\n     * @returns \r\n     */\r\n    /* public static updateFileListMapPreparingById(\r\n        dropzoneId: number,\r\n        index: number,\r\n        incommingDuiFile: ExtFileInstance\r\n    ): ExtFileInstance[] | undefined {\r\n        if (!(typeof dropzoneId === \"number\") || !(typeof index === \"number\") || index > 0) return undefined;\r\n        const extFileList: ExtFileInstance[] | undefined = ExtFileManager.fileLists[dropzoneId];\r\n\r\n        if (!(extFileList && extFileList.length > 0)) return undefined;\r\n        extFileList[index]=\r\n        try {\r\n            ExtFileManager.setFileList(dropzoneId, [\r\n                ...localFiles.map(\r\n                    (x) =>\r\n                        new ExtFileInstance({ ...x, uploadStatus: \"preparing\" })\r\n                ),\r\n            ]);\r\n            return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n            console.error(\"Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    } */\r\n}","\r\n/**\r\n * A syntetic file creator.\r\n * Very useful for tests\r\n */\r\nexport abstract class SyntheticFile {\r\n    /**\r\n * \r\n * @param name the file name\r\n * @param size the file size\r\n * @param type the file type\r\n * @returns \r\n */\r\n    static createFile = (name: string, size: number, type: string) => {\r\n        const file = new File([], name, { type });\r\n        Object.defineProperty(file, \"size\", {\r\n            get() {\r\n                return size;\r\n            },\r\n        });\r\n        return file;\r\n    };\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_aac = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"acc_audio-file-with-large-name.aac\", size ? size : 3516516, \"audio/aac\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_abw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"abiword-file-with-large-name.abw\", size ? size : 3516516, \"application/x-abiword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_freearc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"freearc-file-with-large-name.arc\", size ? size : 3516516, \"application/x-freearc\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_avi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"avi-file-with-large-name.avi\", size ? size : 3516516, \"video/x-msvideo\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_azw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"amazon_kindle_ebook-file-with-large-name.azw\", size ? size : 3516516, \"application/vnd.amazon.ebook\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_octet = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"binary_octet_stream-file-with-large-name.bin\", size ? size : 3516516, \"application/octet-stream\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bmp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"bit_map-file-with-large-name.bmp\", size ? size : 3516516, \"image/bmp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip-file-with-large-name.bz\", size ? size : 3516516, \"application/x-bzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip_2-file-with-large-name.bz2\", size ? size : 3516516, \"application/x-bzip2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_cda = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"cd_audio-file-with-large-name.cda\", size ? size : 3516516, \"application/x-cdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csh\", size ? size : 3516516, \"application/x-csh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_css = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.css\", size ? size : 3516516, \"text/css\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csv\", size ? size : 3516516, \"text/csv\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_doc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.doc\", size ? size : 3516516, \"application/msword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_docx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.docx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_eot = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.eot\", size ? size : 3516516, \"application/vnd.ms-fontobject\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_epub = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.epub\", size ? size : 3516516, \"application/epub+zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gzip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gz\", size ? size : 3516516, \"application/gzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gif\", size ? size : 3516516, \"image/gif\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_htm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.htm\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_html = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.html\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ico = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ico\", size ? size : 3516516, \"image/vnd.microsoft.icon\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_icalendar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ics\", size ? size : 3516516, \"text/calendar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jar\", size ? size : 3516516, \"application/java-archive\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpeg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_js = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.js\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_json = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.json\", size ? size : 3516516, \"application/json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jsonld = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jsonld\", size ? size : 3516516, \"application/ld+json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mjs = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mjs\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp3 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp3\", size ? size : 3516516, \"audio/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp4 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp4\", size ? size : 3516516, \"video/mp4\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpeg\", size ? size : 3516516, \"video/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpkg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpkg\", size ? size : 3516516, \"application/vnd.apple.installer+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odp\", size ? size : 3516516, \"application/vnd.oasis.opendocument.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ods = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ods\", size ? size : 3516516, \"application/vnd.oasis.opendocument.spreadsheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odt\", size ? size : 3516516, \"application/vnd.oasis.opendocument.text\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_oga = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.oga\", size ? size : 3516516, \"audio/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogv\", size ? size : 3516516, \"video/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogx\", size ? size : 3516516, \"application/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_opus = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.opus\", size ? size : 3516516, \"audio/opus\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_otf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.otf\", size ? size : 3516516, \"font/otf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_png = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.png\", size ? size : 3516516, \"image/png\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pdf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pdf\", size ? size : 3516516, \"application/pdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_php = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.php\", size ? size : 3516516, \"application/x-httpd-php\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ppt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ppt\", size ? size : 3516516, \"application/vnd.ms-powerpoint\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pptx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pptx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.presentationml.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rar\", size ? size : 3516516, \"application/vnd.rar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rtf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rtf\", size ? size : 3516516, \"application/rtf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_sh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.sh\", size ? size : 3516516, \"application/x-sh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_svg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.svg\", size ? size : 3516516, \"image/svg+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_swf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.swf\", size ? size : 3516516, \"application/x-shockwave-flash\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tar\", size ? size : 3516516, \"application/x-tar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tif\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tiff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tiff\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ts = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"mp2t_video-file-with-large-name.ts\", size ? size : 3516516, \"video/mp2t\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ttf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ttf\", size ? size : 3516516, \"font/ttf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_text = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.txt\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_typescript = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"typescript-file-with-large-name.ts\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vsd = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"ms_visio-file-with-large-name.vsd\", size ? size : 3516516, \"application/vnd.visio\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_wav = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"wav_audio-file-with-large-name.wav\", size ? size : 3516516, \"audio/wav\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_weba = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_audio-file-with-large-name.weba\", size ? size : 3516516, \"audio/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_video-file-with-large-name.webm\", size ? size : 3516516, \"video/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_image-file-with-large-name.webp\", size ? size : 3516516, \"image/webp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff\", size ? size : 3516516, \"font/woff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff2\", size ? size : 3516516, \"font/woff2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xhtml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xhtml\", size ? size : 3516516, \"application/xhtml+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xlsx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xls\", size ? size : 3516516, \"application/vnd.ms-excel\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xls = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xlsx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml_txt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml_plain_text-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xul = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xul\", size ? size : 3516516, \"application/vnd.mozilla.xul+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_zip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"zip-file-with-large-name.zip\", size ? size : 3516516, \"application/zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_video-file-with-large-name.3gp\", size ? size : 3516516, \"video/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp2_video-file-with-large-name.3g2\", size ? size : 3516516, \"video/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_a = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp\", size ? size : 3516516, \"audio/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_v = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp2\", size ? size : 3516516, \"audio/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_7z = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"seven_zip-file-with-large-name.7z\", size ? size : 3516516, \"application/x-7z-compressed\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_python = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"python-file-with-large-name.py\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_java = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"java-file-with-large-name.java\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_react = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"react_jsx-file-with-large-name.jsx\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vue = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"vue-file-with-large-name.vue\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n     * Creates an array of fake (synthetic) files\r\n     * @param size the file size for all synthetic files\r\n     * @returns an array of all file icon preview supported files\r\n     */\r\n    static createFileListMiscelanious = (size?: number): File[] => {\r\n\r\n        let listFile: File[] = [];\r\n\r\n        listFile.push(SyntheticFile.create_aac(size));\r\n        listFile.push(SyntheticFile.create_abw(size));\r\n        listFile.push(SyntheticFile.create_freearc(size));\r\n        listFile.push(SyntheticFile.create_avi(size));\r\n        listFile.push(SyntheticFile.create_azw(size));\r\n        listFile.push(SyntheticFile.create_octet(size));\r\n        listFile.push(SyntheticFile.create_bmp(size));\r\n        listFile.push(SyntheticFile.create_bz(size));\r\n        listFile.push(SyntheticFile.create_bz2(size));\r\n        listFile.push(SyntheticFile.create_cda(size));\r\n        listFile.push(SyntheticFile.create_csh(size));\r\n        listFile.push(SyntheticFile.create_css(size));\r\n        listFile.push(SyntheticFile.create_csv(size));\r\n        listFile.push(SyntheticFile.create_doc(size));\r\n        listFile.push(SyntheticFile.create_docx(size));\r\n        listFile.push(SyntheticFile.create_eot(size));\r\n        listFile.push(SyntheticFile.create_epub(size));\r\n        listFile.push(SyntheticFile.create_gzip(size));\r\n        listFile.push(SyntheticFile.create_gif(size));\r\n        listFile.push(SyntheticFile.create_htm(size));\r\n        listFile.push(SyntheticFile.create_html(size));\r\n        listFile.push(SyntheticFile.create_ico(size));\r\n        listFile.push(SyntheticFile.create_icalendar(size));\r\n        listFile.push(SyntheticFile.create_jar(size));\r\n        listFile.push(SyntheticFile.create_jpeg(size));\r\n        listFile.push(SyntheticFile.create_jpg(size));\r\n        listFile.push(SyntheticFile.create_js(size));\r\n        listFile.push(SyntheticFile.create_json(size));\r\n        listFile.push(SyntheticFile.create_jsonld(size));\r\n        listFile.push(SyntheticFile.create_mid(size));\r\n        listFile.push(SyntheticFile.create_midi(size));\r\n        listFile.push(SyntheticFile.create_x_mid(size));\r\n        listFile.push(SyntheticFile.create_x_midi(size));\r\n        listFile.push(SyntheticFile.create_mjs(size));\r\n        listFile.push(SyntheticFile.create_mp3(size));\r\n        listFile.push(SyntheticFile.create_mp4(size));\r\n        listFile.push(SyntheticFile.create_mpeg(size));\r\n        listFile.push(SyntheticFile.create_mpkg(size));\r\n        listFile.push(SyntheticFile.create_odp(size));\r\n        listFile.push(SyntheticFile.create_ods(size));\r\n        listFile.push(SyntheticFile.create_odt(size));\r\n        listFile.push(SyntheticFile.create_oga(size));\r\n        listFile.push(SyntheticFile.create_ogv(size));\r\n        listFile.push(SyntheticFile.create_ogx(size));\r\n        listFile.push(SyntheticFile.create_opus(size));\r\n        listFile.push(SyntheticFile.create_otf(size));\r\n        listFile.push(SyntheticFile.create_png(size));\r\n        listFile.push(SyntheticFile.create_pdf(size));\r\n        listFile.push(SyntheticFile.create_php(size));\r\n        listFile.push(SyntheticFile.create_ppt(size));\r\n        listFile.push(SyntheticFile.create_pptx(size));\r\n        listFile.push(SyntheticFile.create_rar(size));\r\n        listFile.push(SyntheticFile.create_rtf(size));\r\n        listFile.push(SyntheticFile.create_sh(size));\r\n        listFile.push(SyntheticFile.create_svg(size));\r\n        listFile.push(SyntheticFile.create_swf(size));\r\n        listFile.push(SyntheticFile.create_tar(size));\r\n        listFile.push(SyntheticFile.create_tif(size));\r\n        listFile.push(SyntheticFile.create_tiff(size));\r\n        listFile.push(SyntheticFile.create_ts(size));\r\n        listFile.push(SyntheticFile.create_ttf(size));\r\n        listFile.push(SyntheticFile.create_text(size));\r\n        listFile.push(SyntheticFile.create_typescript(size));\r\n        listFile.push(SyntheticFile.create_vsd(size));\r\n        listFile.push(SyntheticFile.create_wav(size));\r\n        listFile.push(SyntheticFile.create_weba(size));\r\n        listFile.push(SyntheticFile.create_webm(size));\r\n        listFile.push(SyntheticFile.create_webp(size));\r\n        listFile.push(SyntheticFile.create_woff(size));\r\n        listFile.push(SyntheticFile.create_woff2(size));\r\n        listFile.push(SyntheticFile.create_xhtml(size));\r\n        listFile.push(SyntheticFile.create_xlsx(size));\r\n        listFile.push(SyntheticFile.create_xls(size));\r\n        listFile.push(SyntheticFile.create_xml(size));\r\n        listFile.push(SyntheticFile.create_xml_txt(size));\r\n        listFile.push(SyntheticFile.create_xul(size));\r\n        listFile.push(SyntheticFile.create_zip(size));\r\n        //listFile.push(SyntheticFile.create_3gp(size));\r\n        //listFile.push(SyntheticFile.create_3gp2(size));\r\n        //listFile.push(SyntheticFile.create_3gp_a(size));\r\n        //listFile.push(SyntheticFile.create_3gp_v(size));\r\n        //listFile.push(SyntheticFile.create_7z(size));\r\n        listFile.push(SyntheticFile.create_python(size));\r\n        listFile.push(SyntheticFile.create_java(size));\r\n        listFile.push(SyntheticFile.create_react(size));\r\n        listFile.push(SyntheticFile.create_vue(size));\r\n\r\n        return listFile;\r\n    }\r\n}\r\n///////////////////// SHORTCUTS\r\n/**\r\n * Create a list of synthetic files with different mime types\r\n * @param size the file size for each synthetic file\r\n * @returns a list of synthetic file\r\n */\r\nexport const createListOfMultiTypeFile = (size?: number): File[] => {\r\n    return SyntheticFile.createFileListMiscelanious(size);\r\n}\r\n\r\n/**\r\n * Creates a synthetic file.\r\n * By default, creates a png image file\r\n * @param name the file name to show. By default is set to \"png-image-file-with-large-name.png\"\r\n * @param size the size in bytes of the file. By default this value is set to 455555\r\n * @param type the mime type of the file. By default is set to \"image/png\"\r\n * @returns \r\n */\r\nexport const createSyntheticFile = (\r\n    name = \"png-image-file-with-large-name.png\",\r\n    size = 455555,\r\n    type = \"image/png\",\r\n): File => {\r\n    return SyntheticFile.createFile(name, size, type);\r\n}","/**\r\n * An id generator for FileItems\r\n */\r\n export abstract class FileIdGenerator {\r\n    static nextId = 0;\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    static getNextId(): number {\r\n        FileIdGenerator.nextId++;\r\n        return FileIdGenerator.nextId;\r\n    }\r\n}","/**\r\n * Random integer between min (included) and max (excluded)\r\n * @param min the min number\r\n * @param max the max number\r\n * @returns a random number between min (included) and max (excluded)\r\n */\r\nexport function getRandomInt(min: number = 0, max: number = 0): number {\r\n    return Math.floor(Math.random() * (max - min)) + min;\r\n}\r\n","/**\r\n * Cleans the input.value attribute\r\n * @param inputElement \r\n */\r\nexport const cleanInput = (inputElement?: HTMLInputElement | null) => {\r\n    if (!inputElement) return;\r\n    inputElement.value = \"\";\r\n}","/**\r\n * Separate the accept string array into an array of strings separated by commas\r\n * @param accept the string accept array\r\n * @returns an array of strings in wich every item\r\n */\r\nexport const separateAccept = (accept: string | undefined): string[] => {\r\n    if (!accept || accept.length === 0) {\r\n        return [];\r\n    }\r\n    const commaSeparatedAccpet: string[] = accept.split(\",\").map((acceptItem) => acceptItem.trim());\r\n    return commaSeparatedAccpet;\r\n}","import { getExt } from \"../utils/getExt\";\r\n\r\n/**\r\n * Checks whether a file is valid or not given an array of file extentions and mime types\r\n * e.g. accept =  [\".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"]\r\n * @param accept the array of strings accept items\r\n * @param file a File object to be evaluated\r\n * @returns true if the mime type file is included in the accept param\r\n */\r\n export const validateAccept = (accept: string[], file: File): boolean => {\r\n    let valid: boolean = false;\r\n    const { name, type } = file;\r\n    //Array(5) [ \".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" ]\r\n    for (let i = 0; i < accept.length; i++) {\r\n        const acceptItem: string = accept[i];\r\n        //check is not empty\r\n        if (acceptItem.length !== 0) {\r\n            //check extention\r\n            if (acceptItem.charAt(0) === \".\") {\r\n                if (acceptItem.includes(getExt(name))) {\r\n                    return true;\r\n                }\r\n            }\r\n            //check mime\r\n            // header/tail  => image/png  ;  image/* ; audio\r\n            if (type && type.length > 0 && acceptItem.includes(\"/\") && type.includes(\"/\")) {\r\n                let headerMime = acceptItem.split(\"/\")[0];\r\n                let tailMime = acceptItem.split(\"/\")[1];\r\n\r\n                let headerMimeFile = type.split(\"/\")[0];\r\n                let tailMimeFile = type.split(\"/\")[1];\r\n\r\n                if (headerMime === headerMimeFile) {\r\n                    //    image/*\r\n                    if (tailMime === \"*\") {\r\n                        return true;\r\n                    } else if (tailMime === tailMimeFile) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return valid;\r\n}","import { ValidateErrorLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, FunctionLabel, Localization, LocalLabels } from \"../types\";\r\nimport { ValidateFileResponse, FileValidatorProps } from \"../types/validation\";\r\nimport { FileIdGenerator } from \"../utils/IdGenerator\";\r\nimport { separateAccept } from \"./separateAccept\";\r\nimport { validateAccept } from \"./validateAccept\";\r\n\r\n/**\r\n * \r\n * @param preValidatedFiles FileList \r\n * @param remainingValids The number of remaining valid files\r\n * @param localValidator \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns \r\n */\r\nexport const fileListvalidator = (\r\n    preValidatedFiles: FileList,\r\n    remainingValids: number,\r\n    localValidator: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    const output: ExtFile[] = [];\r\n    //set a countdown when there is a limit on files\r\n    let countdown: number = remainingValids;\r\n    // get localized labels\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    //Iterate the File list\r\n    for (let i = 0, f: File; (f = preValidatedFiles[i]); i++) {\r\n        // Validate the file list with\r\n        let validatedFile: ExtFile = validateFile(f, validator, localValidator, ValidationErrorLocalizer);\r\n        if (validatedFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = countdown > 0;\r\n            validatedFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n                validatedFile.errors = validatedFile.errors\r\n                    ? [...validatedFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            countdown--;\r\n        }\r\n        output.push(validatedFile);\r\n    }\r\n    return output;\r\n};\r\n\r\n\r\n/**\r\n * For each ExtFile sets the valid prop of ExtFile to \"true\" or \"false\"\r\n * depending on the result of the individual validation. \r\n * It also add the list of errors.\r\n * @param extFileList \r\n * @param remainingValids \r\n * @param localValidatorProps \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns a new ExtFile list with each item validated\r\n */\r\nexport const validateExtFileList = (\r\n    extFileList: ExtFile[],\r\n    remainingValids: number,\r\n    localValidatorProps: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    //console.log(\"remaning valids\", remainingValids);\r\n    let fileListResult: ExtFile[] = [];\r\n    if (!remainingValids) return fileListResult;\r\n    let remaining: number = remainingValids;\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n    for (let i = 0; i < extFileList.length; i++) {\r\n        let currentExtFile: ExtFile = extFileList[i];\r\n\r\n        currentExtFile = validateExtFile(currentExtFile, validator, localValidatorProps, ValidationErrorLocalizer);\r\n        //console.log(\"validateExtFileList after validation\", currentExtFile);\r\n\r\n        if (currentExtFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = remaining > 0;\r\n            currentExtFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                currentExtFile.errors = currentExtFile.errors\r\n                    ? [...currentExtFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            remaining--;\r\n        }\r\n        fileListResult.push(currentExtFile);\r\n\r\n    }\r\n    return fileListResult;\r\n}\r\n\r\n/**\r\n * \r\n * @param extFile \r\n * @param validator \r\n * @param validatorProps \r\n * @param localErrors \r\n * @returns \r\n */\r\nexport const validateExtFile = (\r\n    extFile: ExtFile,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n    let extFileResult: ExtFile = { ...extFile };\r\n    let errors: string[] = [];\r\n    //TO-DO: Add extra validation for individual props even if FIle object was not given\r\n    if (!extFile.file) {\r\n        return { ...extFileResult }\r\n    }\r\n\r\n    //TO-DO: add \"overrideValidation\" prop to ignore the rest of validators like accept and maxFileSize\r\n    if (validator) {\r\n        const resultCustomValidation: ValidateFileResponse = validator(extFileResult.file as File);\r\n        const { errors: errorsResult } = resultCustomValidation;\r\n        if (errorsResult)\r\n            errors.push(...errorsResult)\r\n        //return { ...extFileResult, ...validator(extFileResult.file as File) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n    //console.log(\"Validation\", maxFileSize, accept);\r\n    //check file size\r\n    const file: File = extFile.file;\r\n\r\n\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n\r\n        //console.log(\"Size error\", maxFileSizeErrorMessenger(maxFileSize));\r\n\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n    //check file type\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n    const isValid: boolean = errors.length === 0;\r\n    extFileResult = { ...extFileResult, valid: isValid, errors: !isValid ? errors : undefined };\r\n    //console.log(\"validation extFileResult\", extFileResult);\r\n    return extFileResult;\r\n\r\n}\r\n\r\n\r\n\r\n/**\r\n * Function that validate whether a file is valid, or not\r\n * according to the Filevalidator properties\r\n * @param file a File object to be evaluated\r\n * @param validatorProps the validator object \r\n * @returns a FileValidated object\r\n */\r\nexport const validateFile = (\r\n    file: File,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n\r\n    const idGenerated = FileIdGenerator.getNextId();\r\n    let errors: string[] = [];\r\n    if (validator) {\r\n        return { id: idGenerated, file, ...validator(file) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n\r\n    //check file size\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n\r\n    //check file type\r\n    // const allowedTypes = accept.filter((type) => (file.type === type))\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n\r\n\r\n    const fileResult: ExtFile = {\r\n        id: idGenerated,\r\n        file: file,\r\n        valid: errors.length === 0,\r\n        errors: errors\r\n    };\r\n    // logic here\r\n    return fileResult;\r\n};","/**\r\n * list of dumy errors in english\r\n */\r\nexport const listOfErrors: string[] =\r\n    [\r\n        \"File is too big. Max file size allowed is 80mb.\",\r\n        \"File's type is not allowed.\",\r\n        \"Max amount of files (28) has been reached.\"\r\n    ];","export default function addExtraData(\r\n    formData: FormData,\r\n    extraData: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const extraDataKeys: string[] = Object.keys(extraData || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < extraDataKeys.length && extraData; i++) {\r\n        //console.log(\"uploadFile extraData\", extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n        formData.append(extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n    }\r\n\r\n    formData.append(\"otherValue\", \"HAAAAAAAAAAAAAAa\");\r\n\r\n}","export default function addHeaders(\r\n    xhr: XMLHttpRequest,\r\n    headers: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const headerKeys: string[] = Object.keys(headers || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < headerKeys.length && headers; i++) {\r\n        //console.log(\"uploadFile headers\", headerKeys[i], headers[headerKeys[i]]);\r\n        xhr.setRequestHeader(\r\n            headerKeys[i],\r\n            headers[headerKeys[i]]\r\n        );\r\n    }\r\n\r\n\r\n}","import { ExtFile, UploadResponse } from \"../types\";\r\n\r\nexport const TIMEOUT_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Timeout error\",\r\n    payload: {}\r\n};\r\nexport const ABORTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Upload aborted\",\r\n    payload: {}\r\n}\r\nexport const JSON_PARSE_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Error when parsing JSON response\",\r\n    payload: {}\r\n}\r\n\r\nexport const UNEXPECTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Unexpected error\",\r\n    payload: {}\r\n}\r\n\r\nexport const NO_XHR_PROVIDED_ERROR = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n\r\n        ...extFile,\r\n        uploadMessage: \"Unable to upload. xhr object was not provided\",\r\n        uploadStatus: \"error\",\r\n\r\n        serverResponse: { success: false, }\r\n    }\r\n}","import { ExtFile, ServerResponse, UploadResponse } from \"../types\";\r\nimport { JSON_PARSE_ERROR_RESPONSE } from \"./errors.upload\";\r\n\r\nexport const makeServerResponse = (success: any, message: string, payload: any): ServerResponse => {\r\n    const result: ServerResponse = { success: success, message: message, payload: payload } as ServerResponse;\r\n    return result;\r\n}\r\nexport const JsonParseResponse = (xhr: XMLHttpRequest): ServerResponse => {\r\n    try {\r\n        const jsonResponse = JSON.parse(xhr.response);\r\n        const success: any = jsonResponse.success;\r\n        const message: string = jsonResponse.message;\r\n        const payload: any = jsonResponse.payload;\r\n\r\n        const fuiResponse: ServerResponse = {\r\n            success: typeof success === \"boolean\" ? success : false,\r\n            message: typeof message === \"string\" ? message : \"Error on message response\",\r\n            payload: payload || {}\r\n        }\r\n        return fuiResponse\r\n    } catch (error) {\r\n        //console.log(\"FuiUpload ERROR\", error);\r\n        return JSON_PARSE_ERROR_RESPONSE;\r\n    }\r\n}\r\n\r\n\r\n\r\nexport const makeSuccessUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        serverResponse: responseFui,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"success\"\r\n\r\n    }\r\n}\r\n\r\n\r\nexport const makeErrorUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    //console.log(\"makeErrorUploadResponse\", extFile, responseFui);\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"error\", \r\n        serverResponse: responseFui,\r\n    }\r\n}\r\n\r\n","import { ExtFile, Method, UPLOADSTATUS } from \"../types\";\r\nimport { ServerResponse, UploadResponse } from \"../types/uploadTypes\";\r\nimport addExtraDataUpload from \"./addExtraData.upload\";\r\nimport addHeaders from \"./addheaders.upload\";\r\nimport { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from \"./errors.upload\";\r\nimport { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from \"./response.upload\";\r\nimport { completeUploadResult, unableToUploadResult } from \"./utils.upload\";\r\n\r\n\r\n/**\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data upload\r\n * @param headers the set of headers\r\n * @returns a server response that consists on {status, payload, message}\r\n */\r\nexport const uploadFormData = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method | undefined = \"POST\",\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string> | undefined\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"Fui_uploadFormData uploadFile\", xhr, method, endpoint, data, headers);\r\n\r\n        const finalMethod: Method = [\"POST\", \"PUT\", \"PATCH\"].includes(method.toUpperCase()) ? method : \"POST\";\r\n\r\n        let lastLastState: number = -1;\r\n        let lastState: number = 0;\r\n        let jumped: boolean = false;\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"Fui_uploadFormData uploadFile onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => {\r\n            //console.log(\"Fui_uploadFormData ABORTEEEEDDDD\");\r\n            resolve(ABORTED_ERROR_RESPONSE);\r\n        };\r\n        xhr.onloadend = async (e) => {\r\n            //console.log(\"onloadend loaded\", e.loaded);\r\n            //console.log(\"onloadend total\", e.total);\r\n            //console.log(\"onloadend lengthComputable\", e.lengthComputable);\r\n\r\n        }\r\n        // listen for `progress` event\r\n        //currently listening on FileItem component hook\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange e.type\", e.type);\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange\", xhr.readyState, xhr.response);\r\n\r\n            lastLastState = lastState;\r\n            lastState = xhr.readyState;\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    // console.log(\"Fui_uploadFormData EMPTY status\", xhr.status);\r\n                    // console.log(\"Fui_uploadFormData EMPTY readyState\", xhr.readyState);\r\n                    // console.log(\"Fui_uploadFormData EMPTY upload\", xhr.upload);\r\n                    //console.log(\"Fui_uploadFormData EMPTY abort\", xhr.abort);\r\n                    //const jumped = lastLastState - lastLastState !== 1;\r\n                    resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n                }\r\n            } else {\r\n                //console.log(\"Fui_uploadFormData FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(finalMethod, endpoint, true);\r\n\r\n        //add header to request\r\n        addHeaders(xhr, headers);\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n/**\r\n * \r\n * @param file the extended file to be uploaded\r\n * @param url the endpoint\r\n * @param method the method for uploading\r\n * @param headers headers for request\r\n * @returns \r\n */\r\nexport const uploadExtFile = async (\r\n    extFile: ExtFile,\r\n    url: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n): Promise<ExtFile> => {\r\n    return new Promise(async (resolve, reject) => {\r\n        try {\r\n            const uploader: XMLHttpRequest | undefined = extFile.xhr;\r\n\r\n            if (!uploader) {\r\n                resolve(NO_XHR_PROVIDED_ERROR(extFile));\r\n                return;\r\n            }\r\n\r\n            const localMethod: Method = method || \"POST\";\r\n            const fileToUpload: File = extFile.file as File;\r\n\r\n            const formData = new FormData();\r\n\r\n            formData.append(uploadLabel || \"file\", fileToUpload);\r\n\r\n            // add extra data to upload\r\n            const finalExtraData: Record<string, any> =\r\n                { otherValue: \"other valueee haaaa\", param2: { tecnica: \"KIKOHUUUU\", friend: \"Chaos\", age: 25 }, ...extFile.extraUploadData };\r\n\r\n            addExtraDataUpload(formData, finalExtraData);\r\n            //console.log(\"FORMDATA\", formData);\r\n\r\n            let responseFui: ServerResponse;\r\n            responseFui = await uploadFormData(\r\n                uploader,\r\n                localMethod,\r\n                url,\r\n                formData,\r\n                headers || {});\r\n\r\n            if (responseFui.success) {\r\n                // status is true\r\n                resolve(makeSuccessUploadResponse(extFile, responseFui));\r\n            } else {\r\n                // status is false\r\n                resolve(makeErrorUploadResponse(extFile, responseFui));\r\n            }\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(\r\n                makeErrorUploadResponse(extFile, UNEXPECTED_ERROR_RESPONSE)\r\n            );\r\n        }\r\n    });\r\n};\r\n\r\n\r\n\r\n\r\nexport function uploadFile(\r\n    file: File,\r\n    url: string,\r\n    method?: Method,\r\n    label?: string,\r\n    headers?: Record<string, string>\r\n): Promise<ServerResponse> {\r\n    return new Promise(async (resolve, reject) => {\r\n\r\n\r\n        //start uploading\r\n        const formData = new FormData();\r\n\r\n        formData.append(label || \"file\", file);\r\n\r\n        try {\r\n            const serverResponse: ServerResponse = await uploadFormData(new XMLHttpRequest(), method, url, formData, headers);\r\n            resolve(serverResponse);\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(UNEXPECTED_ERROR_RESPONSE);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @deprecated\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data\r\n * @param headers the set of headers\r\n * @returns a dui server response that consists on {success, payload, message}\r\n */\r\nexport const FuiUpload = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method,\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string>\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"FuiUpload params\", xhr, method, endpoint, data, headers);\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"FuiUpload onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n        // listen for `progress` event\r\n        //currently listening on FileMosaic component hook\r\n\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n            //console.log(\"FuiUpload onreadystatechange\", xhr.readyState, xhr.response, xhr);\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    resolve(UNEXPECTED_ERROR_RESPONSE);\r\n                }\r\n            } else {\r\n                //console.log(\"FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(method, endpoint, true);\r\n        const headerKeys: string[] = Object.keys(headers);\r\n        //const headerValues: string[] = Object.values(headers);\r\n        for (let i = 0; i < headerKeys.length; i++) {\r\n            //console.log(\"FuiUpload  headers\", headerKeys[i], headers[headerKeys[i]]);\r\n            xhr.setRequestHeader(\r\n                headerKeys[i],\r\n                headers[headerKeys[i]]\r\n            );\r\n        }\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n\r\n","import { NamedColor } from \"../types/NamedColor\";\r\n\r\n/**\r\n * The full list of named Colors provided by\r\n * https://htmlcolorcodes.com/es/nombres-de-los-colores/\r\n */\r\nexport const NAMED_COLORS: NamedColor =\r\n{\r\n    //RED\r\n    indianred: \"#CD5C5C\",\r\n    lightcoral: \"#F08080\",\r\n    salmon: \"#FA8072\",\r\n    darksalmon: \"#E9967A\",\r\n    lightsalmon: \"#FFA07A\",\r\n    crimson: \"#DC143C\",\r\n    red: \"#FF0000\",\r\n    firebrick: \"#B22222\",\r\n    darkred: \"#8B0000\",\r\n    //PINK\r\n    pink: \"#FFC0CB\",\r\n    lightpink: \"#FFB6C1\",\r\n    hotpink: \"#FF69B4\",\r\n    deeppink: \"#FF1493\",\r\n    mediumvioletred: \"#C71585\",\r\n    palevioletred: \"#DB7093\",\r\n    //ORANGE\r\n    //\"lightsalmon: \"#FFA07A\",\r\n    coral: \"#FF7F50\",\r\n    tomato: \"#FF6347\",\r\n    orangered: \"#FF4500\",\r\n    darkorange: \"#FF8C00\",\r\n    orange: \"#FFA500\",\r\n    //YELLOW\r\n    gold: \"#FFD700\",\r\n    yellow: \"#FFFF00\",\r\n    lightyellow: \"#FFFFE0\",\r\n    lemonchiffon: \"#FFFACD\",\r\n    lightgoldenrodyellow: \"#FAFAD2\",\r\n    papayawhip: \"#FFEFD5\",\r\n    moccasin: \"#FFE4B5\",\r\n    peachpuff: \"#FFDAB9\",\r\n    palegoldenrod: \"#EEE8AA\",\r\n    khaki: \"#F0E68C\",\r\n    darkkhaki: \"#BDB76B\",\r\n    //PURPLE\r\n    lavender: \"#E6E6FA\",\r\n    thistle: \"#D8BFD8\",\r\n    plum: \"#DDA0DD\",\r\n    violet: \"#EE82EE\",\r\n    orchid: \"#DA70D6\",\r\n    fuchsia: \"#FF00FF\",\r\n    magenta: \"#FF00FF\",\r\n    mediumorchid: \"#BA55D3\",\r\n    mediumpurple: \"#9370DB\",\r\n    rebeccapurple: \"#663399\",\r\n    blueviolet: \"#8A2BE2\",\r\n    darkviolet: \"#9400D3\",\r\n    darkorchid: \"#9932CC\",\r\n    darkmagenta: \"#8B008B\",\r\n    purple: \"#800080\",\r\n    indigo: \"#4B0082\",\r\n    slateblue: \"#6A5ACD\",\r\n    darkslateblue: \"#483D8B\",\r\n    mediumslateblue: \"#7B68EE\",\r\n    //GREEN\r\n    greenyellow: \"#ADFF2F\",\r\n    chartreuse: \"#7FFF00\",\r\n    lawngreen: \"#7CFC00\",\r\n    lime: \"#00FF00\",\r\n    limegreen: \"#32CD32\",\r\n    palegreen: \"#98FB98\",\r\n    lightgreen: \"#90EE90\",\r\n    mediumspringgreen: \"#00FA9A\",\r\n    springgreen: \"#00FF7F\",\r\n    mediumseagreen: \"#3CB371\",\r\n    seagreen: \"#2E8B57\",\r\n    forestgreen: \"#228B22\",\r\n    green: \"#008000\",\r\n    darkgreen: \"#006400\",\r\n    yellowgreen: \"#9ACD32\",\r\n    olivedrab: \"#6B8E23\",\r\n    olive: \"#808000\",\r\n    darkolivegreen: \"#556B2F\",\r\n    mediumaquamarine: \"#66CDAA\",\r\n    darkseagreen: \"#8FBC8B\",\r\n    lightseagreen: \"#20B2AA\",\r\n    darkcyan: \"#008B8B\",\r\n    teal: \"#008080\",\r\n    //BLUE\r\n    aqua: \"#00FFFF\",\r\n    cyan: \"#00FFFF\",\r\n    lightcyan: \"#E0FFFF\",\r\n    paleturquoise: \"#AFEEEE\",\r\n    aquamarine: \"#7FFFD4\",\r\n    turquoise: \"#40E0D0\",\r\n    mediumturquoise: \"#48D1CC\",\r\n    darkturquoise: \"#00CED1\",\r\n    cadetblue: \"#5F9EA0\",\r\n    steelblue: \"#4682B4\",\r\n    lightsteelblue: \"#B0C4DE\",\r\n    powderblue: \"#B0E0E6\",\r\n    lightblue: \"#ADD8E6\",\r\n    skyblue: \"#87CEEB\",\r\n    lightskyblue: \"#87CEFA\",\r\n    deepskyblue: \"#00BFFF\",\r\n    dodgerblue: \"#1E90FF\",\r\n    cornflowerblue: \"#6495ED\",\r\n    //\"mediumslateblue: \"#7B68EE\",\r\n    royalblue: \"#4169E1\",\r\n    blue: \"#0000FF\",\r\n    mediumblue: \"#0000CD\",\r\n    darkblue: \"#00008B\",\r\n    navy: \"#000080\",\r\n    midnightblue: \"#191970\",\r\n    //BROWN\r\n    cornsilk: \"#FFF8DC\",\r\n    blanchedalmond: \"#FFEBCD\",\r\n    bisque: \"#FFE4C4\",\r\n    navajowhite: \"#FFDEAD\",\r\n    wheat: \"#F5DEB3\",\r\n    burlywood: \"#DEB887\",\r\n    tan: \"#D2B48C\",\r\n    rosybrown: \"#BC8F8F\",\r\n    sandybrown: \"#F4A460\",\r\n    goldenrod: \"#DAA520\",\r\n    darkgoldenrod: \"#B8860B\",\r\n    peru: \"#CD853F\",\r\n    chocolate: \"#D2691E\",\r\n    saddlebrown: \"#8B4513\",\r\n    sienna: \"#A0522D\",\r\n    brown: \"#A52A2A\",\r\n    maroon: \"#800000\",\r\n    //WHITE\r\n    white: \"#FFFFFF\",\r\n    snow: \"#FFFAFA\",\r\n    honeydew: \"#F0FFF0\",\r\n    mintcream: \"#F5FFFA\",\r\n    azure: \"#F0FFFF\",\r\n    aliceblue: \"#F0F8FF\",\r\n    ghostwhite: \"#F8F8FF\",\r\n    whitesmoke: \"#F5F5F5\",\r\n    seashell: \"#FFF5EE\",\r\n    beige: \"#F5F5DC\",\r\n    oldlace: \"#FDF5E6\",\r\n    floralwhite: \"#FFFAF0\",\r\n    ivory: \"#FFFFF0\",\r\n    antiquewhite: \"#FAEBD7\",\r\n    linen: \"#FAF0E6\",\r\n    lavenderblush: \"#FFF0F5\",\r\n    mistyrose: \"#FFE4E1\",\r\n    //GREY\r\n    gainsboro: \"#DCDCDC\",\r\n    lightgray: \"#D3D3D3\",\r\n    silver: \"#C0C0C0\",\r\n    darkgray: \"#A9A9A9\",\r\n    gray: \"#808080\",\r\n    dimgray: \"#696969\",\r\n    lightslategray: \"#778899\",\r\n    slategray: \"#708090\",\r\n    darkslategray: \"#2F4F4F\",\r\n    black: \"#000000\"\r\n}","import { NAMED_COLORS } from \"./namedColors\";\r\n\r\n/**\r\n * Make the color into a darker color\r\n * @param colorInput \r\n * @returns the darked color in\r\n */\r\nexport const darkerColor = (colorInput: string, percentage = 25): string => {\r\n    let darkedColor = \"\";\r\n    const reduce = (100 - percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        darkedColor = `rgb(${component1 * reduce}, ${component2 * reduce},${component3 * reduce})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return darkedColor;\r\n}\r\n/**\r\n * Make the color into a brighted color\r\n * @param colorInput \r\n * @returns the brighted color \r\n */\r\nexport const brighterColor = (colorInput: string, percentage = 25): string => {\r\n    let brightedColor = \"\";\r\n    const increase = (100 + percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        brightedColor = `rgb(${component1 * increase}, ${component2 * increase},${component3 * increase})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return brightedColor;\r\n}\r\n\r\n/**\r\n * In order to managae rgba() we convert hex colors into rgba()\r\n * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()\r\n * \r\n * \r\n * @param colorInput color in hex or in rgb\r\n * @param perc percentage for RGBA() color \r\n * @returns the rgba representation of a hex color\r\n */\r\nexport const hexColorToRGB = (colorInput: string | undefined, perc = 0, defaultColor?: string): string => {\r\n    let resultDefault: string = defaultColor ? defaultColor : \"rgba(255, 255, 255, 0.6)\";\r\n    if (!colorInput) {\r\n        return resultDefault;\r\n    }\r\n    //work only in uppercase\r\n    const color: string = colorInput.toUpperCase();\r\n    // is already a rgba color\r\n    if (color.includes(\"RGBA\")) {\r\n        return color;\r\n    }\r\n\r\n    //return rbg => rgba\r\n    if (color.includes(\"RGB\")) {\r\n        return color.replace('RGB', `rgba`).replace(')', `, ${perc})`);\r\n    }\r\n\r\n    // if is a hex color or named color\r\n    if (!isHexColor(colourNameToHex(color))) {\r\n        return resultDefault;\r\n    }\r\n    let resultOk: string = \"\";\r\n    //let strVar: string = \"\";\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    //If passed all validations, proceed to transform\r\n    component1 = hexTodec(color.charAt(1)) * 16 + hexTodec(color.charAt(2));\r\n    component2 = hexTodec(color.charAt(3)) * 16 + hexTodec(color.charAt(4));\r\n    component3 = hexTodec(color.charAt(5)) * 16 + hexTodec(color.charAt(6));\r\n    resultOk = `rgba(${component1}, ${component2},${component3} , ${perc})`;\r\n    return resultOk;\r\n}\r\n\r\n/**\r\n * Validates wheteher the color is hexadecimal css color\r\n * Example:  #FF56AC\r\n * \r\n * \r\n * @param colorInput the color inpt to test \r\n * @returns true if the inputColor is a hexadecimal css color\r\n */\r\nexport const isHexColor = (colorInput: string): boolean => {\r\n\r\n    // if first element is no '#' return default background color\r\n    if (colorInput.charAt(0) !== '#') {\r\n\r\n        return false;\r\n    }\r\n    // if color lenght is not exactly 7 return default\r\n    if (colorInput.length !== 7) {\r\n\r\n\r\n        return false;\r\n    }\r\n    // if one of the letters is not included in hex array return  default\r\n    for (let i = 1; i < colorInput.length; i++) {\r\n        if (!hexArray.includes(colorInput.charAt(i))) {\r\n\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\n/**\r\n * Converts a named color into hexadecimal color\r\n * from a list of well known namd colors if found.\r\n * When not given returns a \"\"\r\n * When not found in the list, returns the same value given\r\n * @param colour the named color\r\n * @returns The hex representation of the color or \"\" or the same color\r\n */\r\nexport function colourNameToHex(colour: string | undefined): string {\r\n    /**\r\n     * When not given\r\n     */\r\n    if (!colour) {\r\n        return \"\";\r\n    }\r\n    /**\r\n     * when named color is found\r\n     */\r\n    if (NAMED_COLORS[colour.toLocaleLowerCase()] !== undefined) {\r\n        return NAMED_COLORS[colour.toLocaleLowerCase()];\r\n    }\r\n    /**\r\n     * When the named color was not found\r\n     */\r\n\r\n    return colour;\r\n}\r\n\r\n/**\r\n * hexArray & decArray\r\n * \r\n * arrays of numbers used to convert hexadecimal numbers into decimal and viceversa\r\n */\r\nconst hexArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\r\nconst decArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\r\n\r\n/**\r\n * Converts hex number in string representation to decimal number\r\n * \r\n * \r\n * @param letter the string hex number\r\n * @returns a decimal number\r\n */\r\nexport const hexTodec = (letter: string): number => {\r\n    if (hexArray.includes(letter)) {\r\n        return decArray[hexArray.indexOf(letter)];\r\n    } else {\r\n        return 0;\r\n    }\r\n}\r\n\r\n\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const asureColor = (color?: string): string => {\r\n    if (color !== undefined && color !== \"\") {\r\n        return color;\r\n    } else {\r\n        return DEFAULT_FONT_COLOR;\r\n    }\r\n}\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const completeAsureColor = (color?: string, perc = 1): string => {\r\n\r\n    return hexColorToRGB(asureColor(colourNameToHex(color)), perc);\r\n\r\n}\r\n\r\n\r\n\r\nexport const DEFAULT_FONT_COLOR = \"#646c7f\";","/**\r\n * If className is given, adds class name in string format to a base class name\r\n * @param baseClassName the base class name\r\n * @param className the class name to be added\r\n * @returns a new class name obtained by adding the second paramater\r\n */\r\nexport const addClassName = (\r\n    baseClassName: string,\r\n    className: string | undefined\r\n): string => {\r\n    if (className)\r\n        return `${baseClassName} ${className}`;\r\n    return baseClassName;\r\n}","\r\nimport { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from \"../types\"\r\n\r\nexport const unexpectedErrorUploadResult = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: \"Unexpected error\",\r\n        uploadStatus: \"error\",\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: unexpected error \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const unableToUploadResult = (\r\n    extFile: ExtFile\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: \"Unable to upload. XHR was not provided\",\r\n            uploadStatus: \"error\"\r\n        },\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: Unable to upload. XHR was not provided \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const completeUploadResult = (\r\n    extFile: ExtFile,\r\n    serverResponse: ServerResponse,\r\n    uploadStatusresult: UPLOADSTATUS\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: serverResponse.message,\r\n            uploadStatus: uploadStatusresult\r\n        },\r\n        serverResponse: serverResponse\r\n    }\r\n}\r\n\r\n/**\r\n * Initializes the xhr attribute for performing uploads\r\n * @param extFileList the list of extended files\r\n * @returns the array of extFiles with the xhr attribute initialized\r\n */\r\nexport const toUploadableExtFileList = (\r\n    extFileList: ExtFile[] | ExtFileInstance[]\r\n): ExtFile[] => {\r\n    if (!extFileList) return [];\r\n    return extFileList.map(extFile => {\r\n        return { ...extFile, xhr: new XMLHttpRequest() }\r\n    });\r\n}\r\n\r\n/**\r\n * Updates the uploadStatus of the given extFile \r\n * from \"preparing\" to \"uploading\"\r\n * @param extFile the extended file\r\n * @returns the extended file with uploadStatus updated to \"uploading\"\r\n */\r\nexport const instantPreparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): ExtFileInstance | ExtFile => {\r\n    if (extFile.uploadStatus === \"preparing\") {\r\n        //for ExtFile instance\r\n        extFile.uploadStatus = \"uploading\";\r\n        //for ExtFile type\r\n        return {\r\n            ...extFile,\r\n            uploadStatus: \"uploading\",\r\n        };\r\n    }\r\n    return extFile;\r\n};\r\n\r\n/**\r\n * \r\n * @param extFile the extended file\r\n * @returns \r\n */\r\nexport const preparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            if (extFile.uploadStatus === \"preparing\") {\r\n                //for ExtFile instance\r\n                extFile.uploadStatus = \"uploading\";\r\n                //for ExtFile type\r\n                resolve({\r\n                    ...extFile,\r\n                    uploadStatus: \"uploading\",\r\n                });\r\n            } else\r\n                resolve(extFile);\r\n        }, 1500);\r\n    });\r\n};\r\n/**\r\n * Sleeps for 1200 miliseconds for showing a better transition\r\n * on uploading\r\n * @param time the time to sleep in miliseconds\r\n * @returns true is everything is ok\r\n */\r\nexport const sleepTransition = (time = 1500\r\n): Promise<boolean> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve(true);\r\n        }, time);\r\n    });\r\n}\r\n/**\r\n * Removes the deleted files and updates the aborted ones with a message\r\n * @param arrExtFile incomming arr of extFle instances\r\n * @returns an array of ExtFle objects\r\n */\r\nexport const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {\r\n  \r\n    return arrExtFile.filter((extFileInstance: ExtFileInstance) =>\r\n        !extFileInstance.extraData?.deleted)\r\n\r\n        .map((extFileInstance: ExtFileInstance) => {\r\n            if (extFileInstance.uploadStatus === \"aborted\"\r\n                && !extFileInstance.uploadMessage) {\r\n                    // TO-DO: ad localization for this message\r\n                extFileInstance.uploadMessage = \"Upload aborted by user\";\r\n                //extFileInstance.uploadStatus = \"error\";\r\n            }\r\n            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile\r\n        });\r\n}\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @param extFileobj \r\n */\r\nexport const setNextUploadStatus = (\r\n    extFileInstance: ExtFileInstance,\r\n    extFileobj: ExtFile) => {\r\n\r\n    const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;\r\n    const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;\r\n\r\n    //console.log(\"setNextUploadStatus\", prevStatus, nextStstaus);\r\n    //console.log(\"setNextUploadStatus\", extFileInstance.uploadMessage, extFileobj.uploadMessage);\r\n    if (\r\n        prevStatus === \"preparing\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = undefined;\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    } else if (\r\n        prevStatus === \"uploading\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = \"aborted\";\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    }\r\n\r\n}\r\n\r\n","import { Method } from \"./method\"\r\n\r\nexport type UploadConfig = {\r\n    /**\r\n     * The url endpoint to upload the file.\r\n     * e.g. https://www.myasomwbackend/uploads/file\r\n     */\r\n    url?: string;\r\n    /**\r\n     * upload method, can be POST | PUT | PATCH\r\n     * @default \"POST\"\r\n     */\r\n    method?: Method;\r\n    /**\r\n     * Request headers for http request.\r\n     * e.g.\r\n     * ```jsx\r\n     * headers = { \r\n     *    \"content-type\": \"multipart/form-data\",\r\n     *    Authorization: \"Bearer YOUR_BEARER_TOKEN_GOES_HERE\",\r\n     * } \r\n     * ```\r\n     */\r\n    headers?: Record<string, string>;\r\n    /**\r\n     * the label to use in request\r\n     * On server this must be the label to get the file.\r\n     * @default \"file\"\r\n     */\r\n    uploadLabel?: string;\r\n    /**\r\n     * Flag for indicating whther to remove the non-valid files\r\n     * before starting the upload process.\r\n     * This flag is valid only if validation is enable\r\n     */\r\n    cleanOnUpload?: boolean;\r\n    /**\r\n     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also\r\n     * it will start the upload stage for the files if at least url was set\r\n     * By default is false\r\n     */\r\n    autoUpload?: boolean;\r\n    /**\r\n     * The time that will last the \"preparing\" stage\r\n     * By default is 1500 miliseconds = 1.5 seconds\r\n     */\r\n    preparingTime?: number;\r\n    /**\r\n     * A message to show in the footer when the uploading process takes place.\r\n     */\r\n    uploadingMessage?: string;\r\n}\r\n\r\nexport const createUploadConfig = (\r\n    url?: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n    cleanonUpload?: boolean\r\n) => {\r\n    return {\r\n        url,\r\n        method,\r\n        headers,\r\n        uploadLabel,\r\n        cleanonUpload\r\n    }\r\n}","import { createSyntheticFile } from \"../synthetic-file\"\r\nimport { ExtFile } from \"../types\"\r\nimport { FileIdGenerator } from \"../utils\"\r\nimport { listOfErrors } from \"../validation\"\r\n\r\nexport const extFileMock = (id?: number): ExtFile => {\r\n    return {\r\n        id: id || FileIdGenerator.getNextId(),\r\n        name: \"fileName.ext\",\r\n        size: 28 * 1024 * 1024,\r\n        type: \"files-ui/mock\",\r\n        file: createSyntheticFile(\"fileName.ext\", 28 * 1024 * 1024, \"files-ui/mock\"),\r\n        errors: listOfErrors,\r\n        uploadMessage: \"uploaded\",\r\n        uploadStatus: \"preparing\",\r\n        valid: false,\r\n        progress: 28,\r\n        xhr: new XMLHttpRequest(),\r\n        extraData: {\r\n            extraData1: \"files-ui is the best\",\r\n            extraData2: {\r\n                id: 1,\r\n                name: \"files-ui.mock\"\r\n            },\r\n            deleted: true\r\n        },\r\n        downloadUrl: \"https://www.files-ui.com/mock/file-download\"\r\n    }\r\n}","import { ExtFile, ExtFileInstance, ExtFileManager } from \"../types\";\r\n\r\nexport const extFileReconcilation = (\r\n    dropzoneId: number | string | undefined,\r\n    extFileIncomming: ExtFile[]\r\n): ExtFile[] | undefined => {\r\n    let result: ExtFile[] = [];\r\n\r\n    let arrOfExtFiles: ExtFileInstance[] | undefined =\r\n        ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n\r\n    // continue only if arrOfExtFiles exists\r\n    if (arrOfExtFiles) {\r\n        //different sizes means there was deleted files\r\n        //also can be new files to be uploaded\r\n        //needed an extra flag to allow add files in the middle of uploading process\r\n        // if new files are added, they are added to the Manager\r\n        // outside they were already added to the UI\r\n        // inside Dropzone, will be needed a .next() method for manager\r\n\r\n        // 1st allow deleted files and ignore new ones\r\n        // reduce the arrOfExtFileInstances array\r\n        // parecido a listas ligadas, iterar hasta encontrar null XD\r\n        let incommingTemp: ExtFile[] = [...extFileIncomming];\r\n        incommingTemp = incommingTemp.filter(\r\n            (F) => arrOfExtFiles?.findIndex(I => I.id === F.id) === -1\r\n        );\r\n\r\n        //console.log(\"reconciliation incommingTemp\", incommingTemp);\r\n        \r\n\r\n        //different sizes not allowed\r\n        if (arrOfExtFiles.length !== extFileIncomming.length || extFileIncomming.length === 0) {\r\n            return undefined;\r\n        }\r\n        for (let i = 0; i < arrOfExtFiles.length; i++) {\r\n            if (\r\n                (extFileIncomming[i].uploadStatus === undefined)\r\n                &&\r\n                (arrOfExtFiles[i].uploadStatus === \"preparing\")\r\n            ) {\r\n                //console.log(\"useDropzoneFileListUpdater onCancel i\", i);\r\n                arrOfExtFiles[i].uploadStatus = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}","\r\nimport { DropzoneLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, ExtFileInstance, UploadResponse } from \"../types\";\r\n\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"uploading\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const setPrepToUploading = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"success\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const uploadOne = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"upload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n/**\r\n * Awaits the given time before start uploading\r\n * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs\r\n * @returns an empty object\r\n */\r\nexport const sleepPreparing = (\r\n    preparingTime: number = 5000\r\n): Promise<void> => {\r\n    //console.log(\"uploadfiles preparingTime One\", preparingTime);\r\n    return new Promise((resolve, reject) => {\r\n\r\n        setTimeout(() => {\r\n            resolve();\r\n        }, preparingTime);\r\n\r\n    });\r\n}\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const prepToUploadOne = (\r\n    extFileInstance: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"uploading\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const uploadOneExtFile = (\r\n    extFileInstance: ExtFileInstance\r\n): Promise<Object> => {\r\n    //console.log(\"upload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"success\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUpload = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<ExtFile> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const success = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"success\",\r\n                    uploadMessage: message,\r\n\r\n                });\r\n            } else {\r\n                const success = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"error\",\r\n                    uploadMessage: message,\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUploadExtFile = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<UploadResponse> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const status = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"success\",\r\n                        uploadMessage: message,\r\n                        progress: 100\r\n                    }\r\n\r\n                });\r\n            } else {\r\n                const status = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"error\",\r\n                        uploadMessage: message,\r\n                        progress: 60\r\n                    },\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n","import { ExtFile, ExtFileInstance } from \"../types\";\r\nimport { FileIdGenerator } from \"./IdGenerator\";\r\n\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile objects\r\n * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile objects\r\n */\r\nexport const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {\r\n    let extFileArray: ExtFile[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });\r\n    }\r\n    return extFileArray;\r\n};\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile instances\r\n * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile instances\r\n */\r\nexport const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {\r\n    let extFileArray: ExtFileInstance[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));\r\n    }\r\n    return extFileArray;\r\n};","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function getImageOrientation(\r\n    imageSource: string | undefined,\r\n): Promise<\"landscape\" | \"portrait\"> {\r\n    return new Promise((resolve, reject) => {\r\n        //console.log(\"getImageOrientation imageSource\", imageSource);\r\n        if (!imageSource || imageSource.length === 0) {\r\n           // console.log(\"getImageOrientation rejected\", imageSource);\r\n\r\n            reject(\"landscape\");\r\n            return;\r\n        }\r\n        try {\r\n            //console.log(\"getImageOrientation try ini\", imageSource);\r\n\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = imageSource;\r\n            img.onerror = (ev: string | Event) => {\r\n                //console.log(\"getImageOrientation There was a ne error reading\", ev);\r\n                reject(\"landscape\");\r\n            }\r\n            img.onload = () => {\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n                if (width > height) {\r\n                    resolve(\"landscape\");\r\n                } else {\r\n                    resolve(\"portrait\");\r\n                }\r\n            }\r\n        } catch (error) {\r\n            //console.error(\"An error ocurred when trying to get the image orientation\");\r\n\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to get the image orientation\");\r\n            }\r\n            reject(\"landscape\");\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * \r\n * @param file \r\n * @param name \r\n * @param type \r\n * @param size \r\n * @returns the file name, type and size\r\n */\r\nexport const getLocalFileItemData = (\r\n    file: File | undefined,\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    size: number | undefined\r\n): [string, string | undefined, number | undefined] => {\r\n\r\n    let localFileName: string = \"\";\r\n    let localFileType: string | undefined = undefined;\r\n    let localFileSize: number | undefined = undefined;\r\n\r\n    // if file object is valid, obtain metadata from it\r\n    // otherwise try to get file data from individual props in string format\r\n    if (file && typeof file.name === \"string\") {\r\n        localFileName = file.name;\r\n        localFileType = file.type;\r\n        localFileSize = file.size;\r\n    } else if (name && typeof name === \"string\") {\r\n        localFileName = name;\r\n        localFileType = type;\r\n        localFileSize = size;\r\n    }\r\n    return [localFileName, localFileType, localFileSize]\r\n}","import { ExtFile } from \"../types\";\r\n\r\nexport const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {\r\n    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== \"success\";\r\n}","export const isValidateActive = (\r\n    accept: string | undefined,\r\n    maxFileSize: number | undefined,\r\n    maxFiles: number | undefined,\r\n    validator: Function | undefined\r\n  ): boolean => {\r\n    return (\r\n      (accept !== undefined && accept !== null) ||\r\n      (maxFileSize !== undefined && maxFileSize !== null) ||\r\n      (maxFiles !== undefined && maxFiles !== null) ||\r\n      (validator !== undefined && validator !== null)\r\n    );\r\n  };\r\n  ","import { ExtFile, UPLOADSTATUS } from \"../types\";\r\nimport { FileIdGenerator, getRandomInt } from \"../utils\";\r\nimport { getRandomUploadStatus, listOfErrors } from \"../validation\";\r\n\r\n\r\n/**\r\n * Make a validated file that is ready to be used on FileItem component,\r\n * if valid is not set, a random operation will decide whether the file is valid or not\r\n * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status\r\n * If valid is true, then file can be uploaded and can have upload message if the status is succes or error\r\n * @param file The file\r\n * @param valid true if it is a valid file, otherwise is false\r\n * @param uploadStatus the current upload status. If not given a random upload status will be set\r\n * @param uploadMessage the upload message after uploading\r\n * @returns a Vaidated File object\r\n */\r\n export const makeSyntheticExtFile = (\r\n    file?: File ,\r\n    valid = (Math.ceil(Math.random() * 28) % 2 === 0),\r\n    uploadStatus?: UPLOADSTATUS,\r\n    uploadMessage?: string\r\n): ExtFile => {\r\n    //if valid, naturally, can be uploaded\r\n    let errors: string[] | undefined = [];\r\n    let newUpoadStatus = uploadStatus || getRandomUploadStatus();\r\n\r\n    let customUploadMessage: string | undefined = uploadMessage || \"\";\r\n    if (valid) {\r\n        //we can decide according to upload status \r\n        if (!uploadMessage) {\r\n            switch (newUpoadStatus) {\r\n                case \"error\": customUploadMessage = \"Upload failed. There was an error\"; break;\r\n                case \"success\": customUploadMessage = \"File was successfully upload\"; break;\r\n                default: uploadMessage = undefined;\r\n            }\r\n        }\r\n        errors = undefined;\r\n    } else {\r\n        //if not valid, just show error messages\r\n        const randInt: number = getRandomInt(0, 3);\r\n        errors.push(listOfErrors[randInt]);\r\n        newUpoadStatus = undefined;\r\n        customUploadMessage = undefined;\r\n    }\r\n    //now make a File Validated instance \r\n    const newFileValidated: ExtFile = {\r\n        id: FileIdGenerator.getNextId(),\r\n        valid: valid,\r\n        file: file,\r\n        uploadStatus: newUpoadStatus,\r\n        uploadMessage: customUploadMessage,\r\n        errors: errors\r\n    };\r\n    return newFileValidated;\r\n}\r\n","import { UPLOADSTATUS } from \"../types\";\r\nimport { getRandomInt } from \"../utils/randomInt\";\r\n\r\n/**\r\n * Generates a random number betwen 0 and 3\r\n * where\r\n * 0 => error\r\n * 1 => uploading\r\n * 2 => success\r\n * 3 => undefined\r\n * @returns a random upload status or undefined\r\n */\r\n export const getRandomUploadStatus = (): UPLOADSTATUS | undefined => {\r\n    const result: number = getRandomInt(0, 4);\r\n    switch (result) {\r\n        case 0: return \"error\";\r\n        case 1: return \"uploading\";\r\n        case 2: return \"success\";\r\n        default:\r\n            return undefined;\r\n    }\r\n}","/**\r\n * Reads an image (or other type) file as data URL in a promise way, \r\n * so you can use await.\r\n * It will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @returns data URL of the file\r\n */\r\nexport const readAsDataURL = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.readAsDataURL(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file as Text in a promise way, so you can use await.\r\n * If other kind of file is sent, this function will read it anyway\r\n * and will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns data text of the file\r\n */\r\nexport const readAsText = (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsText(file, encoding ? encoding : \"base64\");\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file and return the raw binary data from the file. \r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns raw binary data of the file\r\n */\r\nexport const readAsBinaryString = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsBinaryString(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n/**\r\n * Reads a file and returns an ArrayBuffer representing the file's data \r\n * @param file File or blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns ArrayBuffer representation of the file\r\n */\r\nexport const readAsArrayBuffer = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsArrayBuffer(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function resizeImage(\r\n    base64Str: string,\r\n    maxWidth = 135,\r\n    maxHeight = 120\r\n): Promise<string | undefined> {\r\n    return new Promise((resolve, reject) => {\r\n        try {\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = base64Str;\r\n            img.onload = () => {\r\n                let canvas: HTMLCanvasElement = document.createElement('canvas');\r\n                const MAX_WIDTH: number = maxWidth;\r\n                const MAX_HEIGHT: number = maxHeight;\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n\r\n                if (maxWidth > width && maxHeight > height) {\r\n                    resolve(base64Str);\r\n                } else\r\n                    if (width > height) {\r\n                        if (width > MAX_WIDTH) {\r\n                            height *= MAX_WIDTH / width;\r\n                            width = MAX_WIDTH;\r\n                        }\r\n                    } else {\r\n                        if (height > MAX_HEIGHT) {\r\n                            width *= MAX_HEIGHT / height;\r\n                            height = MAX_HEIGHT;\r\n                        }\r\n                    }\r\n                canvas.width = width\r\n                canvas.height = height\r\n                let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d')\r\n                if (ctx) {\r\n                    ctx.drawImage(img, 0, 0, width, height);\r\n                    resolve(canvas.toDataURL());\r\n\r\n                } else {\r\n                    if (process.env.NODE_ENV === \"development\") {\r\n                        console.error(\"An error ocurred when trying to make a thumnail\");\r\n                    }\r\n                    reject(undefined);\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to make a thumnail\");\r\n            }\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * The max size of the word in characters\r\n */\r\nexport const DEFAULT_MAX_SIZE_WORD = 30;\r\n/**\r\n * \r\n * @param word the word to be shrinked\r\n * @returns the shrinked word\r\n */\r\nexport const shrinkWord = (word = \"\", card = false): string => {\r\n    let newWord = word;\r\n    if (card) {\r\n        if (word.length >= 20) {\r\n            newWord = word.slice(0, 10) + \"...\" + word.slice(-7);\r\n        }\r\n    } else if (word.length >= DEFAULT_MAX_SIZE_WORD) {\r\n        newWord = word.slice(0, 13) + \"...\" + word.slice(-8);\r\n    }\r\n    return newWord;\r\n};"],"names":["fileSizeFormater","fileSize","toFixed","DropzoneItalian","defaultLabel","uploadingMessage","amountOfFiles","uploadFinished","uploaded","rejected","concat","noFilesMessage","footer","acceptAll","acceptCustom","accept","header","uploadFilesMessage","maxSizeMessage","maxFileSize","validFilesMessage","numberOfValidFiles","maxFiles","fakeuploadsuccess","fakeUploadError","FileItemItalian","fullInfoLayer","name","size","type","status","preparing","uploading","success","valid","denied","error","aborted","ValidateErrorItalian","maxSizeError","maxSize","acceptError","maxFileCount","DropzoneFrench","FileItemFrench","ValidateErrorFrench","DropzoneEnglish","FileItemEnglish","ValidateErrorEnglish","DropzoneSpanish","FileItemSpanish","ValidateErrorSpanish","DropzoneRussian","FileItemRussian","ValidateErrorRussian","DropzonePortuguese","FileItemPortuguese","ValidateErrorPortuguese","DropzoneSimplifiedChinese","FileItemSimplifiedChinese","ValidateErrorSimplifiedChinese","DropzoneTraditionalChinese","FileItemTraditionalChinese","ValidateErrorTraditionalChinese","FileItemLocalizer","DropzoneLocalizer","DropzoneLocalizerSelector","local","ValidateErrorLocalizer","ValidateErrorLocalizerSelector","includes","sevenzip","aac","abw","accdb","avi","azw","bmp","bz","bz2","cda","csh","css","csv","docx","drawio","eot","epub","freearc","gif","gzip","html","icalendar","java","jar","javascript","jpeg","json","jsonld","midi","mp3","mp4","mpeg","mpkg","octet","odp","ods","odt","oga","ogv","ogx","opus","otf","pdf","php","png","pptx","psd","python","tar","rar","react","rtf","sass","sh","swf","text","tiff","ttf","typescript","vsd","vue","wav","webm","weba","webp","wma","wmv","woff","xlsx","xml","xul","zip","getExt","fileName","result","exec","DEF_GEN_MIME","audioSelector","tailMime","textSelector","imageSelector","fontSelector","videoSelector","applicationSelector","mimeSelector","mimeType","headerMime","split","extensionSelector","extension","genericMime","checkIsCode","mimeUrlList","arc","mp2t","xhtml","fallBack","ExtFileInstance","extFile","id","file","imageUrl","errors","uploadMessage","uploadStatus","progress","xhr","extraData","extraUploadData","serverResponse","downloadUrl","videoUrl","this","toExtFile","extFileInstance","extFileClone","extFileInstanceKeys","Object","keys","extFileInstanceValues","values","i","length","currentValue","currKey","undefined","prototype","ExtFileManager","getNextId","nextId","setFileList","extFilesInstances","fileLists","__spreadArray","createFileListMap","removeFileListMap","process","env","NODE_ENV","console","getExtFileInstanceList","setFileListMapPreparing","dropzoneId","localFiles","validateFiles","cleanOnUpload","resultExtList","temLocalFiles","filter","map","__assign","F","setFileListMapPreparing2","SyntheticFile","createFile","File","defineProperty","get","create_aac","create_abw","create_freearc","create_avi","create_azw","create_octet","create_bmp","create_bz","create_bz2","create_cda","create_csh","create_css","create_csv","create_doc","create_docx","create_eot","create_epub","create_gzip","create_gif","create_htm","create_html","create_ico","create_icalendar","create_jar","create_jpeg","create_jpg","create_js","create_json","create_jsonld","create_mid","create_x_mid","create_midi","create_x_midi","create_mjs","create_mp3","create_mp4","create_mpeg","create_mpkg","create_odp","create_ods","create_odt","create_oga","create_ogv","create_ogx","create_opus","create_otf","create_png","create_pdf","create_php","create_ppt","create_pptx","create_rar","create_rtf","create_sh","create_svg","create_swf","create_tar","create_tif","create_tiff","create_ts","create_ttf","create_text","create_typescript","create_vsd","create_wav","create_weba","create_webm","create_webp","create_woff","create_woff2","create_xhtml","create_xlsx","create_xls","create_xml","create_xml_txt","create_xul","create_zip","create_3gp","create_3gp2","create_3gp_a","create_3gp_v","create_7z","create_python","create_java","create_react","create_vue","createFileListMiscelanious","listFile","push","createSyntheticFile","FileIdGenerator","getRandomInt","min","max","Math","floor","random","separateAccept","acceptItem","trim","validateAccept","charAt","headerMimeFile","tailMimeFile","validateExtFile","validator","validatorProps","localErrors","extFileResult","errorsResult","apply","maxFileSizeErrorMessenger","isValid","validateFile","idGenerated","listOfErrors","addExtraData","formData","extraDataKeys","append","addHeaders","headers","headerKeys","setRequestHeader","TIMEOUT_ERROR_RESPONSE","message","payload","ABORTED_ERROR_RESPONSE","JSON_PARSE_ERROR_RESPONSE","UNEXPECTED_ERROR_RESPONSE","NO_XHR_PROVIDED_ERROR","JsonParseResponse","jsonResponse","JSON","parse","response","makeSuccessUploadResponse","responseFui","makeErrorUploadResponse","uploadFormData","method","endpoint","data","Promise","resolve","reject","finalMethod","toUpperCase","upload","onload","ontimeout","onabort","onloadend","e","__awaiter","onreadystatechange","readyState","open","send","NAMED_COLORS","indianred","lightcoral","salmon","darksalmon","lightsalmon","crimson","red","firebrick","darkred","pink","lightpink","hotpink","deeppink","mediumvioletred","palevioletred","coral","tomato","orangered","darkorange","orange","gold","yellow","lightyellow","lemonchiffon","lightgoldenrodyellow","papayawhip","moccasin","peachpuff","palegoldenrod","khaki","darkkhaki","lavender","thistle","plum","violet","orchid","fuchsia","magenta","mediumorchid","mediumpurple","rebeccapurple","blueviolet","darkviolet","darkorchid","darkmagenta","purple","indigo","slateblue","darkslateblue","mediumslateblue","greenyellow","chartreuse","lawngreen","lime","limegreen","palegreen","lightgreen","mediumspringgreen","springgreen","mediumseagreen","seagreen","forestgreen","green","darkgreen","yellowgreen","olivedrab","olive","darkolivegreen","mediumaquamarine","darkseagreen","lightseagreen","darkcyan","teal","aqua","cyan","lightcyan","paleturquoise","aquamarine","turquoise","mediumturquoise","darkturquoise","cadetblue","steelblue","lightsteelblue","powderblue","lightblue","skyblue","lightskyblue","deepskyblue","dodgerblue","cornflowerblue","royalblue","blue","mediumblue","darkblue","navy","midnightblue","cornsilk","blanchedalmond","bisque","navajowhite","wheat","burlywood","tan","rosybrown","sandybrown","goldenrod","darkgoldenrod","peru","chocolate","saddlebrown","sienna","brown","maroon","white","snow","honeydew","mintcream","azure","aliceblue","ghostwhite","whitesmoke","seashell","beige","oldlace","floralwhite","ivory","antiquewhite","linen","lavenderblush","mistyrose","gainsboro","lightgray","silver","darkgray","gray","dimgray","lightslategray","slategray","darkslategray","black","hexColorToRGB","colorInput","perc","defaultColor","resultDefault","color","replace","isHexColor","colourNameToHex","component1","component2","component3","hexTodec","hexArray","colour","toLocaleLowerCase","decArray","letter","indexOf","asureColor","DEFAULT_FONT_COLOR","baseClassName","className","percentage","brightedColor","increase","components","parseInt","inputElement","value","uploadStatusresult","uploadedFile","url","uploadLabel","cleanonUpload","darkedColor","reduce","XMLHttpRequest","extraData1","extraData2","deleted","extFileIncomming","arrOfExtFiles","incommingTemp","findIndex","I","setTimeout","fileList","extFileArray","f","preValidatedFiles","remainingValids","localValidator","localization","output","countdown","ValidationErrorLocalizer","validatedFile","maxFileErrorMessenger","Infinity","imageSource","img_1","Image","src","onerror","ev","width","height","localFileName","localFileType","localFileSize","customIcons","mimeResume","extention","customUrl","validateFilesFlag","ceil","newUpoadStatus","getRandomUploadStatus","customUploadMessage","randInt","onProgress","onError","reader_4","FileReader","onprogress","readAsArrayBuffer","reader_3","readAsBinaryString","reader_1","readAsDataURL","encoding","reader_2","readAsText","base64Str","maxWidth","maxHeight","canvas","document","createElement","MAX_WIDTH","MAX_HEIGHT","ctx","getContext","drawImage","toDataURL","arrExtFile","_a","extFileobj","prevStatus","nextStstaus","word","card","newWord","slice","preparingTime","time","extFileList","uploader","localMethod","fileToUpload","FormData","finalExtraData","otherValue","param2","tecnica","friend","age","addExtraDataUpload","label","_this","sent","localValidatorProps","fileListResult","remaining","currentExtFile"],"mappings":"oEAIQ,IAAMA,EAAmB,SAACC,GAE9B,GAAKA,EAiBL,OAdIA,EAAW,KACFA,EAAW,SAGhBA,EAAW,SACDA,EAAW,MAAMC,QAAQ,GAAK,MACjCD,EAAW,YACPA,EAAW,KAAQ,MAAMC,QAAQ,GAAK,MAC1CD,EAAW,eACNA,EAAW,KAAQ,KAAQ,MAAMC,QAAQ,GAAK,OAE7CD,EAAW,KAAQ,KAAQ,KAAQ,MAAMC,QAAQ,GAAK,KAI/E,EClBaC,EAA+B,CACxCC,aAAc,2BAEdC,iBAAkB,SAACC,GAAoB,MAAO,yBAAkBA,EAAa,QAAU,EACvFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,kBAAAC,OAAkBF,EAAQ,sBAAAE,OAAqBD,EAAU,EACjGE,eAAgB,kDAChBC,OAAQ,CACJC,UAAW,sCACXC,aAAc,SAACC,GAAW,MAAA,4BAA4BL,OAAAK,EAAQ,GAElEC,OAAQ,CACJC,mBAAoB,cACpBC,eAAgB,SAACC,GAAgB,MAAA,sBAAsBT,OAAAS,EAAa,EACpEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,SAAAZ,OAASW,EAAkB,KAAAX,OAAIY,EAAU,GAElGC,kBAAmB,yCACnBC,gBAAiB,kCAMRC,EAA+B,CACxCC,cAAe,CACXC,KAAM,SACNC,KAAM,eACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,eACVC,UAAW,WACXC,QAAS,WACTC,MAAO,SACPC,OAAQ,aACRC,MAAO,SACPC,QAAQ,eAMFC,EAAoC,CAC9CC,aAAc,SAACC,GAAY,MAAA,gDAAA9B,OAAgDV,EAAiBwC,GAAoB,EAChHC,YAAa,wBACbC,aAAc,SAACpB,GAAa,MAAA,2BAA2BZ,OAAAY,EAAqB,cAAA,GC5CnEqB,EAA8B,CACvCvC,aAAc,2BAEdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,YAAc,EACrFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,0BAAAC,OAA0BF,EAAQ,wBAAAE,OAAuBD,EAAU,EAC3GE,eAAgB,iCAChBC,OAAQ,CACJC,UAAW,mCACXC,aAAc,SAACC,GAAW,MAAA,qBAAqBL,OAAAK,EAAQ,GAE3DC,OAAQ,CACJC,mBAAoB,UACpBC,eAAgB,SAACC,GAAgB,MAAA,mBAAmBT,OAAAS,EAAa,EACjEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,aAAAZ,OAAaW,EAAkB,KAAAX,OAAIY,EAAU,GAEtGC,kBAAmB,0CACnBC,gBAAiB,kCAMRoB,EAA8B,CACvClB,cAAe,CACXC,KAAM,WACNC,KAAM,cACNC,KAAM,aAEVC,OAAQ,CACJC,UAAU,WACVC,UAAW,WACXC,QAAS,SACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,QAAQ,eAMFQ,EAAmC,CAC7CN,aAAc,SAACC,GAAY,MAAA,6DAAA9B,OAA6DV,EAAiBwC,GAAoB,EAC7HC,YAAa,2BACbC,aAAc,SAACpB,GAAa,MAAA,gCAAgCZ,OAAAY,EAAW,IAAA,GC5C9DwB,EAA+B,CACxC1C,aAAc,uBACdC,iBAAkB,SAACC,GAAoB,MAAO,oBAAaA,EAAa,SAAW,EACnFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,mBAAAC,OAAmBF,EAAQ,sBAAAE,OAAqBD,EAAU,EAClGE,eAAgB,2CAChBC,OAAQ,CACJC,UAAW,0BACXC,aAAc,SAACC,GAAW,MAAA,kBAAkBL,OAAAK,EAAQ,GAExDC,OAAQ,CACJC,mBAAoB,eACpBC,eAAgB,SAACC,GAAgB,MAAA,kBAAkBT,OAAAS,EAAa,EAChEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,SAAAZ,OAASW,EAAkB,KAAAX,OAAIY,EAAU,GAElGC,kBAAmB,gCACnBC,gBAAiB,+CAMRuB,EAA+B,CACxCrB,cAAe,CACXC,KAAM,SACNC,KAAM,SACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,YACVC,UAAW,YACXC,QAAS,UACTC,MAAO,QACPC,OAAQ,YACRC,MAAO,QACPC,QAAQ,YAOHW,EAAoC,CAC7CT,aAAc,SAACC,GACX,MAAA,6CAA6C9B,OAAAV,EAAiBwC,GAAoB,EACtFC,YAAa,2BACbC,aAAc,SAACpB,GACX,MAAA,wBAAAZ,OAAwBY,EAA4B,qBAAA,GC9C/C2B,EAA+B,CACxC7C,aAAc,2BAEdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,YAAc,EACrFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,qBAAAC,OAAqBF,EAAQ,2BAAAE,OAA0BD,EAAU,EACzGE,eAAgB,+CAChBC,OAAQ,CACJC,UAAW,uCACXC,aAAc,SAACC,GAAW,MAAA,kCAAkCL,OAAAK,EAAQ,GAExEC,OAAQ,CACJC,mBAAoB,QACpBC,eAAgB,SAACC,GAAgB,MAAA,eAAeT,OAAAS,EAAa,EAC7DC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,YAAAZ,OAAYW,EAAkB,KAAAX,OAAIY,EAAU,GAErGC,kBAAmB,oCACnBC,gBAAiB,6BAMR0B,EAA+B,CACxCxB,cAAe,CACXC,KAAM,WACNC,KAAM,WACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,aACVC,UAAW,WACXC,QAAS,QACTC,MAAO,SACPC,OAAQ,YACRC,MAAO,QACPC,QAAS,YAMJc,EAAoC,CAC7CZ,aAAc,SAACC,GAAY,MAAA,+CAAA9B,OAA+CV,EAAiBwC,GAAoB,EAC/GC,YAAa,+BACbC,aAAc,SAACpB,GAAa,MAAA,gCAAgCZ,OAAAY,EAAqB,cAAA,GC5CxE8B,EAA+B,CACxChD,aAAc,8BACdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,UAAY,EACnFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,qBAAAC,OAAqBF,EAAQ,0BAAAE,OAAyBD,EAAU,EACxGE,eAAgB,kDAChBC,OAAQ,CACJC,UAAW,+BACXC,aAAc,SAACC,GAAW,MAAA,oBAAoBL,OAAAK,EAAQ,GAE1DC,OAAQ,CACJC,mBAAoB,YACpBC,eAAgB,SAACC,GAAgB,MAAA,gBAAgBT,OAAAS,EAAa,EAC9DC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,SAAAZ,OAASW,EAAkB,KAAAX,OAAIY,EAAU,GAElGC,kBAAmB,4BACnBC,gBAAiB,uBAOR6B,EAA+B,CACxC3B,cAAe,CACXC,KAAM,QACNC,KAAM,WACNC,KAAM,SAEVC,OAAQ,CACJC,UAAU,aACVC,UAAW,WACXC,QAAS,QACTC,MAAO,SACPC,OAAQ,YACRC,MAAO,SACPC,QAAQ,eAOHiB,EAAoC,CAC7Cf,aAAc,SAACC,GACX,MAAA,+DAA+D9B,OAAAV,EAAiBwC,GAAoB,EACxGC,YAAa,wBACbC,aAAc,SAACpB,GACX,MAAA,8CAAAZ,OAA8CY,EAAW,IAAA,GC/CpDiC,EAAkC,CAC3CnD,aAAc,4BAEdC,iBAAkB,SAACC,GAAoB,MAAO,mBAAYA,EAAa,YAAc,EACrFC,eAAgB,SAACC,EAAUC,GAAa,MAAA,sBAAAC,OAAsBF,EAAQ,2BAAAE,OAA0BD,EAAU,EAC1GE,eAAgB,kDAChBC,OAAQ,CACJC,UAAW,wCACXC,aAAc,SAACC,GAAW,MAAA,qBAAqBL,OAAAK,EAAQ,GAE3DC,OAAQ,CACJC,mBAAoB,SACpBC,eAAgB,SAACC,GAAgB,MAAA,mBAAmBT,OAAAS,EAAa,EACjEC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,YAAAZ,OAAYW,EAAkB,KAAAX,OAAIY,EAAU,GAErGC,kBAAmB,oCACnBC,gBAAiB,kBAORgC,EAAkC,CAC3C9B,cAAe,CACXC,KAAM,SACNC,KAAM,YACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,aACVC,UAAW,WACXC,QAAS,QACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,OACPC,QAAQ,aAMFoB,EAAuC,CACjDlB,aAAc,SAACC,GAAY,MAAA,qEAAA9B,OAAqEV,EAAiBwC,GAAoB,EACrIC,YAAa,qCACbC,aAAc,SAACpB,GAAa,MAAA,kCAAkCZ,OAAAY,EAAqB,cAAA,GC7C1EoC,EAAyC,CAClDtD,aAAc,YACdC,iBAAkB,SAACC,GAAoB,MAAO,aAAMA,EAAa,OAAS,EAC1EC,eAAgB,SAACC,EAAUC,GAAa,MAAA,QAAAC,OAAQF,EAAQ,UAAAE,OAASD,EAAU,EAC3EE,eAAgB,eAChBC,OAAQ,CACJC,UAAW,WACXC,aAAc,SAACC,GAAW,MAAA,UAAUL,OAAAK,EAAQ,GAEhDC,OAAQ,CACJC,mBAAoB,OACpBC,eAAgB,SAACC,GAAgB,MAAA,UAAUT,OAAAS,EAAa,EACxDC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,MAAAZ,OAAMW,EAAkB,KAAAX,OAAIY,EAAU,GAE/FC,kBAAmB,UACnBC,gBAAiB,SAMRmC,EAAyC,CAClDjC,cAAe,CACXC,KAAM,SACNC,KAAM,OACNC,KAAM,UAEVC,OAAQ,CACJC,UAAU,MACVC,UAAW,KACXC,QAAS,KACTC,MAAO,QACPC,OAAQ,SACRC,MAAO,KACPC,QAAQ,OAOHuB,EAA8C,CACvDrB,aAAc,SAACC,GACX,MAAA,oBAAoB9B,OAAAV,EAAiBwC,GAAoB,EAC7DC,YAAa,UACbC,aAAc,SAACpB,GACX,MAAA,aAAAZ,OAAaY,EAAW,IAAA,GC7CnBuC,EAA0C,CACnDzD,aAAc,aACdC,iBAAkB,SAACC,GAAoB,MAAO,YAAKA,EAAa,MAAQ,EACxEC,eAAgB,SAACC,EAAUC,GAAa,MAAA,SAAAC,OAASF,EAAQ,YAAAE,OAAWD,EAAU,EAC9EE,eAAgB,eAChBC,OAAQ,CACJC,UAAW,WACXC,aAAc,SAACC,GAAW,MAAA,SAASL,OAAAK,EAAQ,GAE/CC,OAAQ,CACJC,mBAAoB,OACpBC,eAAgB,SAACC,GAAgB,MAAA,UAAUT,OAAAS,EAAa,EACxDC,kBAAmB,SAACC,EAAoBC,GAAa,MAAA,OAAAZ,OAAOW,EAAkB,KAAAX,OAAIY,EAAU,GAEhGC,kBAAmB,UACnBC,gBAAiB,SAMRsC,EAA0C,CACnDpC,cAAe,CACXC,KAAM,SACNC,KAAM,SACNC,KAAM,UAEVC,OAAQ,CACJC,UAAW,MACXC,UAAW,KACXC,QAAS,KACTC,MAAO,OACPC,OAAQ,OACRC,MAAO,KACPC,QAAS,OAOJ0B,EAA+C,CACxDxB,aAAc,SAACC,GACX,MAAA,oBAAoB9B,OAAAV,EAAiBwC,GAAoB,EAC7DC,YAAa,UACbC,aAAc,SAACpB,GACX,MAAA,aAAAZ,OAAaY,EAAW,IAAA,GC3CnB0C,EAAwC,CACjD,QAASd,EACT,QAASH,EACT,QAASH,EACT,QAASnB,EACT,QAAS+B,EACT,QAASH,EACT,QAASM,EACT,QAASG,GCRAG,EAAwC,CACjD,QAAShB,EACT,QAASH,EACT,QAASH,EACT,QAASxC,EACT,QAASoD,EACT,QAASH,EACT,QAASM,EACT,QAASG,GAQAK,EAA4B,SAACC,GACtC,OAAQA,GACJ,IAAK,QAAS,OAAOF,EAAkB,SACvC,IAAK,QAOL,QAAS,OAAOA,EAAkB,SANlC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SAG/C,EC5BaG,EAA6C,CACtD,QAASjB,EACT,QAASH,EACT,QAASH,EACT,QAASP,EACT,QAASmB,EACT,QAASH,EACT,QAASM,EACT,QAASG,GAOAM,EAAiC,SAACF,GAC3C,OAAKA,GAAU,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAASG,SAASH,GAG1FC,EAAuBD,GAFnBC,EAAuB,QAGtC,EC9BO,IAAMG,EAAW,wGACXC,EAAM,wGACNC,EAAM,wGACNC,EAAQ,wGACRC,EAAM,wGACNC,EAAM,wGACNC,EAAM,wGACNC,EAAK,wGACLC,EAAM,wGAENC,EAAM,wGACNC,EAAM,wGACNC,EAAM,wGACNC,EAAM,wGACNC,EAAO,wGAEPC,EAAS,wGAGTC,EAAM,wGAENC,EAAO,wGACPC,EAAU,wGACVC,EAAM,wGACNC,EAAO,wGACPC,EAAO,wGACPC,EAAY,wGAGZC,EAAO,wGACPC,EAAM,wGACNC,GAAa,wGACbC,GAAO,wGAEPC,GAAO,wGACPC,GAAS,wGACTC,GAAO,wGAEPC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGACPC,GAAQ,wGACRC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGAGPC,GAAM,wGAGNC,GAAS,wGACTC,GAAM,wGACNC,GAAM,wGACNC,GAAQ,wGAERC,GAAM,wGACNC,GAAO,wGAEPC,GAAK,wGACLC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGACPC,GAAM,wGACNC,GAAa,wGAEbC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGACPC,GAAO,wGACPC,GAAM,wGACNC,GAAM,wGACNC,GAAO,wGACPC,GAAO,wGAEPC,GAAM,wGACNC,GAAM,wGACNC,GAAM,wGCnFLC,GAAS,SAACC,GACpB,IACMC,EADK,kBACOC,KAAKF,GACvB,OAAIC,EACOA,EAAO,GAEP,EAGf,ECSME,GAA+B,QAMxBC,GAAgB,SAACC,GAC1B,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,OACL,IAAK,SAAU,MAAO,OACtB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OAIpB,IAAK,MAAO,MAAO,MACnB,QAAS,OAAOF,GAExB,EACaG,GAAe,SAACD,GACzB,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,WAAY,MAAO,YACxB,IAAK,aACL,IAAK,eAAgB,MAAO,aAC5B,IAAK,QAAS,MAAO,OACrB,IAAK,MAAO,MAAO,MACnB,QAAS,OAAOF,GAGxB,EACaI,GAAgB,SAACF,GAC1B,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MAGnB,IAAK,MACL,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MAGnB,IAAK,OAAQ,MAAO,OACpB,IAAK,OAAQ,MAAO,OACpB,QAAS,OAAOF,GAGxB,EACaK,GAAe,SAACH,GACzB,OAAQA,GACJ,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MACnB,IAAK,OACL,IAAK,QAAS,MAAO,OACrB,QAAS,OAAOF,GAGxB,EAEaM,GAAgB,SAACJ,GAC1B,OAAQA,GACJ,IAAK,YACL,IAAK,UACL,IAAK,MAAO,MAAO,MACnB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MACnB,IAAK,OAAQ,MAAO,OACpB,IAAK,MAAO,MAAO,MAEnB,IAAK,OAAQ,MAAO,OAIpB,QAAS,OAAOF,GAExB,EAMaO,GAAsB,SAACL,GAChC,OAAQA,GACJ,IAAK,YACL,IAAK,UAAW,MAAO,MACvB,IAAK,YACL,IAAK,UAAW,MAAO,MACvB,IAAK,mBAAoB,MAAO,MAChC,IAAK,eAAgB,MAAO,QAC5B,IAAK,SAEL,IAAK,OAAQ,MAAO,KADpB,IAAK,UAEL,IAAK,QAAS,MAAO,MACrB,IAAK,QAAS,MAAO,MACrB,IAAK,WAAY,MAAO,QACxB,IAAK,MACL,IAAK,QAAS,MAAO,MACrB,IAAK,oBAAqB,MAAO,MACjC,IAAK,WAAY,MAAO,OACxB,IAAK,OAAQ,MAAO,OACpB,IAAK,eAAgB,MAAO,MAC5B,IAAK,eAAgB,MAAO,aAC5B,IAAK,OAAQ,MAAO,OACpB,IAAK,UAAW,MAAO,SACvB,IAAK,0BAA2B,MAAO,OACvC,IAAK,MAAO,MAAO,MACnB,IAAK,UAAW,MAAO,MACvB,IAAK,MAAO,MAAO,MACnB,IAAK,OACL,IAAK,KAAM,MAAO,KAClB,IAAK,oBAAqB,MAAO,MACjC,IAAK,QAAS,MAAO,MACrB,IAAK,cAAe,MAAO,MAC3B,IAAK,YAAa,MAAO,MACzB,IAAK,YAAa,MAAO,QACzB,IAAK,MAAO,MAAO,MACnB,IAAK,sBAAuB,MAAO,MACnC,IAAK,8DACL,IAAK,SAAU,MAAO,OACtB,IAAK,wDAAyD,MAAO,OACrE,IAAK,gEACL,IAAK,oBAAqB,MAAO,OACjC,IAAK,sCAAuC,MAAO,MACnD,IAAK,8BAA+B,MAAO,MAC3C,IAAK,qCAAsC,MAAO,MAClD,IAAK,MACL,IAAK,mBAAoB,MAAO,MAChC,IAAK,MAAO,MAAO,MACnB,QAAS,OAAOF,GAExB,EAOaQ,GAAe,SAACC,GAEzB,IAAKA,IAAaA,EAAStF,SAAS,KAChC,OAAO6E,GAEX,IAAIU,EAAaD,EAASE,MAAM,KAAK,GACjCT,EAAWO,EAASE,MAAM,KAAK,GAMnC,OAAQD,GACJ,IAAK,cAAe,OAAOH,GAAoBL,GAC/C,IAAK,QAAS,OAAOD,GAAcC,GACnC,IAAK,QAAS,OAAOI,GAAcJ,GACnC,IAAK,OAAQ,OAAOC,GAAaD,GACjC,IAAK,QAAS,OAAOE,GAAcF,GACnC,IAAK,OAAQ,OAAOG,GAAaH,GAEjC,QAAS,OAAOF,GAExB,EAQaY,GAAoB,SAACC,GAC9B,IAAIC,EAA8B,QA6BlC,OA3BID,GAA2B,KAAdA,IACTA,EAAU1F,SAAS,QAAU0F,EAAU1F,SAAS,OAChD2F,EAAc,MACPD,EAAU1F,SAAS,OAC1B2F,EAAc,OACPD,EAAU1F,SAAS,OAC1B2F,EAAc,OACPD,EAAU1F,SAAS,UAC1B2F,EAAc,SACPD,EAAU1F,SAAS,OAC1B2F,EAAc,MACPD,EAAU1F,SAAS,OAC1B2F,EAAc,MACO,QAAdD,EACPC,EAAc,QACO,OAAdD,EACPC,EAAc,SACO,QAAdD,EACPC,EAAc,MACO,SAAdD,EACPC,EAAc,OACO,OAAdD,EACPC,EAAc,aACO,SAAdD,GAAsC,SAAdA,IAC/BC,EAAc,SAGfA,CAEX,EAMaC,GAAc,SAACF,GACxB,IAAIC,EAA8B,OAoBlC,OAnBID,GAA2B,KAAdA,IACK,QAAdA,EACAC,EAAc,QACO,OAAdD,EACPC,EAAc,SACO,QAAdD,EACPC,EAAc,MACO,SAAdD,EACPC,EAAc,OACO,OAAdD,GAAoC,QAAdA,EAC7BC,EAAc,aACO,OAAdD,EACPC,EAAc,aACO,QAAdD,EACPC,EAAc,MACO,QAAdD,IACPC,EAAc,QAGfA,CACX,EA8FME,GAA4B,CAC9B3F,IAAKA,EACLE,MAAOA,EACPD,IAAKA,EACL2F,IAAK5E,EACLb,IAAKA,EACLC,IAAKA,EACL4B,MAAOA,GACP3B,IAAKA,EACLC,GAAIA,EACJC,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,KAAMA,EACNC,OAAQA,EACRC,IAAKA,EACLC,KAAMA,EACNG,KAAMA,EACND,IAAKA,EACLE,KAAMA,EAENC,UAAWA,EACXE,IAAKA,EACLE,KAAMA,GACND,WAAYA,GACZE,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GAENC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACN8D,KAAM7D,GACNC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,IAAKA,GACLG,IAAKA,GACLF,IAAKA,GACLC,IAAKA,GACLE,KAAMA,GACNC,IAAKA,GACLG,IAAKA,GACLE,IAAKA,GACLC,KAAMA,GACNC,GAAIA,GAEJC,IAAKA,GACLN,IAAKA,GACLQ,KAAMA,GACNC,IAAKA,GAELC,WAAYA,GACZH,KAAMA,GACNI,IAAKA,GACLE,IAAKA,GACLE,KAAMA,GACND,KAAMA,GACNE,KAAMA,GACNG,KAAMA,GACNF,IAAKA,GACLC,IAAKA,GACL6B,MAAO3E,EACPgD,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GAELvE,SAAUA,EACV+C,OAAQA,GACRzB,KAAMA,EACN4B,MAAOA,GACPU,IAAKA,GAGLoC,SAAU/D,ICvVdgE,GAAA,WAuEI,SAAAA,EAAYC,GAEJ,IAAAC,EAgBAD,KAfAE,EAeAF,EAAOE,KAdPhJ,EAcA8I,EAAO9I,KAbPC,EAaA6I,EAbI7I,KACJC,EAYA4I,EAZI5I,KACJ+I,EAWAH,WAVAvI,EAUAuI,QATAI,EASAJ,EAAOI,OARPC,EAQAL,EAAOK,cAPPC,EAOAN,EAPYM,aACZC,EAMAP,EANQO,SACRC,EAKAR,MAJAS,EAIAT,EAAOS,UAHPC,EAGAV,EAAOU,gBAFPC,EAEAX,EAFcW,eACdC,EACAZ,EADWY,YAAEC,EACbb,WAEJc,KAAKb,GAAKA,EACVa,KAAKZ,KAAOA,EACZY,KAAK5J,KAAOA,EACZ4J,KAAK3J,KAAOA,EACZ2J,KAAK1J,KAAOA,EACZ0J,KAAKX,SAAWA,EAEhBW,KAAKrJ,MAAQA,EACbqJ,KAAKV,OAASA,EACdU,KAAKR,aAAeA,EACpBQ,KAAKT,cAAgBA,EACrBS,KAAKP,SAAWA,EAChBO,KAAKN,IAAMA,EAEXM,KAAKL,UAAYA,EACjBK,KAAKJ,gBAAkBA,EACvBI,KAAKH,eAAiBA,EAEtBG,KAAKF,YAAcA,EACnBE,KAAKD,SAAWA,CACnB,CA+CL,OAlCWd,EAASgB,UAAhB,SAAiBC,GAOb,IAJA,IAAIC,EAAwB,CAAA,EACtBC,EAAsBC,OAAOC,KAAKJ,GAClCK,EAAwBF,OAAOG,OAAON,GAEnCO,EAAI,EAAGA,EAAIF,EAAsBG,OAAQD,IAAK,CACnD,IAAME,EAAuCJ,EAAsBE,GAG7DG,EAAUR,EAAoBK,QACfI,IAAjBF,IAEAR,EAAaS,GAAWD,EAE/B,CAGD,OAAOR,GAMXlB,EAAA6B,UAAAb,UAAA,WACI,OAAOhB,EAAgBgB,UAAUD,OAQxCf,CAAD,2vDCtPA,IAAA8B,GAAA,WAAA,SAAAA,IAkOC,CAAD,OA3NkBA,EAAAC,UAAd,WAEI,OADAD,EAAeE,SACRF,EAAeE,QAQZF,EAAAG,YAAd,SACI/B,EACAgC,GAEA,OAAKhC,GAGD4B,EAAeK,UAAUjC,GAAUkC,GAAA,GAAAF,MAE5BhC,GAJA,GAYD4B,EAAAO,kBAAd,WACI,IAAML,EAAiBF,EAAeC,YAGtC,OAFAD,EAAeK,UAAUH,GAAU,GAE5BA,GAOGF,EAAiBQ,kBAA/B,SAAgCpC,GAC5B,IAAKA,EACD,OAAO,EAEP,IAEI,OADA4B,EAAeK,UAAUjC,QAAM0B,EACxB1B,CACV,CAAC,MAAOtI,GAGL,MAF6B,gBAAzB2K,QAAQC,IAAIC,UACZC,QAAQ9K,MAAM,kBAAmBA,GAC9B,CACV,GAQKkK,EAAsBa,uBAApC,SACIzC,GAEA,IACI,IAAKA,EACD,OAEJ,OAAO4B,EAAeK,UAAUjC,EACnC,CAAC,MAAOtI,GAGL,YAF6B,gBAAzB2K,QAAQC,IAAIC,UACZC,QAAQ9K,MAAM,kCAAmCA,GAExD,GAeSkK,EAAuBc,wBAArC,SACIC,EACAC,EACAC,EACAC,GAIA,GAA4B,iBAAfH,GAAiD,iBAAfA,EAG/C,IAEI,IAAII,EAGAC,EAAad,GAAA,GAAkBU,GAAU,GAGzCE,GAAiBD,IAEjBG,EAAgBA,EAAcC,QAAO,SAAAlD,GAAW,OAAAA,EAAQvI,KAAR,KAqCpDuL,GA1BIC,EALAH,EAMIG,EACKE,KAAI,SAAAnD,GACD,MAA6B,YAAzBA,EAAQM,cAA8BN,EAAQvI,MAC9C2L,GAAAA,GAAA,GAAYpD,GAAO,CAAEM,aAAc,cAEnC8C,GAAA,GAAYpD,EAEpB,IAKJiD,EACKE,KAAI,SAAAnD,GACD,MAA6B,YAAzBA,EAAQM,aACR8C,GAAAA,GAAA,GAAYpD,GAAO,CAAEM,aAAc,cAEnC8C,GAAA,GAAYpD,EAEpB,KAMkBmD,KAAI,SAAAE,GAAK,OAAA,IAAItD,GAAgBsD,EAApB,IAGrBxB,EAAeG,YAAYY,EAAYI,GAGzD,OAAOA,CAEV,CAAC,MAAOrL,GAGL,YAF6B,gBAAzB2K,QAAQC,IAAIC,UACZC,QAAQ9K,MAAM,4CAA6CA,GAElE,GAmBSkK,EAAwByB,yBAAtC,SACIV,EACAC,EACAC,EACAC,GAKA,OAFAlB,EAAeG,YAAYY,EAAYC,EAAWM,KAAI,SAAAE,GAAK,OAAA,IAAItD,GAAeqD,GAAAA,GAAA,CAAA,EAAMC,GAAC,CAAE/C,aAAc,cAAc,KAE5GuB,EAAea,uBAAuBE,IA5LlCf,EAAME,OAAW,EACzBF,EAASK,UAA2D,GAgO9EL,CAAA,IC/ND0B,GAAA,WAAA,SAAAA,IAmyBC,CAAD,OA3xBWA,EAAAC,WAAa,SAACtM,EAAcC,EAAcC,GAC7C,IAAM8I,EAAO,IAAIuD,KAAK,GAAIvM,EAAM,CAAEE,KAAIA,IAMtC,OALA+J,OAAOuC,eAAexD,EAAM,OAAQ,CAChCyD,IAAG,WACC,OAAOxM,CACV,IAEE+I,CACX,EAMOqD,EAAUK,WAAG,SAACzM,GACjB,OAAOoM,EAAcC,WAAW,qCAAsCrM,GAAc,QAAS,YACjG,EAMOoM,EAAUM,WAAG,SAAC1M,GACjB,OAAOoM,EAAcC,WAAW,mCAAoCrM,GAAc,QAAS,wBAC/F,EAMOoM,EAAcO,eAAG,SAAC3M,GACrB,OAAOoM,EAAcC,WAAW,mCAAoCrM,GAAc,QAAS,wBAC/F,EAMOoM,EAAUQ,WAAG,SAAC5M,GACjB,OAAOoM,EAAcC,WAAW,+BAAgCrM,GAAc,QAAS,kBAC3F,EAMOoM,EAAUS,WAAG,SAAC7M,GACjB,OAAOoM,EAAcC,WAAW,+CAAgDrM,GAAc,QAAS,+BAC3G,EAMOoM,EAAYU,aAAG,SAAC9M,GACnB,OAAOoM,EAAcC,WAAW,+CAAgDrM,GAAc,QAAS,2BAC3G,EAMOoM,EAAUW,WAAG,SAAC/M,GACjB,OAAOoM,EAAcC,WAAW,mCAAoCrM,GAAc,QAAS,YAC/F,EAMOoM,EAASY,UAAG,SAAChN,GAChB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,qBAC7F,EAMOoM,EAAUa,WAAG,SAACjN,GACjB,OAAOoM,EAAcC,WAAW,oCAAqCrM,GAAc,QAAS,sBAChG,EAMOoM,EAAUc,WAAG,SAAClN,GACjB,OAAOoM,EAAcC,WAAW,oCAAqCrM,GAAc,QAAS,oBAChG,EAMOoM,EAAUe,WAAG,SAACnN,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,oBAC5F,EAMOoM,EAAUgB,WAAG,SAACpN,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,WAC5F,EAMOoM,EAAUiB,WAAG,SAACrN,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,WAC5F,EAMOoM,EAAUkB,WAAG,SAACtN,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,qBAC5F,EAMOoM,EAAWmB,YAAG,SAACvN,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,0EAC7F,EAMOoM,EAAUoB,WAAG,SAACxN,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,gCAC5F,EAMOoM,EAAWqB,YAAG,SAACzN,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,uBAC7F,EAMOoM,EAAWsB,YAAG,SAAC1N,GAClB,OAAOoM,EAAcC,WAAW,+BAAgCrM,GAAc,QAAS,mBAC3F,EAMOoM,EAAUuB,WAAG,SAAC3N,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,YAC5F,EAMOoM,EAAUwB,WAAG,SAAC5N,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,YAC5F,EAMOoM,EAAWyB,YAAG,SAAC7N,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,YAC7F,EAMOoM,EAAU0B,WAAG,SAAC9N,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,2BAC5F,EAMOoM,EAAgB2B,iBAAG,SAAC/N,GACvB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,gBAC5F,EAMOoM,EAAU4B,WAAG,SAAChO,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,2BAC5F,EAMOoM,EAAW6B,YAAG,SAACjO,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,aAC7F,EAMOoM,EAAU8B,WAAG,SAAClO,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,aAC5F,EAMOoM,EAAS+B,UAAG,SAACnO,GAChB,OAAOoM,EAAcC,WAAW,+BAAgCrM,GAAc,QAAS,kBAC3F,EAMOoM,EAAWgC,YAAG,SAACpO,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,mBAC7F,EAMOoM,EAAaiC,cAAG,SAACrO,GACpB,OAAOoM,EAAcC,WAAW,mCAAoCrM,GAAc,QAAS,sBAC/F,EAMOoM,EAAUkC,WAAG,SAACtO,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,aAC5F,EAMOoM,EAAYmC,aAAG,SAACvO,GACnB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,eAC5F,EAMOoM,EAAWoC,YAAG,SAACxO,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,eAC7F,EAMOoM,EAAaqC,cAAG,SAACzO,GACpB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,eAC7F,EAMOoM,EAAUsC,WAAG,SAAC1O,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,kBAC5F,EAMOoM,EAAUuC,WAAG,SAAC3O,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,aAC5F,EAMOoM,EAAUwC,WAAG,SAAC5O,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,YAC5F,EAMOoM,EAAWyC,YAAG,SAAC7O,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,aAC7F,EAMOoM,EAAW0C,YAAG,SAAC9O,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,sCAC7F,EAMOoM,EAAU2C,WAAG,SAAC/O,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,kDAC5F,EAMOoM,EAAU4C,WAAG,SAAChP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,iDAC5F,EAMOoM,EAAU6C,WAAG,SAACjP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,0CAC5F,EAMOoM,EAAU8C,WAAG,SAAClP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,YAC5F,EAMOoM,EAAU+C,WAAG,SAACnP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,YAC5F,EAMOoM,EAAUgD,WAAG,SAACpP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,kBAC5F,EAMOoM,EAAWiD,YAAG,SAACrP,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,aAC7F,EAMOoM,EAAUkD,WAAG,SAACtP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,WAC5F,EAMOoM,EAAUmD,WAAG,SAACvP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,YAC5F,EAMOoM,EAAUoD,WAAG,SAACxP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,kBAC5F,EAMOoM,EAAUqD,WAAG,SAACzP,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,0BAC5F,EAMOoM,EAAUsD,WAAG,SAAC1P,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,gCAC5F,EAMOoM,EAAWuD,YAAG,SAAC3P,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,4EAC7F,EAMOoM,EAAUwD,WAAG,SAAC5P,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,sBAC5F,EAMOoM,EAAUyD,WAAG,SAAC7P,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,kBAC5F,EAMOoM,EAAS0D,UAAG,SAAC9P,GAChB,OAAOoM,EAAcC,WAAW,+BAAgCrM,GAAc,QAAS,mBAC3F,EAMOoM,EAAU2D,WAAG,SAAC/P,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,gBAC5F,EAMOoM,EAAU4D,WAAG,SAAChQ,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,gCAC5F,EAMOoM,EAAU6D,WAAG,SAACjQ,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,oBAC5F,EAMOoM,EAAU8D,WAAG,SAAClQ,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,aAC5F,EAMOoM,EAAW+D,YAAG,SAACnQ,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,aAC7F,EAMOoM,EAASgE,UAAG,SAACpQ,GAChB,OAAOoM,EAAcC,WAAW,qCAAsCrM,GAAc,QAAS,aACjG,EAMOoM,EAAUiE,WAAG,SAACrQ,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,WAC5F,EAMOoM,EAAWkE,YAAG,SAACtQ,GAClB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,aAC5F,EAMOoM,EAAiBmE,kBAAG,SAACvQ,GACxB,OAAOoM,EAAcC,WAAW,qCAAsCrM,GAAc,QAAS,aACjG,EAMOoM,EAAUoE,WAAG,SAACxQ,GACjB,OAAOoM,EAAcC,WAAW,oCAAqCrM,GAAc,QAAS,wBAChG,EAMOoM,EAAUqE,WAAG,SAACzQ,GACjB,OAAOoM,EAAcC,WAAW,qCAAsCrM,GAAc,QAAS,YACjG,EAMOoM,EAAWsE,YAAG,SAAC1Q,GAClB,OAAOoM,EAAcC,WAAW,sCAAuCrM,GAAc,QAAS,aAClG,EAMOoM,EAAWuE,YAAG,SAAC3Q,GAClB,OAAOoM,EAAcC,WAAW,sCAAuCrM,GAAc,QAAS,aAClG,EAMOoM,EAAWwE,YAAG,SAAC5Q,GAClB,OAAOoM,EAAcC,WAAW,sCAAuCrM,GAAc,QAAS,aAClG,EAMOoM,EAAWyE,YAAG,SAAC7Q,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,YAC7F,EAMOoM,EAAY0E,aAAG,SAAC9Q,GACnB,OAAOoM,EAAcC,WAAW,kCAAmCrM,GAAc,QAAS,aAC9F,EAMOoM,EAAY2E,aAAG,SAAC/Q,GACnB,OAAOoM,EAAcC,WAAW,kCAAmCrM,GAAc,QAAS,wBAC9F,EAMOoM,EAAW4E,YAAG,SAAChR,GAClB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,2BAC5F,EAMOoM,EAAU6E,WAAG,SAACjR,GACjB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,oEAC7F,EAMOoM,EAAU8E,WAAG,SAAClR,GACjB,OAAOoM,EAAcC,WAAW,+BAAgCrM,GAAc,QAAS,kBAC3F,EAMOoM,EAAc+E,eAAG,SAACnR,GACrB,OAAOoM,EAAcC,WAAW,0CAA2CrM,GAAc,QAAS,kBACtG,EAMOoM,EAAUgF,WAAG,SAACpR,GACjB,OAAOoM,EAAcC,WAAW,gCAAiCrM,GAAc,QAAS,kCAC5F,EAMOoM,EAAUiF,WAAG,SAACrR,GACjB,OAAOoM,EAAcC,WAAW,+BAAgCrM,GAAc,QAAS,kBAC3F,EAMOoM,EAAUkF,WAAG,SAACtR,GACjB,OAAOoM,EAAcC,WAAW,qCAAsCrM,GAAc,QAAS,aACjG,EAMOoM,EAAWmF,YAAG,SAACvR,GAClB,OAAOoM,EAAcC,WAAW,sCAAuCrM,GAAc,QAAS,cAClG,EAMOoM,EAAYoF,aAAG,SAACxR,GACnB,OAAOoM,EAAcC,WAAW,qCAAsCrM,GAAc,QAAS,aACjG,EAMOoM,EAAYqF,aAAG,SAACzR,GACnB,OAAOoM,EAAcC,WAAW,sCAAuCrM,GAAc,QAAS,cAClG,EAMOoM,EAASsF,UAAG,SAAC1R,GAChB,OAAOoM,EAAcC,WAAW,oCAAqCrM,GAAc,QAAS,8BAChG,EAMOoM,EAAauF,cAAG,SAAC3R,GACpB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,aAC7F,EAMOoM,EAAWwF,YAAG,SAAC5R,GAClB,OAAOoM,EAAcC,WAAW,iCAAkCrM,GAAc,QAAS,aAC7F,EAMOoM,EAAYyF,aAAG,SAAC7R,GACnB,OAAOoM,EAAcC,WAAW,qCAAsCrM,GAAc,QAAS,aACjG,EAMOoM,EAAU0F,WAAG,SAAC9R,GACjB,OAAOoM,EAAcC,WAAW,+BAAgCrM,GAAc,QAAS,aAC3F,EAMOoM,EAA0B2F,2BAAG,SAAC/R,GAEjC,IAAIgS,EAAmB,GAyFvB,OAvFAA,EAASC,KAAK7F,EAAcK,WAAWzM,IACvCgS,EAASC,KAAK7F,EAAcM,WAAW1M,IACvCgS,EAASC,KAAK7F,EAAcO,eAAe3M,IAC3CgS,EAASC,KAAK7F,EAAcQ,WAAW5M,IACvCgS,EAASC,KAAK7F,EAAcS,WAAW7M,IACvCgS,EAASC,KAAK7F,EAAcU,aAAa9M,IACzCgS,EAASC,KAAK7F,EAAcW,WAAW/M,IACvCgS,EAASC,KAAK7F,EAAcY,UAAUhN,IACtCgS,EAASC,KAAK7F,EAAca,WAAWjN,IACvCgS,EAASC,KAAK7F,EAAcc,WAAWlN,IACvCgS,EAASC,KAAK7F,EAAce,WAAWnN,IACvCgS,EAASC,KAAK7F,EAAcgB,WAAWpN,IACvCgS,EAASC,KAAK7F,EAAciB,WAAWrN,IACvCgS,EAASC,KAAK7F,EAAckB,WAAWtN,IACvCgS,EAASC,KAAK7F,EAAcmB,YAAYvN,IACxCgS,EAASC,KAAK7F,EAAcoB,WAAWxN,IACvCgS,EAASC,KAAK7F,EAAcqB,YAAYzN,IACxCgS,EAASC,KAAK7F,EAAcsB,YAAY1N,IACxCgS,EAASC,KAAK7F,EAAcuB,WAAW3N,IACvCgS,EAASC,KAAK7F,EAAcwB,WAAW5N,IACvCgS,EAASC,KAAK7F,EAAcyB,YAAY7N,IACxCgS,EAASC,KAAK7F,EAAc0B,WAAW9N,IACvCgS,EAASC,KAAK7F,EAAc2B,iBAAiB/N,IAC7CgS,EAASC,KAAK7F,EAAc4B,WAAWhO,IACvCgS,EAASC,KAAK7F,EAAc6B,YAAYjO,IACxCgS,EAASC,KAAK7F,EAAc8B,WAAWlO,IACvCgS,EAASC,KAAK7F,EAAc+B,UAAUnO,IACtCgS,EAASC,KAAK7F,EAAcgC,YAAYpO,IACxCgS,EAASC,KAAK7F,EAAciC,cAAcrO,IAC1CgS,EAASC,KAAK7F,EAAckC,WAAWtO,IACvCgS,EAASC,KAAK7F,EAAcoC,YAAYxO,IACxCgS,EAASC,KAAK7F,EAAcmC,aAAavO,IACzCgS,EAASC,KAAK7F,EAAcqC,cAAczO,IAC1CgS,EAASC,KAAK7F,EAAcsC,WAAW1O,IACvCgS,EAASC,KAAK7F,EAAcuC,WAAW3O,IACvCgS,EAASC,KAAK7F,EAAcwC,WAAW5O,IACvCgS,EAASC,KAAK7F,EAAcyC,YAAY7O,IACxCgS,EAASC,KAAK7F,EAAc0C,YAAY9O,IACxCgS,EAASC,KAAK7F,EAAc2C,WAAW/O,IACvCgS,EAASC,KAAK7F,EAAc4C,WAAWhP,IACvCgS,EAASC,KAAK7F,EAAc6C,WAAWjP,IACvCgS,EAASC,KAAK7F,EAAc8C,WAAWlP,IACvCgS,EAASC,KAAK7F,EAAc+C,WAAWnP,IACvCgS,EAASC,KAAK7F,EAAcgD,WAAWpP,IACvCgS,EAASC,KAAK7F,EAAciD,YAAYrP,IACxCgS,EAASC,KAAK7F,EAAckD,WAAWtP,IACvCgS,EAASC,KAAK7F,EAAcmD,WAAWvP,IACvCgS,EAASC,KAAK7F,EAAcoD,WAAWxP,IACvCgS,EAASC,KAAK7F,EAAcqD,WAAWzP,IACvCgS,EAASC,KAAK7F,EAAcsD,WAAW1P,IACvCgS,EAASC,KAAK7F,EAAcuD,YAAY3P,IACxCgS,EAASC,KAAK7F,EAAcwD,WAAW5P,IACvCgS,EAASC,KAAK7F,EAAcyD,WAAW7P,IACvCgS,EAASC,KAAK7F,EAAc0D,UAAU9P,IACtCgS,EAASC,KAAK7F,EAAc2D,WAAW/P,IACvCgS,EAASC,KAAK7F,EAAc4D,WAAWhQ,IACvCgS,EAASC,KAAK7F,EAAc6D,WAAWjQ,IACvCgS,EAASC,KAAK7F,EAAc8D,WAAWlQ,IACvCgS,EAASC,KAAK7F,EAAc+D,YAAYnQ,IACxCgS,EAASC,KAAK7F,EAAcgE,UAAUpQ,IACtCgS,EAASC,KAAK7F,EAAciE,WAAWrQ,IACvCgS,EAASC,KAAK7F,EAAckE,YAAYtQ,IACxCgS,EAASC,KAAK7F,EAAcmE,kBAAkBvQ,IAC9CgS,EAASC,KAAK7F,EAAcoE,WAAWxQ,IACvCgS,EAASC,KAAK7F,EAAcqE,WAAWzQ,IACvCgS,EAASC,KAAK7F,EAAcsE,YAAY1Q,IACxCgS,EAASC,KAAK7F,EAAcuE,YAAY3Q,IACxCgS,EAASC,KAAK7F,EAAcwE,YAAY5Q,IACxCgS,EAASC,KAAK7F,EAAcyE,YAAY7Q,IACxCgS,EAASC,KAAK7F,EAAc0E,aAAa9Q,IACzCgS,EAASC,KAAK7F,EAAc2E,aAAa/Q,IACzCgS,EAASC,KAAK7F,EAAc4E,YAAYhR,IACxCgS,EAASC,KAAK7F,EAAc6E,WAAWjR,IACvCgS,EAASC,KAAK7F,EAAc8E,WAAWlR,IACvCgS,EAASC,KAAK7F,EAAc+E,eAAenR,IAC3CgS,EAASC,KAAK7F,EAAcgF,WAAWpR,IACvCgS,EAASC,KAAK7F,EAAciF,WAAWrR,IAMvCgS,EAASC,KAAK7F,EAAcuF,cAAc3R,IAC1CgS,EAASC,KAAK7F,EAAcwF,YAAY5R,IACxCgS,EAASC,KAAK7F,EAAcyF,aAAa7R,IACzCgS,EAASC,KAAK7F,EAAc0F,WAAW9R,IAEhCgS,CACX,EACH5F,CAAA,IAmBY8F,GAAsB,SAC/BnS,EACAC,EACAC,GAEA,YAJA,IAAAF,IAAAA,EAA2C,2CAC3C,IAAAC,IAAAA,EAAa,aACb,IAAAC,IAAAA,EAAkB,aAEXmM,GAAcC,WAAWtM,EAAMC,EAAMC,EAChD,EC9zBCkS,GAAA,WAAA,SAAAA,IAUA,CAAD,OAJWA,EAAAxH,UAAP,WAEI,OADAwH,EAAgBvH,SACTuH,EAAgBvH,QAPpBuH,EAAMvH,OAAG,EASnBuH,CAAA,ICPe,SAAAC,GAAaC,EAAiBC,GAC1C,YADyB,IAAAD,IAAAA,EAAe,QAAE,IAAAC,IAAAA,EAAe,GAClDC,KAAKC,MAAMD,KAAKE,UAAYH,EAAMD,IAAQA,CACrD,CCJO,ICCMK,GAAiB,SAACvT,GAC3B,OAAKA,GAA4B,IAAlBA,EAAOkL,OAGiBlL,EAAO+I,MAAM,KAAK8D,KAAI,SAAC2G,GAAe,OAAAA,EAAWC,MAAM,IAFnF,EAIf,ECFcC,GAAiB,SAAC1T,EAAkB4J,GAI9C,IAHA,IACQhJ,EAAegJ,EAAIhJ,KAAbE,EAAS8I,EAAI9I,KAElBmK,EAAI,EAAGA,EAAIjL,EAAOkL,OAAQD,IAAK,CACpC,IAAMuI,EAAqBxT,EAAOiL,GAElC,GAA0B,IAAtBuI,EAAWtI,OAAc,CAEzB,GAA6B,MAAzBsI,EAAWG,OAAO,IACdH,EAAWjQ,SAASyE,GAAOpH,IAC3B,OAAO,EAKf,GAAIE,GAAQA,EAAKoK,OAAS,GAAKsI,EAAWjQ,SAAS,MAAQzC,EAAKyC,SAAS,KAAM,CAC3E,IAAIuF,EAAa0K,EAAWzK,MAAM,KAAK,GACnCT,EAAWkL,EAAWzK,MAAM,KAAK,GAEjC6K,EAAiB9S,EAAKiI,MAAM,KAAK,GACjC8K,EAAe/S,EAAKiI,MAAM,KAAK,GAEnC,GAAID,IAAe8K,EAAgB,CAE/B,GAAiB,MAAbtL,EACA,OAAO,EACJ,GAAIA,IAAauL,EACpB,OAAO,CAEd,CACJ,CACJ,CACJ,CACD,OAjCqB,CAkCzB,ECqEaC,GAAkB,SAC3BpK,EACAqK,EACAC,EACAC,GAEA,IAAIC,EAAapH,GAAA,CAAA,EAAiBpD,GAC9BI,EAAmB,GAEvB,IAAKJ,EAAQE,KACT,OAAAkD,GAAA,GAAYoH,GAIhB,GAAIH,EAAW,CACX,IACgBI,EADqCJ,EAAUG,EAActK,MACtBE,OACnDqK,GACArK,EAAOgJ,KAAIsB,MAAXtK,EAAeqK,EAEtB,CAEO,IAAA/T,EAAwB4T,EAAc5T,YAAzBJ,EAAWgU,EAAchU,OAGxC4J,EAAaF,EAAQE,KAG3B,GAAIxJ,GAAewJ,EAAK/I,KAAOT,EAAa,CACxC,IAAMiU,EAA2CJ,EAAYzS,aAI7DsI,EAAOgJ,KAAKuB,EAA0BjU,GACzC,CAEGJ,IAAW0T,GAAeH,GAAevT,GAAS4J,IAClDE,EAAOgJ,KAAKmB,EAAYvS,aAE5B,IAAM4S,EAAqC,IAAlBxK,EAAOoB,OAGhC,OAFAgJ,EAAapH,GAAAA,GAAA,CAAA,EAAQoH,GAAe,CAAA/S,MAAOmT,EAASxK,OAASwK,OAAmBjJ,EAATvB,GAI3E,EAWayK,GAAe,SACxB3K,EACAmK,EACAC,EACAC,GAGA,IAAMO,EAAcxB,GAAgBxH,YAChC1B,EAAmB,GACvB,GAAIiK,EACA,OAASjH,GAAA,CAAAnD,GAAI6K,EAAa5K,KAAIA,GAAKmK,EAAUnK,IAGzC,IAAAxJ,EAAwB4T,EAAc5T,YAAzBJ,EAAWgU,EAAchU,OAG9C,GAAII,GAAewJ,EAAK/I,KAAOT,EAAa,CACxC,IAAMiU,EAA2CJ,EAAYzS,aAC7DsI,EAAOgJ,KAAKuB,EAA0BjU,GACzC,CAgBD,OAZIJ,IAAW0T,GAAeH,GAAevT,GAAS4J,IAClDE,EAAOgJ,KAAKmB,EAAYvS,aAIA,CACxBiI,GAAI6K,EACJ5K,KAAMA,EACNzI,MAAyB,IAAlB2I,EAAOoB,OACdpB,OAAQA,EAIhB,ECzMa2K,GACT,CACI,kDACA,8BACA,8CCPM,SAAUC,GACpBC,EACAxK,GAKA,IAFA,IAAMyK,EAA0B/J,OAAOC,KAAKX,GAAa,CAAE,GAElDc,EAAI,EAAGA,EAAI2J,EAAc1J,QAAUf,EAAWc,IAEnD0J,EAASE,OAAOD,EAAc3J,GAAId,EAAUyK,EAAc3J,KAG9D0J,EAASE,OAAO,aAAc,mBAElC,CCdc,SAAUC,GACpB5K,EACA6K,GAKA,IAFA,IAAMC,EAAuBnK,OAAOC,KAAKiK,GAAW,CAAE,GAE7C9J,EAAI,EAAGA,EAAI+J,EAAW9J,QAAU6J,EAAS9J,IAE9Cf,EAAI+K,iBACAD,EAAW/J,GACX8J,EAAQC,EAAW/J,IAK/B,CCda,IAAAiK,GAAyB,CAClChU,SAAS,EACTiU,QAAS,gBACTC,QAAS,CAAE,GAEFC,GAAyB,CAClCnU,SAAS,EACTiU,QAAS,iBACTC,QAAS,CAAE,GAEFE,GAA4B,CACrCpU,SAAS,EACTiU,QAAS,mCACTC,QAAS,CAAE,GAGFG,GAA4B,CACrCrU,SAAS,EACTiU,QAAS,mBACTC,QAAS,CAAE,GAGFI,GAAwB,SAAC9L,GAClC,OAAAoD,GAAAA,GAAA,CAAA,EAEOpD,GACH,CAAAK,cAAe,gDACfC,aAAc,QAEdK,eAAgB,CAAEnJ,SAAS,IAEnC,EC1BauU,GAAoB,SAACvL,GAC9B,IACI,IAAMwL,EAAeC,KAAKC,MAAM1L,EAAI2L,UAC9B3U,EAAewU,EAAaxU,QAC5BiU,EAAkBO,EAAaP,QAQrC,MALoC,CAChCjU,QAA4B,kBAAZA,GAAwBA,EACxCiU,QAA4B,iBAAZA,EAAuBA,EAAU,4BACjDC,QALiBM,EAAaN,SAKV,CAAE,EAG7B,CAAC,MAAO/T,GAEL,OAAOiU,EACV,CACL,EAIaQ,GAA4B,SACrCpM,EACAqM,GAEA,OAAAjJ,GAAAA,GAAA,CAAA,EACOpD,GAAO,CACVW,eAAgB0L,EAChBhM,cAAegM,EAAYZ,QAC3BnL,aAAc,WAGtB,EAGagM,GAA0B,SACnCtM,EACAqM,GAGA,OAAAjJ,GAAAA,GAAA,CAAA,EACOpD,GAAO,CACVK,cAAegM,EAAYZ,QAC3BnL,aAAc,QACdK,eAAgB0L,GAExB,ECnCaE,GAAiB,SAC1B/L,EACAgM,EACAC,EACAC,EACArB,GAEA,YALA,IAAAmB,IAAAA,EAAmC,QAK5B,IAAIG,SAAwB,SAACC,EAASC,GAGzC,IAAMC,EAAsB,CAAC,OAAQ,MAAO,SAASjT,SAAS2S,EAAOO,eAAiBP,EAAS,OAM/FhM,EAAIwM,OAAOC,OAAS,WAEpB,EACAzM,EAAIwM,OAAOE,UAAY,WAAM,OAAAN,EAAQpB,KACrChL,EAAIwM,OAAOG,QAAU,WAEjBP,EAAQjB,GACZ,EACAnL,EAAI4M,UAAY,SAAOC,GAAC,OAAAC,QAAA,OAAA,OAAA,GAAA,wDAQxB9M,EAAI+M,mBAAqB,SAAOF,GAAC,OAAAC,QAAA,OAAA,OAAA,GAAA,8CAOjB9M,EAAIgN,WAEO,IAAnBhN,EAAIgN,aACiB,KAAjBhN,EAAI2L,SAEJS,EAAQb,GAAkBvL,IAQ1BoM,EAAQjB,gBAQpBnL,EAAIiN,KAAKX,EAAaL,GAAU,GAGhCrB,GAAW5K,EAAK6K,GAEhB7K,EAAIkN,KAAKhB,EACb,GAEJ,EA8GO,IC9LMiB,GACb,CAEIC,UAAW,UACXC,WAAY,UACZC,OAAQ,UACRC,WAAY,UACZC,YAAa,UACbC,QAAS,UACTC,IAAK,UACLC,UAAW,UACXC,QAAS,UAETC,KAAM,UACNC,UAAW,UACXC,QAAS,UACTC,SAAU,UACVC,gBAAiB,UACjBC,cAAe,UAGfC,MAAO,UACPC,OAAQ,UACRC,UAAW,UACXC,WAAY,UACZC,OAAQ,UAERC,KAAM,UACNC,OAAQ,UACRC,YAAa,UACbC,aAAc,UACdC,qBAAsB,UACtBC,WAAY,UACZC,SAAU,UACVC,UAAW,UACXC,cAAe,UACfC,MAAO,UACPC,UAAW,UAEXC,SAAU,UACVC,QAAS,UACTC,KAAM,UACNC,OAAQ,UACRC,OAAQ,UACRC,QAAS,UACTC,QAAS,UACTC,aAAc,UACdC,aAAc,UACdC,cAAe,UACfC,WAAY,UACZC,WAAY,UACZC,WAAY,UACZC,YAAa,UACbC,OAAQ,UACRC,OAAQ,UACRC,UAAW,UACXC,cAAe,UACfC,gBAAiB,UAEjBC,YAAa,UACbC,WAAY,UACZC,UAAW,UACXC,KAAM,UACNC,UAAW,UACXC,UAAW,UACXC,WAAY,UACZC,kBAAmB,UACnBC,YAAa,UACbC,eAAgB,UAChBC,SAAU,UACVC,YAAa,UACbC,MAAO,UACPC,UAAW,UACXC,YAAa,UACbC,UAAW,UACXC,MAAO,UACPC,eAAgB,UAChBC,iBAAkB,UAClBC,aAAc,UACdC,cAAe,UACfC,SAAU,UACVC,KAAM,UAENC,KAAM,UACNC,KAAM,UACNC,UAAW,UACXC,cAAe,UACfC,WAAY,UACZC,UAAW,UACXC,gBAAiB,UACjBC,cAAe,UACfC,UAAW,UACXC,UAAW,UACXC,eAAgB,UAChBC,WAAY,UACZC,UAAW,UACXC,QAAS,UACTC,aAAc,UACdC,YAAa,UACbC,WAAY,UACZC,eAAgB,UAEhBC,UAAW,UACXC,KAAM,UACNC,WAAY,UACZC,SAAU,UACVC,KAAM,UACNC,aAAc,UAEdC,SAAU,UACVC,eAAgB,UAChBC,OAAQ,UACRC,YAAa,UACbC,MAAO,UACPC,UAAW,UACXC,IAAK,UACLC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,cAAe,UACfC,KAAM,UACNC,UAAW,UACXC,YAAa,UACbC,OAAQ,UACRC,MAAO,UACPC,OAAQ,UAERC,MAAO,UACPC,KAAM,UACNC,SAAU,UACVC,UAAW,UACXC,MAAO,UACPC,UAAW,UACXC,WAAY,UACZC,WAAY,UACZC,SAAU,UACVC,MAAO,UACPC,QAAS,UACTC,YAAa,UACbC,MAAO,UACPC,aAAc,UACdC,MAAO,UACPC,cAAe,UACfC,UAAW,UAEXC,UAAW,UACXC,UAAW,UACXC,OAAQ,UACRC,SAAU,UACVC,KAAM,UACNC,QAAS,UACTC,eAAgB,UAChBC,UAAW,UACXC,cAAe,UACfC,MAAO,WC9EEC,GAAgB,SAACC,EAAgCC,EAAUC,QAAV,IAAAD,IAAAA,EAAQ,GAClE,IAAIE,EAAwBD,GAA8B,2BAC1D,IAAKF,EACD,OAAOG,EAGX,IAAMC,EAAgBJ,EAAW3J,cAEjC,GAAI+J,EAAMjd,SAAS,QACf,OAAOid,EAIX,GAAIA,EAAMjd,SAAS,OACf,OAAOid,EAAMC,QAAQ,MAAO,QAAQA,QAAQ,IAAK,YAAKJ,EAAI,MAI9D,IAAKK,GAAWC,GAAgBH,IAC5B,OAAOD,EAEX,IAEIK,EACAC,EACAC,EAMJ,OAJAF,EAAyC,GAA5BG,GAASP,EAAM7M,OAAO,IAAWoN,GAASP,EAAM7M,OAAO,IACpEkN,EAAyC,GAA5BE,GAASP,EAAM7M,OAAO,IAAWoN,GAASP,EAAM7M,OAAO,IACpEmN,EAAyC,GAA5BC,GAASP,EAAM7M,OAAO,IAAWoN,GAASP,EAAM7M,OAAO,IACzD,QAAQhU,OAAAihB,EAAe,MAAAjhB,OAAAkhB,cAAcC,EAAU,OAAAnhB,OAAM0gB,EAAI,IAExE,EAUaK,GAAa,SAACN,GAGvB,GAA6B,MAAzBA,EAAWzM,OAAO,GAElB,OAAO,EAGX,GAA0B,IAAtByM,EAAWlV,OAGX,OAAO,EAGX,IAAK,IAAID,EAAI,EAAGA,EAAImV,EAAWlV,OAAQD,IACnC,IAAK+V,GAASzd,SAAS6c,EAAWzM,OAAO1I,IAGrC,OAAO,EAIf,OAAO,CACX,EAUM,SAAU0V,GAAgBM,GAI5B,OAAKA,OAM4C5V,IAA7CgM,GAAa4J,EAAOC,qBACb7J,GAAa4J,EAAOC,qBAMxBD,EAZI,EAaf,CAOA,IAAMD,GAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvFG,GAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IASvDJ,GAAW,SAACK,GACrB,OAAIJ,GAASzd,SAAS6d,GACXD,GAASH,GAASK,QAAQD,IAE1B,CAEf,EAUaE,GAAa,SAACd,GACvB,YAAcnV,IAAVmV,GAAiC,KAAVA,EAChBA,EAEAe,EAEf,EAgBaA,GAAqB,8iBtB5MO,SAACne,GACtC,OAAQA,GACJ,IAAK,QAAS,OAAOH,EAAkB,SACvC,IAAK,QAOL,QAAS,OAAOA,EAAkB,SANlC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SACvC,IAAK,QAAS,OAAOA,EAAkB,SAG/C,8KoB8JyB,SACrBiH,EACAgM,EACAC,EACAC,EACArB,GAEA,OAAO,IAAIsB,SAAwB,SAACC,EAASC,GAGzCrM,EAAIwM,OAAOC,OAAS,WAEpB,EAEAzM,EAAIwM,OAAOE,UAAY,WAAM,OAAAN,EAAQpB,KACrChL,EAAIwM,OAAOG,QAAU,WAAM,OAAAP,EAAQjB,KAKnCnL,EAAI+M,mBAAqB,SAAOF,GAAC,OAAAC,QAAA,OAAA,OAAA,GAAA,8CAIN,IAAnB9M,EAAIgN,aACiB,KAAjBhN,EAAI2L,SAEJS,EAAQb,GAAkBvL,IAG1BoM,EAAQf,gBAOpBrL,EAAIiN,KAAKjB,EAAQC,GAAU,GAG3B,IAFA,IAAMnB,EAAuBnK,OAAOC,KAAKiK,GAEhC9J,EAAI,EAAGA,EAAI+J,EAAW9J,OAAQD,IAEnCf,EAAI+K,iBACAD,EAAW/J,GACX8J,EAAQC,EAAW/J,KAI3Bf,EAAIkN,KAAKhB,EACb,GAEJ,unBGjP4B,SACxBoL,EACAC,GAEA,OAAIA,EACO,GAAG9hB,OAAA6hB,EAAiB,KAAA7hB,OAAA8hB,GACxBD,CACX,8LD6B6B,SAACpB,EAAoBsB,QAAA,IAAAA,IAAAA,EAAe,IAC7D,IAAIC,EAAgB,GACdC,GAAY,IAAMF,GAAc,IAClCd,EAAqB,EACrBC,EAAqB,EACrBC,EAAqB,EACzB,GAAIJ,GAAWC,GAAgBP,IAE3BQ,EAA8C,GAAjCG,GAASX,EAAWzM,OAAO,IAAWoN,GAASX,EAAWzM,OAAO,IAC9EkN,EAA8C,GAAjCE,GAASX,EAAWzM,OAAO,IAAWoN,GAASX,EAAWzM,OAAO,IAC9EmN,EAA8C,GAAjCC,GAASX,EAAWzM,OAAO,IAAWoN,GAASX,EAAWzM,OAAO,IAE9EgO,EAAgB,OAAAhiB,OAAOihB,EAAagB,EAAa,MAAAjiB,OAAAkhB,EAAae,EAAY,KAAAjiB,OAAAmhB,EAAac,YAEvF,GAAIxB,EAAW7c,SAAS,QAAS,CAC7B,IACIse,EADSzB,EAAWK,QAAQ,QAAS,IACP1X,MAAM,KACxC4Y,EAAgB,OAAOhiB,OAAAmiB,SAASD,EAAW,GAAI,IAAMD,eAAaE,SAASD,EAAW,GAAI,IAAMD,EAAQ,KAAAjiB,OAAImiB,SAASD,EAAW,GAAI,IAAMD,MAE7I,MAAM,GAAIxB,EAAW7c,SAAS,OAAQ,CAG/Bse,EADSzB,EAAWK,QAAQ,OAAQ,IACN1X,MAAM,KACxC4Y,EAAgB,OAAOhiB,OAAAmiB,SAASD,EAAW,GAAI,IAAMD,eAAaE,SAASD,EAAW,GAAI,IAAMD,EAAQ,KAAAjiB,OAAImiB,SAASD,EAAW,GAAI,IAAMD,MAE7I,CAGL,OAAOD,CACX,qFXnE0B,SAACI,GAClBA,IACLA,EAAaC,MAAQ,GACzB,wDWuNkC,SAACxB,EAAgBH,GAE/C,YAF+C,IAAAA,IAAAA,EAAQ,GAEhDF,GAAcmB,GAAWX,GAAgBH,IAASH,EAE7D,+BElMoC,SAChC3W,EACAW,EACA4X,GAEA,MAAO,CACHtY,GAAID,EAAQC,GACZuY,aACOpV,GAAAA,GAAA,CAAA,EAAApD,GACH,CAAAK,cAAeM,EAAe8K,QAC9BnL,aAAciY,IAElB5X,eAAgBA,EAExB,oChBiwByC,SAACxJ,GACtC,OAAOoM,GAAc2F,2BAA2B/R,EACpD,4DiB5vBkC,SAC9BshB,EACAjM,EACAnB,EACAqN,EACAC,GAEA,MAAO,CACHF,IAAGA,EACHjM,OAAMA,EACNnB,QAAOA,EACPqN,YAAWA,EACXC,cAAaA,EAErB,gEH5D2B,SAACjC,EAAoBsB,QAAA,IAAAA,IAAAA,EAAe,IAC3D,IAAIY,EAAc,GACZC,GAAU,IAAMb,GAAc,IAChCd,EAAqB,EACrBC,EAAqB,EACrBC,EAAqB,EACzB,GAAIJ,GAAWC,GAAgBP,IAE3BQ,EAA8C,GAAjCG,GAASX,EAAWzM,OAAO,IAAWoN,GAASX,EAAWzM,OAAO,IAC9EkN,EAA8C,GAAjCE,GAASX,EAAWzM,OAAO,IAAWoN,GAASX,EAAWzM,OAAO,IAC9EmN,EAA8C,GAAjCC,GAASX,EAAWzM,OAAO,IAAWoN,GAASX,EAAWzM,OAAO,IAE9E2O,EAAc,OAAA3iB,OAAOihB,EAAa2B,EAAW,MAAA5iB,OAAAkhB,EAAa0B,EAAU,KAAA5iB,OAAAmhB,EAAayB,YAEjF,GAAInC,EAAW7c,SAAS,QAAS,CAC7B,IACIse,EADSzB,EAAWK,QAAQ,QAAS,IACP1X,MAAM,KACxCuZ,EAAc,OAAO3iB,OAAAmiB,SAASD,EAAW,GAAI,IAAMU,eAAWT,SAASD,EAAW,GAAI,IAAMU,EAAM,KAAA5iB,OAAImiB,SAASD,EAAW,GAAI,IAAMU,MAEvI,MAAM,GAAInC,EAAW7c,SAAS,OAAQ,CAG/Bse,EADSzB,EAAWK,QAAQ,OAAQ,IACN1X,MAAM,KACxCuZ,EAAc,OAAO3iB,OAAAmiB,SAASD,EAAW,GAAI,IAAMU,eAAWT,SAASD,EAAW,GAAI,IAAMU,EAAM,KAAA5iB,OAAImiB,SAASD,EAAW,GAAI,IAAMU,MAEvI,CAGL,OAAOD,CACX,mFI/B2B,SAAC3Y,GACxB,MAAO,CACHA,GAAIA,GAAMqJ,GAAgBxH,YAC1B5K,KAAM,eACNC,KAAM,SACNC,KAAM,gBACN8I,KAAMmJ,GAAoB,eAAgB,SAAkB,iBAC5DjJ,OAAQ2K,GACR1K,cAAe,WACfC,aAAc,YACd7I,OAAO,EACP8I,SAAU,GACVC,IAAK,IAAIsY,eACTrY,UAAW,CACPsY,WAAY,uBACZC,WAAY,CACR/Y,GAAI,EACJ/I,KAAM,iBAEV+hB,SAAS,GAEbrY,YAAa,8CAErB,+BC1BoC,SAChCgC,EACAsW,GAEA,IAEIC,EACAtX,GAAea,uBAAuBE,GAG1C,GAAIuW,EAAe,CAWf,IAAIC,EAAajX,GAAA,GAAkB+W,GAAgB,GASnD,GARAE,EAAgBA,EAAclW,QAC1B,SAACG,GAAM,OAAkD,KAAlD8V,eAAAA,EAAeE,WAAU,SAAAC,GAAK,OAAAA,EAAErZ,KAAOoD,EAAEpD,EAAX,IAAqB,IAO1DkZ,EAAc3X,SAAW0X,EAAiB1X,QAAsC,IAA5B0X,EAAiB1X,OACrE,OAEJ,IAAK,IAAID,EAAI,EAAGA,EAAI4X,EAAc3X,OAAQD,SAEII,IAArCuX,EAAiB3X,GAAGjB,cAEc,cAAlC6Y,EAAc5X,GAAGjB,eAGlB6Y,EAAc5X,GAAGjB,kBAAeqB,EAG3C,CAED,MAzCwB,EA0C5B,qDC2D6B,SACzBX,EACAxH,QAAA,IAAAA,IAAAA,EAAoBC,EAA0B,UAG9C,IAAMuG,EAAkBgB,EAAgBD,YAExC,OAAO,IAAI4L,SAAQ,SAACC,EAASC,GACzB0M,YAAW,WAEP,GAD6B7P,KAAKC,MAAsB,GAAhBD,KAAKE,UAC1B,GAAM,EAAG,CACxB,IAAMpS,GAAU,EACViU,EAAUjS,EAAkB1C,kBAC5B4U,EAAU,CAAE+M,IAAK,IACvB7L,EAAOxJ,GAAAA,GAAA,CAAA,EACApD,GAAO,CACVW,eAAgB,CAAEnJ,QAAOA,EAAEiU,QAAOA,EAAEC,QAAOA,GAC3CpL,aAAc,UACdD,cAAeoL,IAGtB,KAAM,CACGjU,GAAU,EACViU,EAAUjS,EAAkBzC,gBAC5B2U,EAAU,CAAA,EAChBkB,EAAOxJ,GAAAA,GAAA,CAAA,EACApD,GAAO,CACVW,eAAgB,CAAEnJ,QAAOA,EAAEiU,QAAOA,EAAEC,QAAOA,GAC3CpL,aAAc,QACdD,cAAeoL,IAEtB,CACJ,GAAE,KACP,GACJ,iCCpIsC,SAAC+N,GAEnC,IADA,IAAIC,EAA0B,GACrBlY,EAAI,EAAGmY,SAAUA,EAAIF,EAASjY,GAAKA,IACxCkY,EAAarQ,KAAK,CAAEnJ,GAAIqJ,GAAgBxH,YAAa5B,KAAMwZ,EAAGxiB,KAAMwiB,EAAExiB,KAAMC,KAAMuiB,EAAEviB,KAAMC,KAAMsiB,EAAEtiB,OAEtG,OAAOqiB,CACX,yCAO8C,SAACD,GAE3C,IADA,IAAIC,EAAkC,GAC7BlY,EAAI,EAAGmY,SAAUA,EAAIF,EAASjY,GAAKA,IACxCkY,EAAarQ,KAAK,IAAIrJ,GAAgB,CAAEE,GAAIqJ,GAAgBxH,YAAa5B,KAAMwZ,EAAGxiB,KAAMwiB,EAAExiB,KAAMC,KAAMuiB,EAAEviB,KAAMC,KAAMsiB,EAAEtiB,QAE1H,OAAOqiB,CACX,4BfXiC,SAC7BE,EACAC,EACAC,EACAxP,EACAxT,EACAijB,GASA,IAPA,IAAMC,EAAoB,GAEtBC,EAAoBJ,EAElBK,EACFrgB,EAA+BkgB,GAE1BvY,EAAI,EAAGmY,SAAUA,EAAIC,EAAkBpY,GAAKA,IAAK,CAEtD,IAAI2Y,EAAyBrP,GAAa6O,EAAGrP,EAAWwP,EAAgBI,GACxE,GAAIC,EAAcziB,MAAO,CAErB,IAAMA,EAAQuiB,EAAY,EAG1B,GAFAE,EAAcziB,MAAQA,GAEjBA,EAAO,CACR,IAAM0iB,EAAuCF,EAAyBhiB,aACtEiiB,EAAc9Z,OAAS8Z,EAAc9Z,OAChC+B,GAAAA,GAAA,GAAK+X,EAAc9Z,YAAQ+Z,EAAsBtjB,GAAYujB,UAC5D,CAACD,EAAsBtjB,GAAYujB,KAC5C,CACDJ,GACH,CACDD,EAAO3Q,KAAK8Q,EACf,CACD,OAAOH,CACX,qHgB1CM,SACFM,GAEA,OAAO,IAAI1N,SAAQ,SAACC,EAASC,GAEzB,GAAKwN,GAAsC,IAAvBA,EAAY7Y,OAMhC,IAGI,IAAI8Y,EAAwB,IAAIC,MAChCD,EAAIE,IAAMH,EACVC,EAAIG,QAAU,SAACC,GAEX7N,EAAO,YACX,EACAyN,EAAIrN,OAAS,WACT,IAAI0N,EAAgBL,EAAIK,MACpBC,EAAiBN,EAAIM,OAErBhO,EADA+N,EAAQC,EACA,YAEA,WAEhB,CACH,CAAC,MAAOjjB,GAGwB,gBAAzB2K,QAAQC,IAAIC,UACZC,QAAQ9K,MAAM,6DAElBkV,EAAO,YACV,MA5BGA,EAAO,YA6Bf,GACJ,+BCvCoC,SAChC3M,EACAhJ,EACAE,EACAD,GAGA,IAAI0jB,EAAwB,GACxBC,OAAoCnZ,EACpCoZ,OAAoCpZ,EAaxC,OATIzB,GAA6B,iBAAdA,EAAKhJ,MACpB2jB,EAAgB3a,EAAKhJ,KACrB4jB,EAAgB5a,EAAK9I,KACrB2jB,EAAgB7a,EAAK/I,MACdD,GAAwB,iBAATA,IACtB2jB,EAAgB3jB,EAChB4jB,EAAgB1jB,EAChB2jB,EAAgB5jB,GAEb,CAAC0jB,EAAeC,EAAeC,EAC1C,gD1B0O6B,SACzB7a,EACA8a,GAGA,IAAIxc,EAAyB,WAE7B,IAAK0B,EAED,OADA1B,EAASE,IACLsc,aAAA,EAAAA,EAAalb,UACN,CAAE2Y,IAAKuC,aAAW,EAAXA,EAAalb,SAAUmb,WAAYzc,GAE9C,CAAEia,IAAK/Y,GAAYlB,GAASyc,WAAYzc,GAE/CA,EAASU,GAAagB,EAAK9I,MAG/B,IAAM8jB,EAAoB5c,GAAO4B,EAAKhJ,MAEvB,SAAXsH,IACAA,EAASiB,GAAYyb,IAIrB1c,IAAWE,KACXF,EAASc,GAAkB4b,IAG/B,IAAMC,EAAYH,eAAAA,EAAcxc,GAChC,YAAkBmD,IAAdwZ,EACO,CAAE1C,IAAK0C,EAAWF,WAAYzc,GAGlC,CAAEia,IAAK/Y,GAAYlB,GAASyc,WAAYzc,EACnD,uCAM4C,SACxCtH,EACAE,EACA4jB,GAGA,IAAIxc,EAAyB,QAE7B,IAAKtH,EAED,OADAsH,EAASE,IACLsc,aAAA,EAAAA,EAAalb,UACN,CAAE2Y,IAAKuC,aAAW,EAAXA,EAAalb,SAAUmb,WAAYzc,GAC9C,CAAEia,IAAK/Y,GAAYlB,GAASyc,WAAYzc,GAE/CA,EAASU,GAAa9H,GAG1B,IAAM8jB,EAAoB5c,GAAOpH,GAElB,SAAXsH,IACAA,EAASiB,GAAYyb,IAIrB1c,IAAWE,KACXF,EAASc,GAAkB4b,IAE/B,IAAMC,EAAYH,eAAAA,EAAcxc,GAChC,YAAkBmD,IAAdwZ,EACO,CAAE1C,IAAK0C,EAAWF,WAAYzc,GAElC,CAAEia,IAAK/Y,GAAYlB,GAASyc,WAAYzc,EACnD,4KmB7Q2C,SACvCwB,GAEA,MAA6B,cAAzBA,EAAQM,cAERN,EAAQM,aAAe,YAEvB8C,GAAAA,GAAA,GACOpD,GAAO,CACVM,aAAc,eAGfN,CACX,oDQ/EmC,SAACA,EAAkBob,GAClD,QAASA,GAAsBA,GAAqBpb,EAAQvI,QAAoC,YAAzBuI,EAAQM,YACnF,2BCJgC,SAC5BhK,EACAI,EACAG,EACAwT,GAEA,OACE,MAAC/T,GACD,MAACI,GACD,MAACG,GACA,MAAAwT,CAEL,qKdTgC,SAAC7S,EAAciU,EAAiBC,GAE9D,MAD+B,CAAElU,QAASA,EAASiU,QAASA,EAASC,QAASA,EAElF,oEeUqC,SACjCxL,EACAzI,EACA6I,EACAD,QAFA,IAAA5I,IAAAA,EAASiS,KAAK2R,KAAqB,GAAhB3R,KAAKE,UAAiB,GAAM,GAK/C,IAAIxJ,EAA+B,GAC/Bkb,EAAiBhb,GCZa,WAElC,OADuBiJ,GAAa,EAAG,IAEnC,KAAK,EAAG,MAAO,QACf,KAAK,EAAG,MAAO,YACf,KAAK,EAAG,MAAO,UACf,QACI,OAEZ,CDGyCgS,GAEjCC,EAA0Cnb,GAAiB,GAC/D,GAAI5I,EAAO,CAEP,IAAK4I,EACD,OAAQib,GACJ,IAAK,QAASE,EAAsB,oCAAqC,MACzE,IAAK,UAAWA,EAAsB,+BAAgC,MACtE,QAASnb,OAAgBsB,EAGjCvB,OAASuB,CACZ,KAAM,CAEH,IAAM8Z,EAAkBlS,GAAa,EAAG,GACxCnJ,EAAOgJ,KAAK2B,GAAa0Q,IACzBH,OAAiB3Z,EACjB6Z,OAAsB7Z,CACzB,CAUD,MARkC,CAC9B1B,GAAIqJ,GAAgBxH,YACpBrK,MAAOA,EACPyI,KAAMA,EACNI,aAAcgb,EACdjb,cAAemb,EACfpb,OAAQA,EAGhB,uUNU+B,SAC3BY,GAGA,OAAO,IAAI2L,SAAQ,SAACC,EAASC,GACzB0M,YAAW,WACPvY,EAAgBV,aAAe,YAC/BsM,WACO5L,GAAe,CAClBV,aAAc,cAErB,GAAE,KAEP,GACJ,+BJUoC,SAChCN,GAEA,OAAO,IAAI2M,SAAQ,SAACC,EAASC,GACzB0M,YAAW,WACsB,cAAzBvZ,EAAQM,cAERN,EAAQM,aAAe,YAEvBsM,WACO5M,GAAO,CACVM,aAAc,gBAGlBsM,EAAQ5M,EACf,GAAE,KACP,GACJ,6FYdiC,SAACE,EAAmBwb,EAAuBC,GACxE,OAAO,IAAIhP,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAM+O,EAAS,IAAIC,WACnBD,EAAO3O,OAAS,WACZL,EAAQgP,EAAOpd,OACnB,EACAod,EAAOE,WAAa,WAChBJ,SAAAA,GACJ,EACAE,EAAOnB,QAAU,WACbkB,SAAAA,GACJ,EACAC,EAAOG,kBAAkB7b,EAC5B,CAAC,MAAOvI,GACLkV,OAAOlL,EACV,CACL,GACJ,6BA5CkC,SAACzB,EAAmBwb,EAAuBC,GACzE,OAAO,IAAIhP,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAMmP,EAAS,IAAIH,WACnBG,EAAO/O,OAAS,WACZL,EAAQoP,EAAOxd,OACnB,EACAwd,EAAOF,WAAa,WAChBJ,SAAAA,GACJ,EACAM,EAAOvB,QAAU,WACbkB,SAAAA,GACJ,EACAK,EAAOC,mBAAmB/b,EAC7B,CAAC,MAAOvI,GACLkV,OAAOlL,EACV,CACL,GACJ,wBA5E6B,SAACzB,EAAmBwb,EAAuBC,GACpE,OAAO,IAAIhP,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAMqP,EAAS,IAAIL,WACnBK,EAAOJ,WAAa,WAChBJ,SAAAA,GACJ,EACAQ,EAAOzB,QAAU,WACbkB,SAAAA,GACJ,EACAO,EAAOjP,OAAS,WACZL,EAAQsP,EAAO1d,OACnB,EACA0d,EAAOC,cAAcjc,EACxB,CAAC,MAAOvI,GACLkV,OAAOlL,EACV,CACL,GACJ,qBAY0B,SAACzB,EAAmBkc,EAAmBV,EAAuBC,GACpF,OAAO,IAAIhP,SAA4B,SAACC,EAASC,GAC7C,IACI,IAAMwP,EAAS,IAAIR,WACnBQ,EAAOpP,OAAS,WACZL,EAAQyP,EAAO7d,OACnB,EACA6d,EAAOP,WAAa,WAChBJ,SAAAA,GACJ,EACAW,EAAO5B,QAAU,WACbkB,SAAAA,GACJ,EACAU,EAAOC,WAAWpc,EAAMkc,GAAsB,SACjD,CAAC,MAAOzkB,GACLkV,OAAOlL,EACV,CACL,GACJ,+BC7CI4a,EACAC,EACAC,GAEA,YAHA,IAAAD,IAAAA,EAAc,UACd,IAAAC,IAAAA,EAAe,KAER,IAAI9P,SAAQ,SAACC,EAASC,GACzB,IACI,IAAIyN,EAAwB,IAAIC,MAChCD,EAAIE,IAAM+B,EACVjC,EAAIrN,OAAS,WACT,IAAIyP,EAA4BC,SAASC,cAAc,UACjDC,EAAoBL,EACpBM,EAAqBL,EACvB9B,EAAgBL,EAAIK,MACpBC,EAAiBN,EAAIM,OAErB4B,EAAW7B,GAAS8B,EAAY7B,EAChChO,EAAQ2P,GAEJ5B,EAAQC,EACJD,EAAQkC,IACRjC,GAAUiC,EAAYlC,EACtBA,EAAQkC,GAGRjC,EAASkC,IACTnC,GAASmC,EAAalC,EACtBA,EAASkC,GAGrBJ,EAAO/B,MAAQA,EACf+B,EAAO9B,OAASA,EAChB,IAAImC,EAAuCL,EAAOM,WAAW,MACzDD,GACAA,EAAIE,UAAU3C,EAAK,EAAG,EAAGK,EAAOC,GAChChO,EAAQ8P,EAAOQ,eAGc,gBAAzB5a,QAAQC,IAAIC,UACZC,QAAQ9K,MAAM,mDAElBkV,OAAOlL,GAEf,CACH,CAAC,MAAOhK,GACwB,gBAAzB2K,QAAQC,IAAIC,UACZC,QAAQ9K,MAAM,mDAElBkV,OAAOlL,EACV,CACL,GACJ,4CbiEkC,SAACwb,GAE/B,OAAOA,EAAWja,QAAO,SAAClC,SACtB,QAA0B,QAAzBoc,EAAApc,EAAgBP,iBAAS,IAAA2c,OAAA,EAAAA,EAAEnE,YAE3B9V,KAAI,SAACnC,GAOF,MANqC,YAAjCA,EAAgBV,cACZU,EAAgBX,gBAEpBW,EAAgBX,cAAgB,0BAG7BN,GAAgBgB,UAAUC,EACrC,GACR,wEAMmC,SAC/BA,EACAqc,GAEA,IAAMC,EAAuCtc,EAAgBV,aACvDid,EAAwCF,EAAW/c,aAKtC,cAAfgd,GACA,CAAC,eAAW3b,GAAW9H,SAAS0jB,IAEhCvc,EAAgBV,kBAAeqB,EAC/BX,EAAgBX,cAAgBgd,EAAWhd,eAG5B,cAAfid,GACA,CAAC,eAAW3b,GAAW9H,SAAS0jB,KAEhCvc,EAAgBV,aAAe,UAC/BU,EAAgBX,cAAgBgd,EAAWhd,cAInD,6BIjKkC,SAC9BL,GAGA,OAAO,IAAI2M,SAAQ,SAACC,EAASC,GACzB0M,YAAW,WACP3M,WACO5M,GAAO,CACVM,aAAc,cAErB,GAAE,KAEP,GACJ,sDUb0B,SAACkd,EAAWC,QAAX,IAAAD,IAAAA,EAAS,SAAE,IAAAC,IAAAA,GAAY,GAC9C,IAAIC,EAAUF,EAQd,OAPIC,EACID,EAAKhc,QAAU,KACfkc,EAAUF,EAAKG,MAAM,EAAG,IAAM,MAAQH,EAAKG,OAAO,IAE/CH,EAAKhc,QAZiB,KAa7Bkc,EAAUF,EAAKG,MAAM,EAAG,IAAM,MAAQH,EAAKG,OAAO,IAE/CD,CACX,yBV2B8B,SAC1BE,GAGA,YAHA,IAAAA,IAAAA,EAA4B,KAGrB,IAAIjR,SAAQ,SAACC,EAASC,GAEzB0M,YAAW,WACP3M,GACH,GAAEgR,EAEP,GACJ,0BJuD+B,SAACC,GAE5B,YAF4B,IAAAA,IAAAA,EAAW,MAEhC,IAAIlR,SAAQ,SAACC,EAASC,GACzB0M,YAAW,WACP3M,GAAQ,EACX,GAAEiR,EACP,GACJ,wHAlEuC,SACnCC,GAEA,OAAKA,EACEA,EAAY3a,KAAI,SAAAnD,GACnB,OAAAoD,GAAAA,GAAA,CAAA,EAAYpD,GAAS,CAAAQ,IAAK,IAAIsY,gBAClC,IAHyB,EAI7B,oEA7CoC,SAChC9Y,GAEA,MAAO,CACHC,GAAID,EAAQC,GACZuY,aAAYpV,GAAAA,GAAA,CAAA,EACLpD,GAAO,CACVK,cAAe,yCACfC,aAAc,UAElBK,eAAgB,CACZnJ,SAAS,EACTiU,QAAS,2DACTC,QAAS,CAAE,GAGvB,sCA5B2C,SAAC1L,GACxC,OACOoD,GAAAA,GAAA,CAAA,EAAApD,GACH,CAAAK,cAAe,mBACfC,aAAc,QACdK,eAAgB,CACZnJ,SAAS,EACTiU,QAAS,qCACTC,QAAS,CAAE,IAGvB,wBJkF6B,SACzB1L,EACAyY,EACAjM,EACAnB,EACAqN,GAAoB,OAAApL,QAAA,OAAA,OAAA,GAAA,uCAEpB,MAAA,CAAA,EAAO,IAAIX,SAAQ,SAAOC,EAASC,GAAM,OAAAS,QAAA,OAAA,OAAA,GAAA,8EAIjC,8BAFMyQ,EAAuC/d,EAAQQ,MAO/Cwd,EAAsBxR,GAAU,OAChCyR,EAAqBje,EAAQE,MAE7B+K,EAAW,IAAIiT,UAEZ/S,OAAOuN,GAAe,OAAQuF,GAGjCE,EAAc/a,GAAA,CACdgb,WAAY,sBAAuBC,OAAQ,CAAEC,QAAS,YAAaC,OAAQ,QAASC,IAAK,KAASxe,EAAQU,iBAEhH+d,GAAmBxT,EAAUkT,GAGzB9R,SACU,CAAA,EAAME,GAChBwR,EACAC,EACAvF,EACAxN,EACAI,GAAW,CAAE,MAxBbuB,EAAQd,GAAsB9L,IACvB,CAAA,kBAkBXqM,EAAc+Q,UAOE5lB,QAEZoV,EAAQR,GAA0BpM,EAASqM,IAG3CO,EAAQN,GAAwBtM,EAASqM,iCAK7CO,EACIN,GAAwBtM,EAAS6L,+BAG5C,GAAA,UACH,qBAKI,SACF3L,EACAuY,EACAjM,EACAkS,EACArT,GALJ,IAwBCsT,EAAA7d,KAjBG,OAAO,IAAI6L,SAAQ,SAAOC,EAASC,GAAM,OAAAS,GAAAqR,OAAA,OAAA,GAAA,uEAI/B1T,EAAW,IAAIiT,UAEZ/S,OAAOuT,GAAS,OAAQxe,oBAGU,6BAAA,CAAA,EAAMqM,GAAe,IAAIuM,eAAkBtM,EAAQiM,EAAKxN,EAAUI,kBAAnG1K,EAAiCyc,EAA0EwB,OACjHhS,EAAQjM,gCAIRiM,EAAQf,8BAEf,GAAA,GACL,8CQtJyB,SACrB7L,GAGA,OAAO,IAAI2M,SAAQ,SAACC,EAASC,GACzB0M,YAAW,WACP3M,WACO5M,GAAO,CACVM,aAAc,YAErB,GAAE,IACP,GACJ,2BA6CgC,SAC5BU,GAGA,OAAO,IAAI2L,SAAQ,SAACC,EAASC,GACzB0M,YAAW,WACPvY,EAAgBV,aAAe,UAC/BsM,WACO5L,GAAe,CAClBV,aAAc,YAErB,GAAE,IACP,GACJ,mFdhCmC,SAC/Bwd,EACAlE,EACAiF,EACAxU,EACAxT,EACAijB,GAGA,IAAIgF,EAA4B,GAChC,IAAKlF,EAAiB,OAAOkF,EAK7B,IAJA,IAAIC,EAAoBnF,EAClBK,EACFrgB,EAA+BkgB,GAC7BK,EAAuCF,EAAyBhiB,aAC7DsJ,EAAI,EAAGA,EAAIuc,EAAYtc,OAAQD,IAAK,CACzC,IAAIyd,EAA0BlB,EAAYvc,GAK1C,IAHAyd,EAAiB5U,GAAgB4U,EAAgB3U,EAAWwU,EAAqB5E,IAG9DxiB,MAAO,CAEtB,IAAMA,EAAQsnB,EAAY,EAC1BC,EAAevnB,MAAQA,EAElBA,IACDunB,EAAe5e,OAAS4e,EAAe5e,OAClC+B,GAAAA,GAAA,GAAK6c,EAAe5e,YAAQ+Z,EAAsBtjB,GAAYujB,UAC7D,CAACD,EAAsBtjB,GAAYujB,OAE7C2E,GACH,CACDD,EAAe1V,KAAK4V,EAEvB,CACD,OAAOF,CACX"}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/Chinese-simplified/localization.simplifiedChinese.d.ts b/src/files-ui/core/localization/Chinese-simplified/localization.simplifiedChinese.d.ts
deleted file mode 100644
index 86e19f420e6f56579a8f6657bcbc89ecfd45f742..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Chinese-simplified/localization.simplifiedChinese.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * English translation for Dropzone component
- */
-export declare const DropzoneSimplifiedChinese: LocalLabels;
-/**
- * Chinnese translation for FileItem component
- */
-export declare const FileItemSimplifiedChinese: LocalLabels;
-/**
- * English translation for Validation Errors
- */
-export declare const ValidateErrorSimplifiedChinese: LocalLabels;
diff --git a/src/files-ui/core/localization/Chinese-traditional/localization.traditionalChinese.d.ts b/src/files-ui/core/localization/Chinese-traditional/localization.traditionalChinese.d.ts
deleted file mode 100644
index 49e8ee4193c869a9d2a618cc9d17b1bfa30359b2..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Chinese-traditional/localization.traditionalChinese.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * English translation for Dropzone component
- */
-export declare const DropzoneTraditionalChinese: LocalLabels;
-/**
- * Chinese translation for FileItem component
- */
-export declare const FileItemTraditionalChinese: LocalLabels;
-/**
- * English translation for Validation Errors
- */
-export declare const ValidateErrorTraditionalChinese: LocalLabels;
diff --git a/src/files-ui/core/localization/English/localization.english.d.ts b/src/files-ui/core/localization/English/localization.english.d.ts
deleted file mode 100644
index 85e31dbb3d3e59e248c6d76e11839a5e0e722ac6..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/English/localization.english.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * English translation for Dropzone component
- */
-export declare const DropzoneEnglish: LocalLabels;
-/**
- * English translation for FileItem component
- */
-export declare const FileItemEnglish: LocalLabels;
-/**
- * English translation for Validation Errors
- */
-export declare const ValidateErrorEnglish: LocalLabels;
diff --git a/src/files-ui/core/localization/FileItem.localization.d.ts b/src/files-ui/core/localization/FileItem.localization.d.ts
deleted file mode 100644
index b1a9b14e0cab54d86df4b2b2e53de3337a434462..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/FileItem.localization.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ComponentLocalizer, LocalLabels, Localization } from "../types";
-export declare const FileItemLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const FileItemLocalizerSelector: (local?: Localization) => LocalLabels;
diff --git a/src/files-ui/core/localization/French/localization.french.d.ts b/src/files-ui/core/localization/French/localization.french.d.ts
deleted file mode 100644
index ebdaf57c4754f3671c78af189094b42943c40d5a..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/French/localization.french.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * French translation for Dropzone component
- */
-export declare const DropzoneFrench: LocalLabels;
-/**
- * French translation for FileItem component
- */
-export declare const FileItemFrench: LocalLabels;
-/**
- * French translation for Validation Errors
- */
-export declare const ValidateErrorFrench: LocalLabels;
diff --git a/src/files-ui/core/localization/Italian/localization.italian.d.ts b/src/files-ui/core/localization/Italian/localization.italian.d.ts
deleted file mode 100644
index 5ee58b5fffa3dd25046f9217b431bdd74ab45573..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Italian/localization.italian.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Italian translation for Dropzone component
- */
-export declare const DropzoneItalian: LocalLabels;
-/**
- * Italian translation for FileItem component
- */
-export declare const FileItemItalian: LocalLabels;
-/**
- * Italian translation for Validation Errors
- */
-export declare const ValidateErrorItalian: LocalLabels;
diff --git a/src/files-ui/core/localization/Portuguese/localization.portuguese.d.ts b/src/files-ui/core/localization/Portuguese/localization.portuguese.d.ts
deleted file mode 100644
index bafe87d9b82c69b656898b215fef2cabd9ae07b2..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Portuguese/localization.portuguese.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Portuguese translation for Dropzone
- */
-export declare const DropzonePortuguese: LocalLabels;
-/**
- * Portuguese translation for FileItem component
- */
-export declare const FileItemPortuguese: LocalLabels;
-/**
- * Portuguese translation for Validation Errors
- */
-export declare const ValidateErrorPortuguese: LocalLabels;
diff --git a/src/files-ui/core/localization/Russian/localization.russian.d.ts b/src/files-ui/core/localization/Russian/localization.russian.d.ts
deleted file mode 100644
index 3e68a80398807e5e87d84121a845e3a7bae3fcfa..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Russian/localization.russian.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Russian translation for Dropzone component
- */
-export declare const DropzoneRussian: LocalLabels;
-/**
- * Russian translation for FileItem component
- *
- */
-export declare const FileItemRussian: LocalLabels;
-/**
- * Russian translation for Validation Errors
- */
-export declare const ValidateErrorRussian: LocalLabels;
diff --git a/src/files-ui/core/localization/Spanish/localization.spanish.d.ts b/src/files-ui/core/localization/Spanish/localization.spanish.d.ts
deleted file mode 100644
index 75c9376b42a72da3543d6007895c413c4452c893..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Spanish/localization.spanish.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Spanish translation for Dropzone component
- */
-export declare const DropzoneSpanish: LocalLabels;
-/**
- * Spanish translation for FileItem component
- */
-export declare const FileItemSpanish: LocalLabels;
-/**
- * Spanish translation for Validation Errors
- */
-export declare const ValidateErrorSpanish: LocalLabels;
diff --git a/src/files-ui/core/localization/avatar.localization.d.ts b/src/files-ui/core/localization/avatar.localization.d.ts
deleted file mode 100644
index 3130a0af65f1493c4b5eb56212fb0e240aef7c55..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/avatar.localization.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { ComponentLocalizer, LocalLabels, Localization } from "../types";
-/**
- * TO-DO: Add Avatar localization in next release, inthe meanwhile it accepts custom labels
- */
-export declare const AvatarLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const AvatarLocalizerSelector: (local?: Localization) => LocalLabels;
diff --git a/src/files-ui/core/localization/dropzone.localization.d.ts b/src/files-ui/core/localization/dropzone.localization.d.ts
deleted file mode 100644
index cdd108202b7b189d719474862e39ef338617de3f..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/dropzone.localization.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ComponentLocalizer, Localization, LocalLabels } from "../types";
-export declare const DropzoneLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const DropzoneLocalizerSelector: (local: Localization | undefined) => LocalLabels;
diff --git a/src/files-ui/core/localization/index.d.ts b/src/files-ui/core/localization/index.d.ts
deleted file mode 100644
index 440cac806b6c6a2f3df22e82dbc136b5733e6210..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/index.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { FileItemItalian, DropzoneItalian, ValidateErrorItalian } from "./Italian/localization.italian";
-import { FileItemFrench, DropzoneFrench, ValidateErrorFrench } from "./French/localization.french";
-import { FileItemEnglish, DropzoneEnglish, ValidateErrorEnglish } from "./English/localization.english";
-import { FileItemSpanish, DropzoneSpanish, ValidateErrorSpanish } from "./Spanish/localization.spanish";
-import { FileItemRussian, DropzoneRussian, ValidateErrorRussian } from "./Russian/localization.russian";
-import { FileItemPortuguese, DropzonePortuguese, ValidateErrorPortuguese } from "./Portuguese/localization.portuguese";
-import { FileItemSimplifiedChinese, DropzoneSimplifiedChinese, ValidateErrorSimplifiedChinese } from "./Chinese-simplified/localization.simplifiedChinese";
-import { FileItemTraditionalChinese, DropzoneTraditionalChinese, ValidateErrorTraditionalChinese } from "./Chinese-traditional/localization.traditionalChinese";
-import { FileItemLocalizerSelector, FileItemLocalizer } from "./FileItem.localization";
-import { DropzoneLocalizerSelector, DropzoneLocalizer } from "./dropzone.localization";
-import { ValidateErrorLocalizer, ValidateErrorLocalizerSelector } from "./validationError.localization";
-export { ValidateErrorLocalizerSelector, ValidateErrorLocalizer, ValidateErrorItalian, ValidateErrorFrench, ValidateErrorEnglish, ValidateErrorSpanish, ValidateErrorPortuguese, ValidateErrorRussian, ValidateErrorSimplifiedChinese, ValidateErrorTraditionalChinese };
-export { DropzoneLocalizerSelector, DropzoneLocalizer, DropzoneItalian, DropzoneFrench, DropzoneEnglish, DropzoneSpanish, DropzonePortuguese, DropzoneRussian, DropzoneSimplifiedChinese, DropzoneTraditionalChinese };
-export { FileItemLocalizerSelector, FileItemLocalizer, FileItemItalian, FileItemFrench, FileItemEnglish, FileItemSpanish, FileItemPortuguese, FileItemRussian, FileItemSimplifiedChinese, FileItemTraditionalChinese };
diff --git a/src/files-ui/core/localization/validationError.localization.d.ts b/src/files-ui/core/localization/validationError.localization.d.ts
deleted file mode 100644
index 8284ffa71442cabf312e1d0318fdadb4d8654f67..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/validationError.localization.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ComponentLocalizer, LocalLabels, Localization } from "./../types";
-export declare const ValidateErrorLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const ValidateErrorLocalizerSelector: (local: Localization | undefined) => LocalLabels;
diff --git a/src/files-ui/core/mime/icons.d.ts b/src/files-ui/core/mime/icons.d.ts
deleted file mode 100644
index a36bfb9d99fda56ee23082e5b010e44c8f6d133b..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mime/icons.d.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-export declare const sevenzip = "https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png";
-export declare const aac = "https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png";
-export declare const abw = "https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png";
-export declare const accdb = "https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png";
-export declare const avi = "https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png";
-export declare const azw = "https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png";
-export declare const bmp = "https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png";
-export declare const bz = "https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png";
-export declare const bz2 = "https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png";
-export declare const c = "https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png";
-export declare const cda = "https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png";
-export declare const csh = "https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png";
-export declare const css = "https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png";
-export declare const csv = "https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png";
-export declare const docx = "https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png";
-export declare const docx2 = "https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png";
-export declare const drawio = "https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png";
-export declare const dw = "https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png";
-export declare const eml = "https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png";
-export declare const eot = "https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png";
-export declare const eps = "https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png";
-export declare const epub = "https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png";
-export declare const freearc = "https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png";
-export declare const gif = "https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png";
-export declare const gzip = "https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png";
-export declare const html = "https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png";
-export declare const icalendar = "https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png";
-export declare const ind = "https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png";
-export declare const ini = "https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png";
-export declare const java = "https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png";
-export declare const jar = "https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png";
-export declare const javascript = "https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png";
-export declare const jpeg = "https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png";
-export declare const jsf = "https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png";
-export declare const json = "https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png";
-export declare const jsonld = "https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png";
-export declare const midi = "https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png";
-export declare const mov = "https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png";
-export declare const mp3 = "https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png";
-export declare const mp4 = "https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png";
-export declare const mpeg = "https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png";
-export declare const mpkg = "https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png";
-export declare const octet = "https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png";
-export declare const odp = "https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png";
-export declare const ods = "https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png";
-export declare const odt = "https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png";
-export declare const oga = "https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png";
-export declare const ogv = "https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png";
-export declare const ogx = "https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png";
-export declare const opus = "https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png";
-export declare const otf = "https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png";
-export declare const pdf = "https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png";
-export declare const php = "https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png";
-export declare const png = "https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png";
-export declare const pptx = "https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png";
-export declare const pptx2 = "https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png";
-export declare const proj = "https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png";
-export declare const psd = "https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png";
-export declare const pst = "https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png";
-export declare const publisher = "https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png";
-export declare const python = "https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png";
-export declare const tar = "https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png";
-export declare const rar = "https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png";
-export declare const react = "https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png";
-export declare const richtextformat = "https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png";
-export declare const rtf = "https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png";
-export declare const sass = "https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png";
-export declare const settings = "https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png";
-export declare const sh = "https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png";
-export declare const swf = "https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png";
-export declare const text = "https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png";
-export declare const tiff = "https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png";
-export declare const ttf = "https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png";
-export declare const typescript = "https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png";
-export declare const url = "https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png";
-export declare const vsd = "https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png";
-export declare const vue = "https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png";
-export declare const wav = "https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png";
-export declare const webm = "https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png";
-export declare const weba = "https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png";
-export declare const webp = "https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png";
-export declare const wma = "https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png";
-export declare const wmv = "https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png";
-export declare const woff = "https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png";
-export declare const xlsx = "https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png";
-export declare const xlsx2 = "https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png";
-export declare const xml = "https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png";
-export declare const xul = "https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png";
-export declare const zip = "https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png";
diff --git a/src/files-ui/core/mime/index.d.ts b/src/files-ui/core/mime/index.d.ts
deleted file mode 100644
index 3549a7ae81ae96af525757254b4ea309acaceb5c..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mime/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { aac, abw, accdb, avi, azw, bmp, bz, bz2, cda, csh, css, csv, docx, drawio, eot, epub, freearc, gif, gzip, html, icalendar, jar, java, javascript, jpeg, json, jsonld, midi, mp3, mp4, mpeg, mpkg, octet, odp, ods, odt, oga, ogv, ogx, opus, otf, pdf, php, png, pptx, psd, python, rar, react, rtf, sass, sevenzip, sh, swf, tar, text, tiff, ttf, typescript, vsd, vue, wav, weba, webm, webp, wma, wmv, woff, xlsx, xml, xul, zip } from "./icons";
-export { aac, abw, accdb, avi, azw, bmp, bz, bz2, cda, csh, css, csv, docx, drawio, eot, epub, freearc, gif, gzip, html, icalendar, jar, java, javascript, jpeg, json, jsonld, midi, mp3, mp4, mpeg, mpkg, octet, odp, ods, odt, oga, ogv, ogx, opus, otf, pdf, php, png, pptx, psd, python, rar, react, rtf, sass, sevenzip, sh, swf, tar, text, tiff, ttf, typescript, vsd, vue, wav, weba, webm, webp, wma, wmv, woff, xlsx, xml, xul, zip };
-export { applicationSelector, audioSelector, checkIsCode, extensionSelector, fontSelector, getURLFileIco, imageSelector, mimeSelector, textSelector, videoSelector, getURLFileIcoFromNameAndType, } from "./mime";
diff --git a/src/files-ui/core/mime/mime.d.ts b/src/files-ui/core/mime/mime.d.ts
deleted file mode 100644
index 3b88f13dfee1d8a1d0f4bfe4d511f49ed005bf30..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mime/mime.d.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { IconsMap } from "../types";
-/**
- *
- * @param tailMime
- * @returns
- */
-export declare const audioSelector: (tailMime: string) => keyof IconsMap;
-export declare const textSelector: (tailMime: string) => keyof IconsMap;
-export declare const imageSelector: (tailMime: string) => keyof IconsMap;
-export declare const fontSelector: (tailMime: string) => keyof IconsMap;
-export declare const videoSelector: (tailMime: string) => keyof IconsMap;
-/**
- *
- * @param tailMime
- * @returns
- */
-export declare const applicationSelector: (tailMime: string) => keyof IconsMap;
-/**
- * Selects to wich mime type the mime type given belongs to
- * @param mimeType mime type to be searched
- * @returns the generic type,
-if not found it return "octet" that means generic binary file
- */
-export declare const mimeSelector: (mimeType?: string) => keyof IconsMap;
-/**
- * Selects to wich mapped extension
- * the given exension belongs to
- *
- * @param extension
- * @returns
- */
-export declare const extensionSelector: (extension?: string) => keyof IconsMap;
-/**
- * Chack for extention whether the file is code os not
- * @param extension
- * @returns
- */
-export declare const checkIsCode: (extension?: string) => keyof IconsMap;
-/**
- * Looks for a suitable file icon
- * If not found, returns octet-stream url
- * @param props mime and extension from file to search
- * @returns the result file ico
- */
-export declare const getURLFileIco: (file: File | undefined, customIcons: IconsMap | undefined) => ResultFileIco;
-/**
- * Looks for a suitable file icon
- * @param props mime and extension from file to search
- * @returns the result file ico, if not found, turns octet-stream url
- */
-export declare const getURLFileIcoFromNameAndType: (name: string | undefined, type: string | undefined, customIcons: IconsMap | undefined) => ResultFileIco;
-interface ResultFileIco {
-    url: string;
-    mimeResume: keyof IconsMap;
-}
-export {};
diff --git a/src/files-ui/core/mocks/extFileMock.d.ts b/src/files-ui/core/mocks/extFileMock.d.ts
deleted file mode 100644
index 14469566d5c176ad00ca63b82097d0b7536e5d0a..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mocks/extFileMock.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { ExtFile } from "../types";
-export declare const extFileMock: (id?: number) => ExtFile;
diff --git a/src/files-ui/core/mocks/index.d.ts b/src/files-ui/core/mocks/index.d.ts
deleted file mode 100644
index eb8f2d891af962dcc1a06e5a0aca76b108a5fd09..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mocks/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { extFileMock } from "./extFileMock";
diff --git a/src/files-ui/core/reader/imageOrientation.d.ts b/src/files-ui/core/reader/imageOrientation.d.ts
deleted file mode 100644
index 55b3c8cfcca0af50364fe1702bba3ca8347c58ee..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/imageOrientation.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Resize an image resolution given maxWidth and maxHeight
- *
- * Should be called with await
- * @param base64Str a string representation of an imae file
- * @param maxWidth the max width of he image
- * @param maxHeight the max height of he image
- * @returns the resized image
- */
-export declare function getImageOrientation(imageSource: string | undefined): Promise<"landscape" | "portrait">;
diff --git a/src/files-ui/core/reader/index.d.ts b/src/files-ui/core/reader/index.d.ts
deleted file mode 100644
index f51527a5d750760a62135ce2e9e956602a8dd017..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { readAsArrayBuffer, readAsBinaryString, readAsDataURL, readAsText } from "./readers";
-export { resizeImage } from "./resizeImage";
-export { getImageOrientation } from "./imageOrientation";
diff --git a/src/files-ui/core/reader/readers.d.ts b/src/files-ui/core/reader/readers.d.ts
deleted file mode 100644
index 4e65f594b27457fbd7ae48b6bbf8cb86f0340521..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/readers.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Reads an image (or other type) file as data URL in a promise way,
- * so you can use await.
- * It will return a string that contains the URL representation
- * @param file File or Blob object
- * @returns data URL of the file
- */
-export declare const readAsDataURL: (file: File | Blob, onProgress?: Function, onError?: Function) => Promise<string | undefined>;
-/**
- * Reads a file as Text in a promise way, so you can use await.
- * If other kind of file is sent, this function will read it anyway
- * and will return a string that contains the URL representation
- * @param file File or Blob object
- * @param encoding The type of encoding such as "base64"
- * @returns data text of the file
- */
-export declare const readAsText: (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function) => Promise<string | undefined>;
-/**
- * Reads a file and return the raw binary data from the file.
- * @param file File or Blob object
- * @param encoding The type of encoding such as "base64"
- * @returns raw binary data of the file
- */
-export declare const readAsBinaryString: (file: File | Blob, onProgress?: Function, onError?: Function) => Promise<string | undefined>;
-/**
- * Reads a file and returns an ArrayBuffer representing the file's data
- * @param file File or blob object
- * @param encoding The type of encoding such as "base64"
- * @returns ArrayBuffer representation of the file
- */
-export declare const readAsArrayBuffer: (file: File | Blob, onProgress?: Function, onError?: Function) => Promise<string | undefined>;
diff --git a/src/files-ui/core/reader/resizeImage.d.ts b/src/files-ui/core/reader/resizeImage.d.ts
deleted file mode 100644
index 3ac433add532bda7aa715dfad084ccee4be74149..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/resizeImage.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Resize an image resolution given maxWidth and maxHeight
- *
- * Should be called with await
- * @param base64Str a string representation of an imae file
- * @param maxWidth the max width of he image
- * @param maxHeight the max height of he image
- * @returns the resized image
- */
-export declare function resizeImage(base64Str: string, maxWidth?: number, maxHeight?: number): Promise<string | undefined>;
diff --git a/src/files-ui/core/synthetic-file/SyntheticFile.d.ts b/src/files-ui/core/synthetic-file/SyntheticFile.d.ts
deleted file mode 100644
index 43cb064eb52ed857742cd3ced23f22af1f300e34..0000000000000000000000000000000000000000
--- a/src/files-ui/core/synthetic-file/SyntheticFile.d.ts
+++ /dev/null
@@ -1,551 +0,0 @@
-/**
- * A syntetic file creator.
- * Very useful for tests
- */
-export declare abstract class SyntheticFile {
-    /**
- *
- * @param name the file name
- * @param size the file size
- * @param type the file type
- * @returns
- */
-    static createFile: (name: string, size: number, type: string) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_aac: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_abw: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_freearc: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_avi: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_azw: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_octet: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bmp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bz: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bz2: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_cda: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_csh: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_css: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_csv: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_doc: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_docx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_eot: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_epub: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_gzip: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_gif: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_htm: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_html: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ico: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_icalendar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jpeg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jpg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_js: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_json: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jsonld: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mid: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_x_mid: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_midi: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_x_midi: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mjs: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mp3: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mp4: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mpeg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mpkg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_odp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ods: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_odt: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_oga: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ogv: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ogx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_opus: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_otf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_png: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_pdf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_php: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ppt: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_pptx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_rar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_rtf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_sh: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_svg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_swf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tif: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tiff: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ts: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ttf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_text: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_typescript: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_vsd: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_wav: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_weba: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_webm: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_webp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_woff: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_woff2: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xhtml: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xlsx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xls: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xml: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xml_txt: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xul: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_zip: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp2: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp_a: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp_v: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_7z: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_python: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_java: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_react: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_vue: (size?: number) => File;
-    /**
-     * Creates an array of fake (synthetic) files
-     * @param size the file size for all synthetic files
-     * @returns an array of all file icon preview supported files
-     */
-    static createFileListMiscelanious: (size?: number) => File[];
-}
-/**
- * Create a list of synthetic files with different mime types
- * @param size the file size for each synthetic file
- * @returns a list of synthetic file
- */
-export declare const createListOfMultiTypeFile: (size?: number) => File[];
-/**
- * Creates a synthetic file.
- * By default, creates a png image file
- * @param name the file name to show. By default is set to "png-image-file-with-large-name.png"
- * @param size the size in bytes of the file. By default this value is set to 455555
- * @param type the mime type of the file. By default is set to "image/png"
- * @returns
- */
-export declare const createSyntheticFile: (name?: string, size?: number, type?: string) => File;
diff --git a/src/files-ui/core/synthetic-file/index.d.ts b/src/files-ui/core/synthetic-file/index.d.ts
deleted file mode 100644
index 185ff18df6d032b3123c3f5cd361840e2f1bf7c6..0000000000000000000000000000000000000000
--- a/src/files-ui/core/synthetic-file/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { SyntheticFile, createListOfMultiTypeFile, createSyntheticFile } from "./SyntheticFile";
-export { makeSyntheticExtFile } from "./syntheticfileGenerator";
diff --git a/src/files-ui/core/synthetic-file/syntheticfileGenerator.d.ts b/src/files-ui/core/synthetic-file/syntheticfileGenerator.d.ts
deleted file mode 100644
index 5479f50f7f4058bac469cc8a5022c49ed3734eea..0000000000000000000000000000000000000000
--- a/src/files-ui/core/synthetic-file/syntheticfileGenerator.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { ExtFile, UPLOADSTATUS } from "../types";
-/**
- * Make a validated file that is ready to be used on FileItem component,
- * if valid is not set, a random operation will decide whether the file is valid or not
- * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status
- * If valid is true, then file can be uploaded and can have upload message if the status is succes or error
- * @param file The file
- * @param valid true if it is a valid file, otherwise is false
- * @param uploadStatus the current upload status. If not given a random upload status will be set
- * @param uploadMessage the upload message after uploading
- * @returns a Vaidated File object
- */
-export declare const makeSyntheticExtFile: (file?: File, valid?: boolean, uploadStatus?: UPLOADSTATUS, uploadMessage?: string) => ExtFile;
diff --git a/src/files-ui/core/types/ExtFile.d.ts b/src/files-ui/core/types/ExtFile.d.ts
deleted file mode 100644
index 6d2dcc5a15dc27a61313d9779e20c426feb1598f..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/ExtFile.d.ts
+++ /dev/null
@@ -1,172 +0,0 @@
-import { UPLOADSTATUS, ServerResponse } from "../types";
-/**
- * ExtFile === "Extended File".
- * This object "extends" the File Object
- */
-export declare type ExtFile = {
-    /**
-     * An identifier for the extFile
-     */
-    id?: number | string | undefined;
-    /**
-     * The file object. Used mostly when user selects or drops files in the client sid.
-     */
-    file?: File;
-    /**
-     * The name of the file. Used mostly for displaying file data from server.
-     */
-    name?: string;
-    /**
-     * The type of the file. Used mostly for displaying file data from server.
-     */
-    type?: string;
-    /**
-     * The size of the file. Used mostly for displaying file data from server.
-     */
-    size?: number;
-    /**
-     * a flag that determines whether the file is valid, not valid or it is not validated.
-     */
-    valid?: boolean;
-    /**
-     * The list of errors when the file was validated
-     */
-    errors?: string[];
-    /**
-     * The current upload status. (e.g. "uploading")
-     */
-    uploadStatus?: UPLOADSTATUS | undefined;
-    /**
-     * A message that shows the result of the upload process
-     */
-    uploadMessage?: string;
-    /**
-     * Link, URI or string representation of an image
-     */
-    imageUrl?: string;
-    /**
-     * The XMLHttpRequest object for performing uploads to a server
-     */
-    xhr?: XMLHttpRequest;
-    /**
-     * The current percentage of upload progress.
-     * This value will have a higher priority over the upload progress value calculated inside the component.
-     * @default undefined
-     */
-    progress?: number;
-    /**
-     * The additional data that will be sent to the server
-     * when files are uploaded individually
-     */
-    extraUploadData?: Record<string, any>;
-    /**
-     * Any kind of extra data that could be needed.
-     */
-    extraData?: Object;
-    /**
-     * The upload response from server
-     */
-    serverResponse?: ServerResponse;
-    /**
-     * The url to be used to perform a GET request in order to download the
-        file. If defined, the download icon will be shown.
-     */
-    downloadUrl?: string;
-    /**
-     * Link, URI, FIle object or string representation of a video
-     */
-    videoUrl?: string;
-};
-/**
- * A class definition for ExtFile.
- * This class has the purpose to allow the creation of instances
- * of an ExtFile for performing complex operations that cannot be
- * accomplished just by using the ExtFile type.
- * For instance, it can help in changing the value of some attributes
- * across different scopes thanks to memory reference.
- */
-export declare class ExtFileInstance {
-    /**
-     * An identifier for the extFile
-     */
-    id?: number | string;
-    /**
-     * The file object. Used mostly when user selects or drops files in the client sid.
-     */
-    file?: File;
-    /**
-     * The name of the file. Used mostly for displaying file data from server.
-     */
-    name?: string;
-    /**
-     * The type of the file. Used mostly for displaying file data from server.
-     */
-    type?: string;
-    /**
-     * The size of the file. Used mostly for displaying file data from server.
-     */
-    size?: number;
-    imageUrl?: string;
-    /**
-     * A flag that determines whether the file is valid, not valid or it is not validated.
-     */
-    valid?: boolean;
-    /**
-     * The list of errors when the file was validated
-     */
-    errors?: string[];
-    /**
-     * A message that shows the result of the upload process
-     */
-    uploadMessage?: string;
-    /**
-     * The current upload status. (e.g. "uploading")
-     */
-    uploadStatus?: UPLOADSTATUS | undefined;
-    /**
-     * The current upload progress
-     */
-    progress?: number;
-    /**
-     * The XMLHttpRequest object for performing uploads to a server
-     */
-    xhr?: XMLHttpRequest;
-    /**
-     * The additional data that will be sent to the server
-     */
-    extraData?: Record<string, any>;
-    /**
-     * The additional data that will be sent to the server
-     * when filesare uploaded individually
-     */
-    extraUploadData?: Record<string, any>;
-    /**
-     * The upload response from server
-     */
-    serverResponse?: ServerResponse;
-    /**
-     * Url to perform a GET request in order to download the file.
-     * This  action is triggered when download button is clicked or pressed.
-     * In case onDownload prop is given
-     */
-    downloadUrl?: string;
-    /**
-     * Link, URI, FIle object or string representation of a video
-     */
-    videoUrl?: string;
-    constructor(extFile: ExtFile);
-    /**
-     * method under construction
-     */
-    /**
-     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object
-     * @param extFileInstance the instance of ExtFile
-     * @returns an ExtFile object
-     */
-    static toExtFile(extFileInstance: ExtFileInstance): ExtFile;
-    /**
-     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.
-     * @returns an ExtFile object
-     */
-    toExtFile(): ExtFile;
-}
diff --git a/src/files-ui/core/types/ExtFileManager.d.ts b/src/files-ui/core/types/ExtFileManager.d.ts
deleted file mode 100644
index 8922bca3769b40ef6433984cc804a66fd61d6fbd..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/ExtFileManager.d.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { ExtFileInstance, ExtFile } from "./ExtFile";
-export declare class ExtFileManager {
-    private static nextId;
-    static fileLists: Record<number | string, ExtFileInstance[] | undefined>;
-    /**
-     * Increases the id counter and returns the next id available.
-     * @returns the next integer id available
-     */
-    static getNextId(): number;
-    /**
-     * Updates a dui file list given an id
-     * @param id id of the fileList
-     * @param extFiles list of DuiFiles forinitializing the array
-     * @returns the id of the fileList
-     */
-    static setFileList(id: number | string | undefined, extFilesInstances: ExtFileInstance[]): number | string;
-    /**
-     * Generates a new ID
-     * @returns the next Id asociated with a DuiFIle list
-     */
-    static createFileListMap(): number;
-    /**
-     * Deletes a list map
-     * @returns the next Id asociated with a DuiFIle list
-     */
-    static removeFileListMap(id?: number | string): number | string;
-    /**
-     *
-     * @param id the id of the dropzone
-     * @returns
-     */
-    static getExtFileInstanceList(id?: number | string): ExtFileInstance[] | undefined;
-    /**
-     * Updates(replaces) the extFile list on preparing stage and returns the new array.
-     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true
-     * Then sets on preparing stage all files according to the following creiteria:
-     * If theuploadStatus is diferent than "sucess" AND
-     * then, update the files on preparing stage. Otherwise keep the extFile props.
-     * Finally, updates the ExtFileInstance list on ExtFileManager.
-     * @param dropzoneId the id to access the right list
-     * @param localFiles the list of extFiles
-     * @param validateFiles flag that indicates that validation is active or o¿not
-     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not
-     * @returns a list of ExtFileInstance
-     */
-    static setFileListMapPreparing(dropzoneId: number | string, localFiles: ExtFile[], validateFiles: boolean, cleanOnUpload: boolean): ExtFileInstance[] | undefined;
-    /**
- * Updates(replaces) the extFile list on preparing stage and returns the new array.
- * Removes the non valid files if cleanOnUpload is true and validateFiles is also true
- * Then sets on preparing stage all files according to the following creiteria:
- * If theuploadStatus is diferent than "sucess" AND
- * then, update the files on preparing stage. Otherwise keep the extFile props.
- * Finally, updates the ExtFileInstance list on ExtFileManager.
- * @param dropzoneId the id to access the right list
- * @param localFiles the list of extFiles
- * @param validateFiles flag that indicates that validation is active or o¿not
- * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not
- * @returns a list of ExtFileInstance
- */
-    static setFileListMapPreparing2(dropzoneId: number | string, localFiles: ExtFile[], validateFiles: boolean, cleanOnUpload: boolean): ExtFileInstance[] | undefined;
-}
diff --git a/src/files-ui/core/types/FileListMap.d.ts b/src/files-ui/core/types/FileListMap.d.ts
deleted file mode 100644
index b5d6917f5cdcbafcebc389a993d8ac811461c278..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/FileListMap.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { ExtFileInstance } from "./ExtFile";
-export declare type ExtFileListMap = {
-    [id: number | string]: ExtFileInstance[] | undefined;
-};
diff --git a/src/files-ui/core/types/IconsMap.d.ts b/src/files-ui/core/types/IconsMap.d.ts
deleted file mode 100644
index dbd9ea586ad6cc9228c304885d8628f277737b5f..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/IconsMap.d.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-export type IconsMap = {
-    aac?: string;
-    accdb?: string;
-    abw?: string;
-    arc?: string;
-    avi?: string;
-    azw?: string;
-    octet?: string;
-    bmp?: string;
-    bz?: string;
-    bz2?: string;
-    cda?: string;
-    csh?: string;
-    css?: string;
-    csv?: string;
-    docx?: string;
-    drawio?: string;
-    eot?: string;
-    epub?: string;
-    gzip?: string;
-    gif?: string;
-    html?: string;
-    icalendar?: string;
-    jar?: string;
-    jpeg?: string;
-    javascript?: string;
-    json?: string;
-    jsonld?: string;
-    midi?: string;
-    mp3?: string;
-    mp4?: string;
-    mpeg?: string;
-    mpkg?: string;
-    mp2t?: string;
-    odp?: string;
-    ods?: string;
-    odt?: string;
-    oga?: string;
-    ogv?: string;
-    ogx?: string;
-    opus?: string;
-    otf?: string;
-    png?: string;
-    pdf?: string;
-    php?: string;
-    pptx?: string;
-    psd?: string;
-    rar?: string;
-    rtf?: string;
-    sass?: string;
-    sh?: string;
-    swf?: string;
-    tar?: string;
-    tiff?: string;
-    ttf?: string;
-    typescript?: string;
-    text?: string;
-    vsd?: string;
-    wav?: string;
-    weba?: string;
-    webm?: string;
-    webp?: string;
-    woff?: string;
-    wma?: string;
-    wmv?: string;
-    xhtml?: string;
-    xlsx?: string;
-    xml?: string;
-    xul?: string;
-    zip?: string;
-    sevenzip?: string;
-    python?: string;
-    java?: string;
-    react?: string;
-    vue?: string;
-    fallBack?: string;
-};
diff --git a/src/files-ui/core/types/NamedColor.d.ts b/src/files-ui/core/types/NamedColor.d.ts
deleted file mode 100644
index e4cf51bfbb77b6ee31fde583a242d36581d8303e..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/NamedColor.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Interface to describe a named color
- */
-export interface NamedColor {
-    [colorName: string]: string;
-}
diff --git a/src/files-ui/core/types/UploadConfig.d.ts b/src/files-ui/core/types/UploadConfig.d.ts
deleted file mode 100644
index 59cfa60b04116eaca8dac9f739529216c4be8f31..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/UploadConfig.d.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { Method } from "./method";
-export type UploadConfig = {
-    /**
-     * The url endpoint to upload the file.
-     * e.g. https://www.myasomwbackend/uploads/file
-     */
-    url?: string;
-    /**
-     * upload method, can be POST | PUT | PATCH
-     * @default "POST"
-     */
-    method?: Method;
-    /**
-     * Request headers for http request.
-     * e.g.
-     * ```jsx
-     * headers = {
-     *    "content-type": "multipart/form-data",
-     *    Authorization: "Bearer YOUR_BEARER_TOKEN_GOES_HERE",
-     * }
-     * ```
-     */
-    headers?: Record<string, string>;
-    /**
-     * the label to use in request
-     * On server this must be the label to get the file.
-     * @default "file"
-     */
-    uploadLabel?: string;
-    /**
-     * Flag for indicating whther to remove the non-valid files
-     * before starting the upload process.
-     * This flag is valid only if validation is enable
-     */
-    cleanOnUpload?: boolean;
-    /**
-     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also
-     * it will start the upload stage for the files if at least url was set
-     * By default is false
-     */
-    autoUpload?: boolean;
-    /**
-     * The time that will last the "preparing" stage
-     * By default is 1500 miliseconds = 1.5 seconds
-     */
-    preparingTime?: number;
-    /**
-     * A message to show in the footer when the uploading process takes place.
-     */
-    uploadingMessage?: string;
-};
-export declare const createUploadConfig: (url?: string, method?: Method, headers?: Record<string, string>, uploadLabel?: string, cleanonUpload?: boolean) => {
-    url: string;
-    method: Method;
-    headers: Record<string, string>;
-    uploadLabel: string;
-    cleanonUpload: boolean;
-};
diff --git a/src/files-ui/core/types/UploadStatus.d.ts b/src/files-ui/core/types/UploadStatus.d.ts
deleted file mode 100644
index 6fce661a4c717aa683b7e06ff2ede10e4abb0fcb..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/UploadStatus.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export type UPLOADSTATUS = "preparing" | "aborted" | "uploading" | "success" | "error";
diff --git a/src/files-ui/core/types/behaviur.d.ts b/src/files-ui/core/types/behaviur.d.ts
deleted file mode 100644
index b39ce8a0b0cf0f999af9730225f430f637933798..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/behaviur.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * View mode for File Items inside dropzone
- */
-export declare type Behaviour = "add" | "replace";
diff --git a/src/files-ui/core/types/index.d.ts b/src/files-ui/core/types/index.d.ts
deleted file mode 100644
index b2d02fb872b8f5cac72f1a48b2146958ff5a4bfc..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/index.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export type { Behaviour } from "./behaviur";
-export type { ExtFile } from "./ExtFile";
-export { ExtFileInstance } from "./ExtFile";
-export { ExtFileManager } from "./ExtFileManager";
-export type { ExtFileListMap } from "./FileListMap";
-export type { Localization, FunctionLabel, ComponentLocalizer, LocalLabels } from "./localization";
-export type { Method } from "./method";
-export type { NamedColor } from "./NamedColor";
-export type { UPLOADSTATUS } from "./UploadStatus";
-export type { ServerResponse, UploadPromiseResponse, UploadResponse } from "./uploadTypes";
-export type { ValidateFileResponse, FileValidatorProps } from "./validation";
-export type { UploadConfig } from "./UploadConfig";
-export { createUploadConfig } from "./UploadConfig";
-export type { IconsMap } from "./IconsMap";
diff --git a/src/files-ui/core/types/localization.d.ts b/src/files-ui/core/types/localization.d.ts
deleted file mode 100644
index a0ff069c9321807414841707b2b7be85cb3e431f..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/localization.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export type Localization = "EN-en" | "ES-es" | "FR-fr" | "IT-it" | "PT-pt" | "RU-ru" | "ZH-cn" | "ZH-hk";
-export type FunctionLabel = ((s1: string | number, s2?: string | number, s3?: string) => string);
-export type LocalLabels = {
-    [label: string]: string | FunctionLabel | LocalLabels;
-};
-export type ComponentLocalizer = {
-    [language in Localization]: LocalLabels;
-};
diff --git a/src/files-ui/core/types/method.d.ts b/src/files-ui/core/types/method.d.ts
deleted file mode 100644
index b752da5486873f017f62fe0798d55d75e61a1259..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/method.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Method to be used for request
- */
-export declare type Method = "POST" | "PUT" | "PATCH";
-/**
- *
- * @param method the method in string format
- * @returns true if method is included in ["POST", "PUT", "PATCH"]
- */
-export declare const idValidMethod: (method: string) => boolean;
diff --git a/src/files-ui/core/types/uploadTypes.d.ts b/src/files-ui/core/types/uploadTypes.d.ts
deleted file mode 100644
index 0266517b81bf2c0841c8843c8adc835f151d2b49..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/uploadTypes.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { ExtFile } from "./ExtFile";
-export declare type UploadResponse_ = {
-    id: number | string | undefined;
-    uploadedFile: ExtFile;
-};
-export declare type UploadPromiseResponse = {
-    uploadResponse: UploadResponse;
-    uploadedFile: ExtFile;
-};
-export declare type UploadResponse = {
-    id: number | string | undefined;
-    serverResponse: ServerResponse | {};
-    uploadedFile: ExtFile;
-};
-export type ServerResponse = {
-    /**
-     * If true, it means that the request was successful.
-     */
-    success: boolean;
-    /**
-     * A message that describes the result of the request.
-     */
-    message?: string;
-    /**
-     * The response of the server.
-     */
-    payload?: any;
-};
diff --git a/src/files-ui/core/types/validation.d.ts b/src/files-ui/core/types/validation.d.ts
deleted file mode 100644
index f35040a1115ed941515359305b3c0545aefac492..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/validation.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export declare type FileValidatorProps = {
-    /**
-     * max file size in bytes
-     */
-    maxFileSize?: number;
-    /**
-     * a comma separated list of mime types or file extensions.
-     */
-    accept?: string;
-};
-export declare type ValidateFileResponse = {
-    /**
-     * if true, that means the file is valid
-     */
-    valid: boolean;
-    /**
-     * the list of erros associated with an specific file
-     */
-    errors?: string[];
-};
diff --git a/src/files-ui/core/upload/addExtraData.upload.d.ts b/src/files-ui/core/upload/addExtraData.upload.d.ts
deleted file mode 100644
index a57b6d5d6c4d497516d6da288a2960a23f760afc..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/addExtraData.upload.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default function addExtraData(formData: FormData, extraData: Record<string, string> | undefined): void;
diff --git a/src/files-ui/core/upload/addheaders.upload.d.ts b/src/files-ui/core/upload/addheaders.upload.d.ts
deleted file mode 100644
index 6889520dcc00f5ded82f4d7e6271cfde45d39fe3..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/addheaders.upload.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default function addHeaders(xhr: XMLHttpRequest, headers: Record<string, string> | undefined): void;
diff --git a/src/files-ui/core/upload/errors.upload.d.ts b/src/files-ui/core/upload/errors.upload.d.ts
deleted file mode 100644
index 0975c2461051d59eec20504c8242fa9c9c1f7eec..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/errors.upload.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { ExtFile } from "../types";
-export declare const TIMEOUT_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const ABORTED_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const JSON_PARSE_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const UNEXPECTED_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const NO_XHR_PROVIDED_ERROR: (extFile: ExtFile) => ExtFile;
diff --git a/src/files-ui/core/upload/index.d.ts b/src/files-ui/core/upload/index.d.ts
deleted file mode 100644
index ef809cc94675df1896ebf712e99f01489deb0837..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/index.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export { uploadExtFile, FuiUpload, uploadFile, uploadFormData, } from "./upload";
-export { ABORTED_ERROR_RESPONSE, JSON_PARSE_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE, } from "./errors.upload";
-export { JsonParseResponse, makeErrorUploadResponse, makeServerResponse, makeSuccessUploadResponse, } from "./response.upload";
-export { default as addExtraData } from "./addExtraData.upload";
-export { default as addHeaders } from "./addheaders.upload";
-export { instantPreparingToUploadOne, preparingToUploadOne, sleepTransition, toUploadableExtFileList, completeUploadResult, sanitizeArrExtFile, unableToUploadResult, unexpectedErrorUploadResult, setNextUploadStatus } from "./utils.upload";
diff --git a/src/files-ui/core/upload/response.upload.d.ts b/src/files-ui/core/upload/response.upload.d.ts
deleted file mode 100644
index 2a24ac4efd652391dc1f2566e14308b808cdd864..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/response.upload.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { ExtFile, ServerResponse } from "../types";
-export declare const makeServerResponse: (success: any, message: string, payload: any) => ServerResponse;
-export declare const JsonParseResponse: (xhr: XMLHttpRequest) => ServerResponse;
-export declare const makeSuccessUploadResponse: (extFile: ExtFile, responseFui: ServerResponse) => ExtFile;
-export declare const makeErrorUploadResponse: (extFile: ExtFile, responseFui: ServerResponse) => ExtFile;
diff --git a/src/files-ui/core/upload/upload.d.ts b/src/files-ui/core/upload/upload.d.ts
deleted file mode 100644
index 783be826478a479f76c48452dee693fa350a81fd..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/upload.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { ExtFile, Method } from "../types";
-import { ServerResponse } from "../types/uploadTypes";
-/**
- * Uploads one formData object to a given endpoint in a promisified way
- * @param xhr XMLHTTPrequest object
- * @param method method for uploading
- * @param endpoint endpoint to upload the file
- * @param data FromData object to perform multipart form data upload
- * @param headers the set of headers
- * @returns a server response that consists on {status, payload, message}
- */
-export declare const uploadFormData: (xhr: XMLHttpRequest, method: Method | undefined, endpoint: string, data: FormData, headers: Record<string, string> | undefined) => Promise<ServerResponse>;
-/**
- *
- * @param file the extended file to be uploaded
- * @param url the endpoint
- * @param method the method for uploading
- * @param headers headers for request
- * @returns
- */
-export declare const uploadExtFile: (extFile: ExtFile, url: string, method?: Method, headers?: Record<string, string>, uploadLabel?: string) => Promise<ExtFile>;
-export declare function uploadFile(file: File, url: string, method?: Method, label?: string, headers?: Record<string, string>): Promise<ServerResponse>;
-/**
- * @deprecated
- * Uploads one formData object to a given endpoint in a promisified way
- * @param xhr XMLHTTPrequest object
- * @param method method for uploading
- * @param endpoint endpoint to upload the file
- * @param data FromData object to perform multipart form data
- * @param headers the set of headers
- * @returns a dui server response that consists on {success, payload, message}
- */
-export declare const FuiUpload: (xhr: XMLHttpRequest, method: Method, endpoint: string, data: FormData, headers: Record<string, string>) => Promise<ServerResponse>;
diff --git a/src/files-ui/core/upload/utils.upload.d.ts b/src/files-ui/core/upload/utils.upload.d.ts
deleted file mode 100644
index 54e00c251c5d54c302d1ae542e06fedcf6a238f9..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/utils.upload.d.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from "../types";
-export declare const unexpectedErrorUploadResult: (extFile: ExtFile) => ExtFile;
-export declare const unableToUploadResult: (extFile: ExtFile) => UploadResponse;
-export declare const completeUploadResult: (extFile: ExtFile, serverResponse: ServerResponse, uploadStatusresult: UPLOADSTATUS) => UploadResponse;
-/**
- * Initializes the xhr attribute for performing uploads
- * @param extFileList the list of extended files
- * @returns the array of extFiles with the xhr attribute initialized
- */
-export declare const toUploadableExtFileList: (extFileList: ExtFile[] | ExtFileInstance[]) => ExtFile[];
-/**
- * Updates the uploadStatus of the given extFile
- * from "preparing" to "uploading"
- * @param extFile the extended file
- * @returns the extended file with uploadStatus updated to "uploading"
- */
-export declare const instantPreparingToUploadOne: (extFile: ExtFileInstance | ExtFile) => ExtFileInstance | ExtFile;
-/**
- *
- * @param extFile the extended file
- * @returns
- */
-export declare const preparingToUploadOne: (extFile: ExtFileInstance | ExtFile) => Promise<ExtFileInstance | ExtFile>;
-/**
- * Sleeps for 1200 miliseconds for showing a better transition
- * on uploading
- * @param time the time to sleep in miliseconds
- * @returns true is everything is ok
- */
-export declare const sleepTransition: (time?: number) => Promise<boolean>;
-/**
- * Removes the deleted files and updates the aborted ones with a message
- * @param arrExtFile incomming arr of extFle instances
- * @returns an array of ExtFle objects
- */
-export declare const sanitizeArrExtFile: (arrExtFile: ExtFileInstance[]) => ExtFile[];
-/**
- *
- * @param extFileInstance
- * @param extFileobj
- */
-export declare const setNextUploadStatus: (extFileInstance: ExtFileInstance, extFileobj: ExtFile) => void;
diff --git a/src/files-ui/core/utils/IdGenerator.d.ts b/src/files-ui/core/utils/IdGenerator.d.ts
deleted file mode 100644
index d1bcc090aac7865f8fe3fee452f1a2f6bf076156..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/IdGenerator.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * An id generator for FileItems
- */
-export declare abstract class FileIdGenerator {
-    static nextId: number;
-    /**
-     * Increases the id counter and returns the next id available.
-     * @returns the next integer id available
-     */
-    static getNextId(): number;
-}
diff --git a/src/files-ui/core/utils/addClassName.d.ts b/src/files-ui/core/utils/addClassName.d.ts
deleted file mode 100644
index c1b5925d6f2684d5786e991e7fa9b0db81d29218..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/addClassName.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * If className is given, adds class name in string format to a base class name
- * @param baseClassName the base class name
- * @param className the class name to be added
- * @returns a new class name obtained by adding the second paramater
- */
-export declare const addClassName: (baseClassName: string, className: string | undefined) => string;
diff --git a/src/files-ui/core/utils/dropzone.utils.d.ts b/src/files-ui/core/utils/dropzone.utils.d.ts
deleted file mode 100644
index c872040334f679011fb0d3700671ba64d3f863c5..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/dropzone.utils.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const isValidateActive: (accept: string | undefined, maxFileSize: number | undefined, maxFiles: number | undefined, validator: Function | undefined) => boolean;
diff --git a/src/files-ui/core/utils/fakeupload.utils.d.ts b/src/files-ui/core/utils/fakeupload.utils.d.ts
deleted file mode 100644
index ea34da16bf6392f6a43ba9736754209cda194866..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/fakeupload.utils.d.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { ExtFile, ExtFileInstance, UploadResponse } from "../types";
-/**
- * Updates a extFile and sets its uploadStatus to "uploading"
- * @param extFile the extended file object
- * @returns the extended file with the uploadStatus attribute modified
- */
-export declare const setPrepToUploading: (extFile: ExtFile) => Promise<ExtFile>;
-/**
- * Updates a extFile and sets its uploadStatus to "success"
- * @param extFile the extended file object
- * @returns the extended file with the uploadStatus attribute modified
- */
-export declare const uploadOne: (extFile: ExtFile) => Promise<ExtFile>;
-/**
- * Awaits the given time before start uploading
- * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs
- * @returns an empty object
- */
-export declare const sleepPreparing: (preparingTime?: number) => Promise<void>;
-/**
- *
- * @param extFileInstance
- * @returns
- */
-export declare const prepToUploadOne: (extFileInstance: ExtFileInstance | ExtFile) => Promise<ExtFileInstance | ExtFile>;
-/**
- *
- * @param extFileInstance
- * @returns
- */
-export declare const uploadOneExtFile: (extFileInstance: ExtFileInstance) => Promise<Object>;
-/**
- *
- * @param extFile the extFile to upload
- * @param DropzoneLocalizer the localization
- * @returns a duiUploadResponse object that describes the result
- */
-export declare const fakeFuiUpload: (extFileInstance: ExtFileInstance, DropzoneLocalizer?: import("../types").LocalLabels) => Promise<ExtFile>;
-/**
- *
- * @param extFile the extFile to upload
- * @param DropzoneLocalizer the localization
- * @returns a duiUploadResponse object that describes the result
- */
-export declare const fakeFuiUploadExtFile: (extFileInstance: ExtFileInstance, DropzoneLocalizer?: import("../types").LocalLabels) => Promise<UploadResponse>;
diff --git a/src/files-ui/core/utils/fileListParser.d.ts b/src/files-ui/core/utils/fileListParser.d.ts
deleted file mode 100644
index 940a12384633537b85755c62af6c351a9758e39c..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/fileListParser.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { ExtFile, ExtFileInstance } from "../types";
-/**
- * Converts the fileList into an array of separated ExtFile objects
- * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)
- * @returns an array of ExtFile objects
- */
-export declare const fileListToExtFileArray: (fileList: FileList) => ExtFile[];
-/**
- * Converts the fileList into an array of separated ExtFile instances
- * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)
- * @returns an array of ExtFile instances
- */
-export declare const fileListToExtFileInstanceArray: (fileList: FileList) => ExtFileInstance[];
diff --git a/src/files-ui/core/utils/fileSizeFormatter.d.ts b/src/files-ui/core/utils/fileSizeFormatter.d.ts
deleted file mode 100644
index a3a53b64bf2f892c030b9ef67021dbcad47e58aa..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/fileSizeFormatter.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * Gives a XX.XX format in Bytes KB, MB, GB or TB
- * @param fileSize file size to give format in Bytes
- */
-export declare const fileSizeFormater: (fileSize?: number | false) => string | undefined;
diff --git a/src/files-ui/core/utils/getExt.d.ts b/src/files-ui/core/utils/getExt.d.ts
deleted file mode 100644
index 110c9f08a48e990d5af7b9088f204810fd1be558..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/getExt.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Looks for the first file extension
- * @param fileName file name
- * @returns the file name extension
- */
-export declare const getExt: (fileName: string) => string;
diff --git a/src/files-ui/core/utils/getLocalFileItemData.d.ts b/src/files-ui/core/utils/getLocalFileItemData.d.ts
deleted file mode 100644
index 6a94345e7e026a6951d350d8e7ef283b751adbf9..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/getLocalFileItemData.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- *
- * @param file
- * @param name
- * @param type
- * @param size
- * @returns the file name, type and size
- */
-export declare const getLocalFileItemData: (file: File | undefined, name: string | undefined, type: string | undefined, size: number | undefined) => [string, string | undefined, number | undefined];
diff --git a/src/files-ui/core/utils/index.d.ts b/src/files-ui/core/utils/index.d.ts
deleted file mode 100644
index c48ce5d2254177ae6deea000ea52e78cd508a578..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/index.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { fileListToExtFileArray, fileListToExtFileInstanceArray } from "./fileListParser";
-import { fileSizeFormater } from "./fileSizeFormatter";
-import { getExt } from "./getExt";
-import { FileIdGenerator } from "./IdGenerator";
-export { FileIdGenerator, fileListToExtFileArray, fileListToExtFileInstanceArray, fileSizeFormater, getExt, };
-export { isValidateActive } from "./dropzone.utils";
-export { shrinkWord } from "./shrinkWord";
-export { fakeFuiUpload, prepToUploadOne, setPrepToUploading, sleepPreparing, uploadOne, uploadOneExtFile } from "./fakeupload.utils";
-export { getRandomInt } from "./randomInt";
-export { cleanInput } from "./input.utils";
-export { addClassName } from "./addClassName";
-export { isUploadAbleExtFile } from "./isUploadAbleExtFile";
-export { getLocalFileItemData } from "./getLocalFileItemData";
diff --git a/src/files-ui/core/utils/input.utils.d.ts b/src/files-ui/core/utils/input.utils.d.ts
deleted file mode 100644
index 658f95c6e32d6068afa014f96206d8d0f42a4db2..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/input.utils.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * Cleans the input.value attribute
- * @param inputElement
- */
-export declare const cleanInput: (inputElement?: HTMLInputElement | null) => void;
diff --git a/src/files-ui/core/utils/isUploadAbleExtFile.d.ts b/src/files-ui/core/utils/isUploadAbleExtFile.d.ts
deleted file mode 100644
index 248c16c3987ca7eeeb2cdb1c7f9e3fd1a790265a..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/isUploadAbleExtFile.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { ExtFile } from "../types";
-export declare const isUploadAbleExtFile: (extFile: ExtFile, validateFilesFlag: boolean) => boolean;
diff --git a/src/files-ui/core/utils/randomInt.d.ts b/src/files-ui/core/utils/randomInt.d.ts
deleted file mode 100644
index 1d459e19b393ba6b027eaf12c79c27a41ed114dd..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/randomInt.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Random integer between min (included) and max (excluded)
- * @param min the min number
- * @param max the max number
- * @returns a random number between min (included) and max (excluded)
- */
-export declare function getRandomInt(min?: number, max?: number): number;
diff --git a/src/files-ui/core/utils/shrinkWord.d.ts b/src/files-ui/core/utils/shrinkWord.d.ts
deleted file mode 100644
index fd5c13e6a043c17edf6bbb7f02e493db2cbb7028..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/shrinkWord.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * The max size of the word in characters
- */
-export declare const DEFAULT_MAX_SIZE_WORD = 30;
-/**
- *
- * @param word the word to be shrinked
- * @returns the shrinked word
- */
-export declare const shrinkWord: (word?: string, card?: boolean) => string;
diff --git a/src/files-ui/core/validation/fakeerros.d.ts b/src/files-ui/core/validation/fakeerros.d.ts
deleted file mode 100644
index 4c6e643c8499fd81c9d911fdb3866ea7267d6047..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/fakeerros.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * list of dumy errors in english
- */
-export declare const listOfErrors: string[];
diff --git a/src/files-ui/core/validation/fileValidator.d.ts b/src/files-ui/core/validation/fileValidator.d.ts
deleted file mode 100644
index ca0b54e13dadd8304b585ddb000b5fbe8955b17d..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/fileValidator.d.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { ExtFile, Localization, LocalLabels } from "../types";
-import { ValidateFileResponse, FileValidatorProps } from "../types/validation";
-/**
- *
- * @param preValidatedFiles FileList
- * @param remainingValids The number of remaining valid files
- * @param localValidator
- * @param validator
- * @param maxFiles
- * @param localization
- * @returns
- */
-export declare const fileListvalidator: (preValidatedFiles: FileList, remainingValids: number, localValidator: FileValidatorProps, validator?: (f: File) => ValidateFileResponse, maxFiles?: number, localization?: Localization) => ExtFile[];
-/**
- * For each ExtFile sets the valid prop of ExtFile to "true" or "false"
- * depending on the result of the individual validation.
- * It also add the list of errors.
- * @param extFileList
- * @param remainingValids
- * @param localValidatorProps
- * @param validator
- * @param maxFiles
- * @param localization
- * @returns a new ExtFile list with each item validated
- */
-export declare const validateExtFileList: (extFileList: ExtFile[], remainingValids: number, localValidatorProps: FileValidatorProps, validator?: (f: File) => ValidateFileResponse, maxFiles?: number, localization?: Localization) => ExtFile[];
-/**
- *
- * @param extFile
- * @param validator
- * @param validatorProps
- * @param localErrors
- * @returns
- */
-export declare const validateExtFile: (extFile: ExtFile, validator: (f: File) => ValidateFileResponse, validatorProps: FileValidatorProps, localErrors: LocalLabels) => ExtFile;
-/**
- * Function that validate whether a file is valid, or not
- * according to the Filevalidator properties
- * @param file a File object to be evaluated
- * @param validatorProps the validator object
- * @returns a FileValidated object
- */
-export declare const validateFile: (file: File, validator: (f: File) => ValidateFileResponse, validatorProps: FileValidatorProps, localErrors: LocalLabels) => ExtFile;
diff --git a/src/files-ui/core/validation/index.d.ts b/src/files-ui/core/validation/index.d.ts
deleted file mode 100644
index 60029ff84608d611618d0b6c3bf17c737457e596..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export { validateExtFileList, fileListvalidator, validateExtFile, validateFile } from "./fileValidator";
-export { separateAccept } from "./separateAccept";
-export { validateAccept } from "./validateAccept";
-export { getRandomUploadStatus } from "./randomStatus";
-export { listOfErrors } from "./fakeerros";
diff --git a/src/files-ui/core/validation/randomStatus.d.ts b/src/files-ui/core/validation/randomStatus.d.ts
deleted file mode 100644
index 9e7e4a0fce6d8eed946cf370910bff0dff63d1d7..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/randomStatus.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { UPLOADSTATUS } from "../types";
-/**
- * Generates a random number betwen 0 and 3
- * where
- * 0 => error
- * 1 => uploading
- * 2 => success
- * 3 => undefined
- * @returns a random upload status or undefined
- */
-export declare const getRandomUploadStatus: () => UPLOADSTATUS | undefined;
diff --git a/src/files-ui/core/validation/separateAccept.d.ts b/src/files-ui/core/validation/separateAccept.d.ts
deleted file mode 100644
index fc7c610b36186b2ebaf88bbd46780984ef02f862..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/separateAccept.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Separate the accept string array into an array of strings separated by commas
- * @param accept the string accept array
- * @returns an array of strings in wich every item
- */
-export declare const separateAccept: (accept: string | undefined) => string[];
diff --git a/src/files-ui/core/validation/validateAccept.d.ts b/src/files-ui/core/validation/validateAccept.d.ts
deleted file mode 100644
index 90f11d61ac022c2fa4af79c212fb343dc59020b8..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/validateAccept.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Checks whether a file is valid or not given an array of file extentions and mime types
- * e.g. accept =  [".doc", ".docx", ".xml", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"]
- * @param accept the array of strings accept items
- * @param file a File object to be evaluated
- * @returns true if the mime type file is included in the accept param
- */
-export declare const validateAccept: (accept: string[], file: File) => boolean;
diff --git a/src/globals/contexts/UserContext.ts b/src/globals/contexts/UserContext.ts
deleted file mode 100644
index 5a10fd7aa613248e538f571ce0fba1ac1e1643df..0000000000000000000000000000000000000000
--- a/src/globals/contexts/UserContext.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import * as React from "react";
-import { FuiAction } from "../types/FuiAction";
-import { UserFilesUi } from "../types/UserFilesUi";
-
-export const UserContext: React.Context<[UserFilesUi, React.Dispatch<FuiAction> | undefined]> =
-    React.createContext([{} as UserFilesUi, undefined as React.Dispatch<FuiAction> | undefined]);
-
diff --git a/src/globals/initialValues/userInitialValue.ts b/src/globals/initialValues/userInitialValue.ts
deleted file mode 100644
index 9e15e380da56fe636f94ead879c7807661a5c844..0000000000000000000000000000000000000000
--- a/src/globals/initialValues/userInitialValue.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { UserFilesUi } from "../types/UserFilesUi";
-
-export const initialUserValue:UserFilesUi={
-    id:undefined,
-    darkMode:false,
-}
diff --git a/src/globals/providers/UserProvider.tsx b/src/globals/providers/UserProvider.tsx
deleted file mode 100644
index 7b9c8f61e868f3972b61140f797040b66fc2e75c..0000000000000000000000000000000000000000
--- a/src/globals/providers/UserProvider.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { UserContext } from "../contexts/UserContext";
-import * as React from "react";
-import { UserFilesUi } from "../types/UserFilesUi";
-import { userInitializer, userReducer } from "../reducers/userReducer";
-import { ThemeProvider } from "@emotion/react";
-import { MUItheme } from "../../theme/mainTheme";
-import { FuiAction } from "../types/FuiAction";
-import { FilesUiProvider } from "../../files-ui";
-import gradle from "../../static/new-icons/gradle.jpg";
-export const UserProvider = (props: {
-  children: React.ReactNode;
-  valorInicial: UserFilesUi;
-}) => {
-  const { children, valorInicial } = props;
-
-  const [usuario, dispatch]: [UserFilesUi, React.Dispatch<FuiAction>] =
-    React.useReducer(userReducer, valorInicial, userInitializer);
-
-  React.useEffect(() => {
-    localStorage.setItem("filesuiuser", JSON.stringify(usuario));
-    console.log("filesuiuser", usuario);
-  }, [usuario]);
-
-  return (
-    <UserContext.Provider value={[usuario, dispatch]}>
-      <ThemeProvider theme={MUItheme(usuario.darkMode ? "dark" : "light")}>
-        <FilesUiProvider
-          config={{
-            darkMode: usuario.darkMode,
-            /* icons: {
-              png: gradle,
-              mp4: "/serverside/springbootjavalogo.png",
-              pdf: "https://www.iconpacks.net/icons/2/free-pdf-download-icon-2617-thumb.png",
-            }, */
-          }}
-        >
-          {children}
-        </FilesUiProvider>
-      </ThemeProvider>
-    </UserContext.Provider>
-  );
-};
diff --git a/src/globals/reducers/userReducer.ts b/src/globals/reducers/userReducer.ts
deleted file mode 100644
index edf3f35833a326d8180a774f1505293e3d59c437..0000000000000000000000000000000000000000
--- a/src/globals/reducers/userReducer.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-
-import { FuiAction } from "../types/FuiAction";
-import { UserFilesUi } from "../types/UserFilesUi";
-
-
-export const userReducer = (state: UserFilesUi, action: FuiAction): UserFilesUi => {
-  const { type = "", payload = {} } = action;
-  console.log("userReducer", state, action);
-  switch (type) {
-    case "INICIARSESION":
-      return { ...state, ...payload };
-    case "TURNONLIGHT":
-      return { ...state, darkMode: false };
-    case "TURNOFFLIGHT":
-      return { ...state, darkMode: true };
-    default:
-      return state;
-  }
-};
-
-export const userInitializer = () => {
-  const usuarioEncontrado = localStorage.getItem("filesuiuser");
-
-  if (usuarioEncontrado !== "udefined" && usuarioEncontrado !== null) {
-    return JSON.parse(usuarioEncontrado);
-  } else {
-    return {};
-  }
-};
diff --git a/src/globals/types/FilesUIAction.ts b/src/globals/types/FilesUIAction.ts
deleted file mode 100644
index 6ac078bbd147eeb6a25a7560e3b6a0991288c9d9..0000000000000000000000000000000000000000
--- a/src/globals/types/FilesUIAction.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { UserFilesUi } from "./UserFilesUi";
-
-export type FilesUIAction = {
-    type?: string; 
-    payload?: UserFilesUi;
-}
\ No newline at end of file
diff --git a/src/globals/types/FuiAction.ts b/src/globals/types/FuiAction.ts
deleted file mode 100644
index f8973ad6492eb7115e8c9e2b01f8da5f4759f02b..0000000000000000000000000000000000000000
--- a/src/globals/types/FuiAction.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { UserFilesUi } from "./UserFilesUi";
-
-export type FuiAction = {
-    type?: string; 
-    payload?: UserFilesUi;
-}
\ No newline at end of file
diff --git a/src/globals/types/UserFilesUi.ts b/src/globals/types/UserFilesUi.ts
deleted file mode 100644
index 98523707d081e934fb54a08ad09ca6b235e47be4..0000000000000000000000000000000000000000
--- a/src/globals/types/UserFilesUi.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export type UserFilesUi={
-    id?:string;
-    darkMode?:boolean,
-}
\ No newline at end of file
diff --git a/src/files-ui/hooks/getProgress.ts b/src/hooks/getProgress.ts
similarity index 100%
rename from src/files-ui/hooks/getProgress.ts
rename to src/hooks/getProgress.ts
diff --git a/src/files-ui/hooks/index.ts b/src/hooks/index.ts
similarity index 100%
rename from src/files-ui/hooks/index.ts
rename to src/hooks/index.ts
diff --git a/src/files-ui/hooks/useDropLayerClassName.ts b/src/hooks/useDropLayerClassName.ts
similarity index 100%
rename from src/files-ui/hooks/useDropLayerClassName.ts
rename to src/hooks/useDropLayerClassName.ts
diff --git a/src/files-ui/hooks/useDropzoneClassName.ts b/src/hooks/useDropzoneClassName.ts
similarity index 100%
rename from src/files-ui/hooks/useDropzoneClassName.ts
rename to src/hooks/useDropzoneClassName.ts
diff --git a/src/files-ui/hooks/useDropzoneFileUpdater.ts b/src/hooks/useDropzoneFileUpdater.ts
similarity index 100%
rename from src/files-ui/hooks/useDropzoneFileUpdater.ts
rename to src/hooks/useDropzoneFileUpdater.ts
diff --git a/src/files-ui/hooks/useDropzoneValidation.ts b/src/hooks/useDropzoneValidation.ts
similarity index 100%
rename from src/files-ui/hooks/useDropzoneValidation.ts
rename to src/hooks/useDropzoneValidation.ts
diff --git a/src/files-ui/hooks/useFakeProgress.ts b/src/hooks/useFakeProgress.ts
similarity index 100%
rename from src/files-ui/hooks/useFakeProgress.ts
rename to src/hooks/useFakeProgress.ts
diff --git a/src/files-ui/hooks/useFileMosaicInitializer.ts b/src/hooks/useFileMosaicInitializer.ts
similarity index 100%
rename from src/files-ui/hooks/useFileMosaicInitializer.ts
rename to src/hooks/useFileMosaicInitializer.ts
diff --git a/src/files-ui/hooks/useIsUploading.ts b/src/hooks/useIsUploading.ts
similarity index 100%
rename from src/files-ui/hooks/useIsUploading.ts
rename to src/hooks/useIsUploading.ts
diff --git a/src/hooks/useNavigateGoBack.tsx b/src/hooks/useNavigateGoBack.tsx
deleted file mode 100644
index a0fdee690cd0a385e4131e698bde16d1c962461e..0000000000000000000000000000000000000000
--- a/src/hooks/useNavigateGoBack.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { useNavigate } from "react-router-dom";
-
-/** Navigate to the top of a page so that the scroll position 
- * isn't persisted between pages. Use this instead of React Dom's 
- * build-in @see {@link useNavigate}. */
-export const useNavigateGoBack = () => {
-    const navigate = useNavigate();
-
-    const navigateAndReset = () => {
-        navigate(-1);
-        window.scrollTo(0, 0);
-    };
-
-    return navigateAndReset;
-};
\ No newline at end of file
diff --git a/src/hooks/useNavigateToTop.ts b/src/hooks/useNavigateToTop.ts
deleted file mode 100644
index d2f4e3af76f357090f648a8db8e266416c2079ae..0000000000000000000000000000000000000000
--- a/src/hooks/useNavigateToTop.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { useNavigate } from "react-router-dom";
-
-/** Navigate to the top of a page so that the scroll position 
- * isn't persisted between pages. Use this instead of React Dom's 
- * build-in @see {@link useNavigate}. */
-export const useNavigateToTop = () => {
-    const navigate = useNavigate();
-
-    const navigateAndReset = (to: string) => {
-        navigate(to
-            //, { replace: true }
-        );
-        window.scrollTo(0, 0);
-    };
-
-    return navigateAndReset;
-};
\ No newline at end of file
diff --git a/src/files-ui/hooks/useNumberOfValidFiles.ts b/src/hooks/useNumberOfValidFiles.ts
similarity index 100%
rename from src/files-ui/hooks/useNumberOfValidFiles.ts
rename to src/hooks/useNumberOfValidFiles.ts
diff --git a/src/files-ui/hooks/useProgress.ts b/src/hooks/useProgress.ts
similarity index 100%
rename from src/files-ui/hooks/useProgress.ts
rename to src/hooks/useProgress.ts
diff --git a/src/files-ui/icons/Cancel/Cancel.tsx b/src/icons/Cancel/Cancel.tsx
similarity index 100%
rename from src/files-ui/icons/Cancel/Cancel.tsx
rename to src/icons/Cancel/Cancel.tsx
diff --git a/src/files-ui/icons/Cancel/CancelProps.ts b/src/icons/Cancel/CancelProps.ts
similarity index 100%
rename from src/files-ui/icons/Cancel/CancelProps.ts
rename to src/icons/Cancel/CancelProps.ts
diff --git a/src/files-ui/icons/CheckCircle/CheckCircle.tsx b/src/icons/CheckCircle/CheckCircle.tsx
similarity index 100%
rename from src/files-ui/icons/CheckCircle/CheckCircle.tsx
rename to src/icons/CheckCircle/CheckCircle.tsx
diff --git a/src/files-ui/icons/CheckCircle/CheckCircleProps.ts b/src/icons/CheckCircle/CheckCircleProps.ts
similarity index 100%
rename from src/files-ui/icons/CheckCircle/CheckCircleProps.ts
rename to src/icons/CheckCircle/CheckCircleProps.ts
diff --git a/src/files-ui/icons/Clean/Clean.tsx b/src/icons/Clean/Clean.tsx
similarity index 100%
rename from src/files-ui/icons/Clean/Clean.tsx
rename to src/icons/Clean/Clean.tsx
diff --git a/src/files-ui/icons/Clean/CleanProps.ts b/src/icons/Clean/CleanProps.ts
similarity index 100%
rename from src/files-ui/icons/Clean/CleanProps.ts
rename to src/icons/Clean/CleanProps.ts
diff --git a/src/files-ui/icons/Clear/Clear.tsx b/src/icons/Clear/Clear.tsx
similarity index 100%
rename from src/files-ui/icons/Clear/Clear.tsx
rename to src/icons/Clear/Clear.tsx
diff --git a/src/files-ui/icons/Clear/ClearProps.tsx b/src/icons/Clear/ClearProps.tsx
similarity index 100%
rename from src/files-ui/icons/Clear/ClearProps.tsx
rename to src/icons/Clear/ClearProps.tsx
diff --git a/src/files-ui/icons/Close/Close.tsx b/src/icons/Close/Close.tsx
similarity index 100%
rename from src/files-ui/icons/Close/Close.tsx
rename to src/icons/Close/Close.tsx
diff --git a/src/files-ui/icons/Close/CloseProps.ts b/src/icons/Close/CloseProps.ts
similarity index 100%
rename from src/files-ui/icons/Close/CloseProps.ts
rename to src/icons/Close/CloseProps.ts
diff --git a/src/files-ui/icons/CloudDone/CloudDone.tsx b/src/icons/CloudDone/CloudDone.tsx
similarity index 100%
rename from src/files-ui/icons/CloudDone/CloudDone.tsx
rename to src/icons/CloudDone/CloudDone.tsx
diff --git a/src/files-ui/icons/CloudDone/CloudDoneProps.ts b/src/icons/CloudDone/CloudDoneProps.ts
similarity index 100%
rename from src/files-ui/icons/CloudDone/CloudDoneProps.ts
rename to src/icons/CloudDone/CloudDoneProps.ts
diff --git a/src/files-ui/icons/DoDisturb/DoDisturb.tsx b/src/icons/DoDisturb/DoDisturb.tsx
similarity index 100%
rename from src/files-ui/icons/DoDisturb/DoDisturb.tsx
rename to src/icons/DoDisturb/DoDisturb.tsx
diff --git a/src/files-ui/icons/DoDisturb/DoDisturbProps.ts b/src/icons/DoDisturb/DoDisturbProps.ts
similarity index 100%
rename from src/files-ui/icons/DoDisturb/DoDisturbProps.ts
rename to src/icons/DoDisturb/DoDisturbProps.ts
diff --git a/src/files-ui/icons/DownloadFile/DownloadFile.tsx b/src/icons/DownloadFile/DownloadFile.tsx
similarity index 100%
rename from src/files-ui/icons/DownloadFile/DownloadFile.tsx
rename to src/icons/DownloadFile/DownloadFile.tsx
diff --git a/src/files-ui/icons/DownloadFile/DownloadFileProps.ts b/src/icons/DownloadFile/DownloadFileProps.ts
similarity index 100%
rename from src/files-ui/icons/DownloadFile/DownloadFileProps.ts
rename to src/icons/DownloadFile/DownloadFileProps.ts
diff --git a/src/files-ui/icons/IconProps/IconProps.ts b/src/icons/IconProps/IconProps.ts
similarity index 100%
rename from src/files-ui/icons/IconProps/IconProps.ts
rename to src/icons/IconProps/IconProps.ts
diff --git a/src/files-ui/icons/IconStyles.scss b/src/icons/IconStyles.scss
similarity index 100%
rename from src/files-ui/icons/IconStyles.scss
rename to src/icons/IconStyles.scss
diff --git a/src/files-ui/icons/Info/Info.tsx b/src/icons/Info/Info.tsx
similarity index 100%
rename from src/files-ui/icons/Info/Info.tsx
rename to src/icons/Info/Info.tsx
diff --git a/src/files-ui/icons/Info/InfoProps.ts b/src/icons/Info/InfoProps.ts
similarity index 100%
rename from src/files-ui/icons/Info/InfoProps.ts
rename to src/icons/Info/InfoProps.ts
diff --git a/src/files-ui/icons/InfoBlack/InfoBlack.tsx b/src/icons/InfoBlack/InfoBlack.tsx
similarity index 100%
rename from src/files-ui/icons/InfoBlack/InfoBlack.tsx
rename to src/icons/InfoBlack/InfoBlack.tsx
diff --git a/src/files-ui/icons/InfoBlack/InfoBlackProps.ts b/src/icons/InfoBlack/InfoBlackProps.ts
similarity index 100%
rename from src/files-ui/icons/InfoBlack/InfoBlackProps.ts
rename to src/icons/InfoBlack/InfoBlackProps.ts
diff --git a/src/files-ui/icons/InfoDisney/InfoDisney.tsx b/src/icons/InfoDisney/InfoDisney.tsx
similarity index 100%
rename from src/files-ui/icons/InfoDisney/InfoDisney.tsx
rename to src/icons/InfoDisney/InfoDisney.tsx
diff --git a/src/files-ui/icons/InfoDisney/InfoDisneyProps.ts b/src/icons/InfoDisney/InfoDisneyProps.ts
similarity index 100%
rename from src/files-ui/icons/InfoDisney/InfoDisneyProps.ts
rename to src/icons/InfoDisney/InfoDisneyProps.ts
diff --git a/src/files-ui/icons/Person/Person.tsx b/src/icons/Person/Person.tsx
similarity index 100%
rename from src/files-ui/icons/Person/Person.tsx
rename to src/icons/Person/Person.tsx
diff --git a/src/files-ui/icons/Person/PersonProps.tsx b/src/icons/Person/PersonProps.tsx
similarity index 100%
rename from src/files-ui/icons/Person/PersonProps.tsx
rename to src/icons/Person/PersonProps.tsx
diff --git a/src/files-ui/icons/PhotoCamera/PhotoCamera.tsx b/src/icons/PhotoCamera/PhotoCamera.tsx
similarity index 100%
rename from src/files-ui/icons/PhotoCamera/PhotoCamera.tsx
rename to src/icons/PhotoCamera/PhotoCamera.tsx
diff --git a/src/files-ui/icons/PhotoCamera/PhotoCameraProps.ts b/src/icons/PhotoCamera/PhotoCameraProps.ts
similarity index 100%
rename from src/files-ui/icons/PhotoCamera/PhotoCameraProps.ts
rename to src/icons/PhotoCamera/PhotoCameraProps.ts
diff --git a/src/files-ui/icons/Play/PlayIcon.tsx b/src/icons/Play/PlayIcon.tsx
similarity index 100%
rename from src/files-ui/icons/Play/PlayIcon.tsx
rename to src/icons/Play/PlayIcon.tsx
diff --git a/src/files-ui/icons/Play/PlayIconProps.ts b/src/icons/Play/PlayIconProps.ts
similarity index 100%
rename from src/files-ui/icons/Play/PlayIconProps.ts
rename to src/icons/Play/PlayIconProps.ts
diff --git a/src/files-ui/icons/Remove/Remove.tsx b/src/icons/Remove/Remove.tsx
similarity index 100%
rename from src/files-ui/icons/Remove/Remove.tsx
rename to src/icons/Remove/Remove.tsx
diff --git a/src/files-ui/icons/Remove/RemoveOutline.tsx b/src/icons/Remove/RemoveOutline.tsx
similarity index 100%
rename from src/files-ui/icons/Remove/RemoveOutline.tsx
rename to src/icons/Remove/RemoveOutline.tsx
diff --git a/src/files-ui/icons/Remove/RemoveProps.ts b/src/icons/Remove/RemoveProps.ts
similarity index 100%
rename from src/files-ui/icons/Remove/RemoveProps.ts
rename to src/icons/Remove/RemoveProps.ts
diff --git a/src/files-ui/icons/Upload/Upload.tsx b/src/icons/Upload/Upload.tsx
similarity index 100%
rename from src/files-ui/icons/Upload/Upload.tsx
rename to src/icons/Upload/Upload.tsx
diff --git a/src/files-ui/icons/Upload/UploadProps.ts b/src/icons/Upload/UploadProps.ts
similarity index 100%
rename from src/files-ui/icons/Upload/UploadProps.ts
rename to src/icons/Upload/UploadProps.ts
diff --git a/src/files-ui/icons/UploadDone/UploadDone.tsx b/src/icons/UploadDone/UploadDone.tsx
similarity index 100%
rename from src/files-ui/icons/UploadDone/UploadDone.tsx
rename to src/icons/UploadDone/UploadDone.tsx
diff --git a/src/files-ui/icons/UploadDone/UploadDoneProps.ts b/src/icons/UploadDone/UploadDoneProps.ts
similarity index 100%
rename from src/files-ui/icons/UploadDone/UploadDoneProps.ts
rename to src/icons/UploadDone/UploadDoneProps.ts
diff --git a/src/files-ui/icons/UploadError/UploadError.tsx b/src/icons/UploadError/UploadError.tsx
similarity index 100%
rename from src/files-ui/icons/UploadError/UploadError.tsx
rename to src/icons/UploadError/UploadError.tsx
diff --git a/src/files-ui/icons/UploadError/UploadErrorProps.ts b/src/icons/UploadError/UploadErrorProps.ts
similarity index 100%
rename from src/files-ui/icons/UploadError/UploadErrorProps.ts
rename to src/icons/UploadError/UploadErrorProps.ts
diff --git a/src/files-ui/icons/UploadingProcess/UploadingProcess.scss b/src/icons/UploadingProcess/UploadingProcess.scss
similarity index 100%
rename from src/files-ui/icons/UploadingProcess/UploadingProcess.scss
rename to src/icons/UploadingProcess/UploadingProcess.scss
diff --git a/src/files-ui/icons/UploadingProcess/UploadingProcess.tsx b/src/icons/UploadingProcess/UploadingProcess.tsx
similarity index 100%
rename from src/files-ui/icons/UploadingProcess/UploadingProcess.tsx
rename to src/icons/UploadingProcess/UploadingProcess.tsx
diff --git a/src/files-ui/icons/UploadingProcess/UploadingProcessProps.ts b/src/icons/UploadingProcess/UploadingProcessProps.ts
similarity index 100%
rename from src/files-ui/icons/UploadingProcess/UploadingProcessProps.ts
rename to src/icons/UploadingProcess/UploadingProcessProps.ts
diff --git a/src/files-ui/icons/ViewGrid/ViewGrid.tsx b/src/icons/ViewGrid/ViewGrid.tsx
similarity index 100%
rename from src/files-ui/icons/ViewGrid/ViewGrid.tsx
rename to src/icons/ViewGrid/ViewGrid.tsx
diff --git a/src/files-ui/icons/ViewGrid/ViewGridProps.ts b/src/icons/ViewGrid/ViewGridProps.ts
similarity index 100%
rename from src/files-ui/icons/ViewGrid/ViewGridProps.ts
rename to src/icons/ViewGrid/ViewGridProps.ts
diff --git a/src/files-ui/icons/ViewList/ViewList.tsx b/src/icons/ViewList/ViewList.tsx
similarity index 100%
rename from src/files-ui/icons/ViewList/ViewList.tsx
rename to src/icons/ViewList/ViewList.tsx
diff --git a/src/files-ui/icons/ViewList/ViewListProps.ts b/src/icons/ViewList/ViewListProps.ts
similarity index 100%
rename from src/files-ui/icons/ViewList/ViewListProps.ts
rename to src/icons/ViewList/ViewListProps.ts
diff --git a/src/files-ui/icons/Visibility/Visibility.tsx b/src/icons/Visibility/Visibility.tsx
similarity index 100%
rename from src/files-ui/icons/Visibility/Visibility.tsx
rename to src/icons/Visibility/Visibility.tsx
diff --git a/src/files-ui/icons/Visibility/VisibilityProps.ts b/src/icons/Visibility/VisibilityProps.ts
similarity index 100%
rename from src/files-ui/icons/Visibility/VisibilityProps.ts
rename to src/icons/Visibility/VisibilityProps.ts
diff --git a/src/files-ui/icons/index.ts b/src/icons/index.ts
similarity index 100%
rename from src/files-ui/icons/index.ts
rename to src/icons/index.ts
diff --git a/src/files-ui/icons/utils/utils.ts b/src/icons/utils/utils.ts
similarity index 100%
rename from src/files-ui/icons/utils/utils.ts
rename to src/icons/utils/utils.ts
diff --git a/src/index.css b/src/index.css
deleted file mode 100644
index 0c7087f9e0f8d669b0967e33b449d123267eb060..0000000000000000000000000000000000000000
--- a/src/index.css
+++ /dev/null
@@ -1,21 +0,0 @@
-body {
-  margin: 0;
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
-    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
-    sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-code {
-  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
-    monospace;
-}
-
-a {
-  color: rgb(0, 121, 244);
-}
-
-section {
-  scroll-margin-top: 64px;
-}
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
deleted file mode 100644
index c1c6265b9698acde1b59ba29ce83040ac5a8f533..0000000000000000000000000000000000000000
--- a/src/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import * as React from "react";
-import ReactDOM from "react-dom/client";
-import "./index.css";
-import reportWebVitals from "./reportWebVitals";
-//import MainPage from "./pages/MainPage";
-/* import { ThemeProvider } from "@mui/material/styles";
-import { MUItheme } from "./theme/mainTheme"; */
-
-import MainRouter from "./routes/MainRouter";
-import { UserProvider } from "./globals/providers/UserProvider";
-import { initialUserValue } from "./globals/initialValues/userInitialValue";
-
-const root = ReactDOM.createRoot(document.getElementById("root"));
-
-root.render(
-  <UserProvider valorInicial={initialUserValue}>
-    <MainRouter />
-  </UserProvider>
-);
-
-// If you want to start measuring performance in your app, pass a function
-// to log results (for example: reportWebVitals(console.log))
-// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
-reportWebVitals();
diff --git a/src/files-ui/index.ts b/src/index.ts
similarity index 100%
rename from src/files-ui/index.ts
rename to src/index.ts
diff --git a/src/files-ui/loader/BasePreparingLoader/BasePreparingLoader.tsx b/src/loader/BasePreparingLoader/BasePreparingLoader.tsx
similarity index 100%
rename from src/files-ui/loader/BasePreparingLoader/BasePreparingLoader.tsx
rename to src/loader/BasePreparingLoader/BasePreparingLoader.tsx
diff --git a/src/files-ui/loader/BasePreparingLoader/BasePreparingLoaderProps.ts b/src/loader/BasePreparingLoader/BasePreparingLoaderProps.ts
similarity index 100%
rename from src/files-ui/loader/BasePreparingLoader/BasePreparingLoaderProps.ts
rename to src/loader/BasePreparingLoader/BasePreparingLoaderProps.ts
diff --git a/src/files-ui/loader/DefaultLoader/DefaultLoader.scss b/src/loader/DefaultLoader/DefaultLoader.scss
similarity index 100%
rename from src/files-ui/loader/DefaultLoader/DefaultLoader.scss
rename to src/loader/DefaultLoader/DefaultLoader.scss
diff --git a/src/files-ui/loader/DefaultLoader/DefaultLoader.tsx b/src/loader/DefaultLoader/DefaultLoader.tsx
similarity index 100%
rename from src/files-ui/loader/DefaultLoader/DefaultLoader.tsx
rename to src/loader/DefaultLoader/DefaultLoader.tsx
diff --git a/src/files-ui/loader/DefaultLoader/loader.tsx b/src/loader/DefaultLoader/loader.tsx
similarity index 100%
rename from src/files-ui/loader/DefaultLoader/loader.tsx
rename to src/loader/DefaultLoader/loader.tsx
diff --git a/src/files-ui/loader/DynamicLoader/DynamicLoader.scss b/src/loader/DynamicLoader/DynamicLoader.scss
similarity index 100%
rename from src/files-ui/loader/DynamicLoader/DynamicLoader.scss
rename to src/loader/DynamicLoader/DynamicLoader.scss
diff --git a/src/files-ui/loader/DynamicLoader/DynamicLoader.tsx b/src/loader/DynamicLoader/DynamicLoader.tsx
similarity index 100%
rename from src/files-ui/loader/DynamicLoader/DynamicLoader.tsx
rename to src/loader/DynamicLoader/DynamicLoader.tsx
diff --git a/src/files-ui/loader/DynamicLoader/DynamicLoaderProps.ts b/src/loader/DynamicLoader/DynamicLoaderProps.ts
similarity index 100%
rename from src/files-ui/loader/DynamicLoader/DynamicLoaderProps.ts
rename to src/loader/DynamicLoader/DynamicLoaderProps.ts
diff --git a/src/files-ui/loader/InfiniteLoader/InfiniteLoader.tsx b/src/loader/InfiniteLoader/InfiniteLoader.tsx
similarity index 100%
rename from src/files-ui/loader/InfiniteLoader/InfiniteLoader.tsx
rename to src/loader/InfiniteLoader/InfiniteLoader.tsx
diff --git a/src/files-ui/loader/InfiniteLoader/InfiniteLoaderProps.ts b/src/loader/InfiniteLoader/InfiniteLoaderProps.ts
similarity index 100%
rename from src/files-ui/loader/InfiniteLoader/InfiniteLoaderProps.ts
rename to src/loader/InfiniteLoader/InfiniteLoaderProps.ts
diff --git a/src/files-ui/loader/LoaderContainer/LoaderContainer.scss b/src/loader/LoaderContainer/LoaderContainer.scss
similarity index 100%
rename from src/files-ui/loader/LoaderContainer/LoaderContainer.scss
rename to src/loader/LoaderContainer/LoaderContainer.scss
diff --git a/src/files-ui/loader/LoaderContainer/LoaderContainer.tsx b/src/loader/LoaderContainer/LoaderContainer.tsx
similarity index 100%
rename from src/files-ui/loader/LoaderContainer/LoaderContainer.tsx
rename to src/loader/LoaderContainer/LoaderContainer.tsx
diff --git a/src/files-ui/loader/LoaderContainer/LoaderContainerProps.ts b/src/loader/LoaderContainer/LoaderContainerProps.ts
similarity index 100%
rename from src/files-ui/loader/LoaderContainer/LoaderContainerProps.ts
rename to src/loader/LoaderContainer/LoaderContainerProps.ts
diff --git a/src/files-ui/loader/LoaderProps.ts b/src/loader/LoaderProps.ts
similarity index 100%
rename from src/files-ui/loader/LoaderProps.ts
rename to src/loader/LoaderProps.ts
diff --git a/src/files-ui/loader/index.ts b/src/loader/index.ts
similarity index 100%
rename from src/files-ui/loader/index.ts
rename to src/loader/index.ts
diff --git a/src/logo.svg b/src/logo.svg
deleted file mode 100644
index 9dfc1c058cebbef8b891c5062be6f31033d7d186..0000000000000000000000000000000000000000
--- a/src/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
\ No newline at end of file
diff --git a/src/menu/listOptions.js b/src/menu/listOptions.js
deleted file mode 100644
index 666d5fc6564a4231243926a704fd727f5a84c225..0000000000000000000000000000000000000000
--- a/src/menu/listOptions.js
+++ /dev/null
@@ -1,34 +0,0 @@
-export const listOptionsSideBar=[
-    {
-        label:"Getting started",
-        icon:undefined,
-        onClick:undefined
-    },
-    {
-        label:"Components",
-        icon:undefined,
-        onClick:undefined
-    },
-    {
-        label:"Documentation",
-        icon:undefined,
-        onClick:undefined,
-        subMenu:[
-            {
-                label:"Dropzone",
-                icon:undefined,
-                onClick:undefined
-            },
-            {
-                label:"FileMosaic",
-                icon:undefined,
-                onClick:undefined
-            },
-            {
-                label:"Dropzone",
-                icon:undefined,
-                onClick:undefined
-            },
-        ]
-    },
-];
\ No newline at end of file
diff --git a/src/files-ui/overridable/OverridableComponentsProps.ts b/src/overridable/OverridableComponentsProps.ts
similarity index 100%
rename from src/files-ui/overridable/OverridableComponentsProps.ts
rename to src/overridable/OverridableComponentsProps.ts
diff --git a/src/files-ui/overridable/index.ts b/src/overridable/index.ts
similarity index 100%
rename from src/files-ui/overridable/index.ts
rename to src/overridable/index.ts
diff --git a/src/files-ui/overridable/mergeProps.ts b/src/overridable/mergeProps.ts
similarity index 100%
rename from src/files-ui/overridable/mergeProps.ts
rename to src/overridable/mergeProps.ts
diff --git a/src/pages/FileCardMock.tsx b/src/pages/FileCardMock.tsx
deleted file mode 100644
index 75299f2390097f48a701c9a16b2ae4017f3fb6fa..0000000000000000000000000000000000000000
--- a/src/pages/FileCardMock.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import * as React from "react";
-import { FileCard, ExtFile } from "../files-ui";
-const baseFiles: ExtFile[] = [
-  {
-    id: Math.random(),
-    name: "A very very long title for files-ui.jsx",
-    type: "text/plain",
-    size: 280000,
-    valid: true,
-  },
-  {
-    id: Math.random(),
-    name: "A very very long title for files-ui.png",
-    type: "image/png",
-    size: 280000,
-    valid: true,
-    uploadStatus: "uploading",
-    imageUrl:
-      "https://super-ficcion.com/wp-content/uploads/2022/10/como-podria-regresar-iron-man-1-780x470.webp",
-  },
-];
-const FileCardMock = ({ darkMode = false, elevation = 2 }) => {
-  const [files, setFiles] = React.useState(baseFiles);
-  const removeFile = (id: string | number | undefined) => {
-    setFiles((files) => files.filter((f) => f.id !== id));
-  };
-  const handleSee = () => {};
-  return (
-    <>
-      {files.map((file, index) => (
-        <FileCard
-          key={file.id}
-          {...file}
-          preview
-          onDelete={removeFile}
-          onSee={handleSee}
-          info
-          alwaysActive
-          //hd
-          elevation={2}
-          darkMode={darkMode}
-          onCancel={() => {}}
-          progress={25}
-        />
-      ))}
-    </>
-  );
-};
-export default FileCardMock;
diff --git a/src/pages/FileItemMock.tsx b/src/pages/FileItemMock.tsx
deleted file mode 100644
index b66ba990a2a57f5b19cd30cc3fd22b2fd4fde0fe..0000000000000000000000000000000000000000
--- a/src/pages/FileItemMock.tsx
+++ /dev/null
@@ -1,174 +0,0 @@
-import * as React from "react";
-import {
-  FileMosaic,
-  FileMosaicProps,
-  ExtFile,
-  UPLOADSTATUS,
-} from "../files-ui";
-
-const baseFiles: ExtFile[] = [
-  {
-    id: Math.random(),
-    name: "A very very long title for files-ui.jsx",
-    type: "text/plain",
-    size: 280000,
-    //valid: true,
-    uploadMessage: "File was succesfuly upoaded to server in year 2014",
-  },
-  {
-    id: Math.random(),
-    name: "A very very long title for files-ui.png",
-    type: "image/png",
-    size: 280000,
-    valid: false,
-    errors: ["File was uploaded from Saturn", "HAAAAAAAAAA"],
-    //progress: 28,
-    //uploadStatus: "preparing",
-    // imageUrl:
-    // "https://super-ficcion.com/wp-content/uploads/2022/10/como-podria-regresar-iron-man-1-780x470.webp",
-  },
-  {
-    id: Math.random(),
-    name: "A very very long title for files-ui.png",
-    type: "image/png",
-    size: 280000,
-    valid: true,
-    uploadStatus: "preparing",
-    imageUrl:
-      "https://super-ficcion.com/wp-content/uploads/2022/10/como-podria-regresar-iron-man-1-780x470.webp",
-  },
-];
-const FileItemMock = ({ darkMode = false, mosaic = false }) => {
-  const [files, setFiles] = React.useState(baseFiles);
-
-  const [newProgress, setNewProgress] = React.useState<number>(45);
-  let completed = false;
-  //let interval: NodeJS.Timer | null = null;
-
-  const removeFile = (id: string | number | undefined) => {
-    setFiles((files) => files.filter((f) => f.id !== id));
-  };
-  const handleSee = () => {};
-
-  const changeStatus = (
-    status: UPLOADSTATUS | undefined,
-    id?: FileMosaicProps["id"]
-  ) => {
-    if (id !== undefined) {
-      setFiles(
-        files.map((f) => {
-          if (id === f.id) {
-            return {
-              ...f,
-              uploadStatus: status,
-            };
-          } else
-            return {
-              ...f,
-            };
-        })
-      );
-    } else
-      setFiles(
-        files.map((f) => {
-          return {
-            ...f,
-            uploadStatus: status,
-            uploadMessage:
-              status === "success"
-                ? "EXITOOOO HAAAAA"
-                : status === "error"
-                ? "Pinche error de los conjones"
-                : status === "aborted"
-                ? "File uplaod was aborted"
-                : undefined,
-          };
-        })
-      );
-  };
-  const cleanStatus = () => {
-    setFiles(
-      files.map((f) => {
-        return {
-          ...f,
-          uploadStatus: undefined,
-        };
-      })
-    );
-  };
-
-  const handleProgress = () => {
-    setNewProgress((newProgress) => {
-      let newProgValue = 0;
-
-      if (completed) {
-        completed = false;
-        newProgValue = 0;
-      } else if (newProgress >= 100) {
-        //clearInterval(interval as NodeJS.Timeout);
-        newProgValue = 100;
-        completed = true;
-      } else {
-        newProgValue = newProgress + 10;
-      }
-
-      return newProgValue;
-    });
-  };
-  return (
-    <div style={{ display: "flex", flexDirection: "column", gap: "10px" }}>
-      <div style={{ display: "flex", flexDirection: "row" }}>
-        <button onClick={() => changeStatus("preparing")}>preparing</button>
-        <button onClick={() => changeStatus("uploading")}>uploading</button>
-        <button onClick={() => changeStatus("success")}>sucess</button>
-        <button onClick={() => changeStatus("error")}>error</button>
-        <button onClick={() => changeStatus("aborted")}>aborted</button>
-        <button onClick={cleanStatus}>clean</button>
-        <button onClick={handleProgress}>progress</button>
-      </div>
-
-      <div style={{ display: "flex", flexDirection: "row" }}>
-        {mosaic ? (
-          <>
-            {files.map((file, index) => (
-              <FileMosaic
-                key={file.id || 1 + 1}
-                {...file}
-                localization={"ES-es"}
-                // preview
-                onDelete={removeFile}
-                //onSee={handleSee}
-                info
-                //alwaysActive
-                progress={newProgress}
-                //hd
-                //backgroundBlurImage={false}
-                resultOnTooltip
-                darkMode={darkMode}
-                onAbort={() => changeStatus("aborted", file.id)}
-                onCancel={() => changeStatus(undefined, file.id)}
-              />
-            ))}
-          </>
-        ) : (
-          <>
-            {files.map((file, index) => (
-              <FileMosaic
-                key={file.id || 1 + 10}
-                {...file}
-                preview
-                onDelete={removeFile}
-                onSee={handleSee}
-                info
-                alwaysActive
-                progress={25}
-                darkMode={darkMode}
-              />
-            ))}
-          </>
-        )}
-      </div>
-    </div>
-  );
-};
-export default FileItemMock;
diff --git a/src/pages/MainPage.jsx b/src/pages/MainPage.jsx
deleted file mode 100644
index 96f008408399820e538b8ea5614f7f540e193a75..0000000000000000000000000000000000000000
--- a/src/pages/MainPage.jsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import * as React from "react";
-import "../styles/MainPage.scss";
-import logo_blue from "../static/files-ui-logo-blue.png";
-import logo_blue_dark from "../static/files-ui-logo-blue-dark.png";
-import DropzoneMainPage from "../components/demo-components/main-page/DropzoneMainPage";
-
-import GettingStarted from "../components/MainPage/GettingStarted";
-import MainNavBar from "../components/MainPage/MainNavBar";
-import MainFooter from "../components/MainPage/MainFooter";
-import FileMosaicImageVideoPreviews from "../components/MainPage/MainRight/FileMosaicImageVideoPreviews";
-import { Divider } from "@mui/material";
-import ExtraComponentsMainPage from "../components/MainPage/SecondaryRight/ExtraComponentsMainPage";
-import ExtraComponentsMainPageInputButton from "../components/MainPage/SecondaryRight/ExtraComponentsMainPageInputButton";
-import ExtraComponentsMainPageAvatar from "../components/MainPage/SecondaryRight/ExtraComponentsMainPageAvatar";
-import { UserContext } from "../globals/contexts/UserContext";
-
-const MainPage = ({ darkMode }) => {
-  const [usuario, dispatch] = React.useContext(UserContext);
-
-  // const [darkModeOn, setDarkModeOn] = React.useState(false);
-  const darkModeOn = usuario.darkMode;
-  console.log("userReducer darkModeOn", darkModeOn);
-
-  const handleDarkMode = () => {
-    // setDarkModeOn((darkModeOn) => !darkModeOn);
-    if (!darkModeOn) dispatch({ type: "TURNOFFLIGHT" });
-    else dispatch({ type: "TURNONLIGHT" });
-  };
-
-  return (
-    <div className={`files-uimain-container${darkModeOn ? ` darkmode` : ""}`}>
-      <MainNavBar
-        darkModeOn={darkModeOn}
-        logo_blue={logo_blue}
-        logo_blue_dark={logo_blue_dark}
-        handleDarkMode={handleDarkMode}
-      />
-      <main className="filesui-main">
-        <div className="fui-main-left">
-          <div className={"filesui-main-logo-container"}>
-            {!darkMode ? (
-              <img
-                className="fui-logo-img"
-                src={logo_blue}
-                alt={"files-ui-logo-blue"}
-              />
-            ) : (
-              <img
-                className="fui-logo-img"
-                src={logo_blue_dark}
-                alt={"files-ui-logo-dark"}
-              />
-            )}
-          </div>
-
-          {/*  <Badges /> */}
-
-          <h1
-            className={!darkModeOn ? "fui-logo-text" : "fui-logo-text darkmode"}
-          >
-            File Uploads with{" "}
-            <span className="gradient-span">Superiorly designed</span>{" "}
-            components
-          </h1>
-
-          <p className="fui-description">
-            Make the file upload task easy for developers and end-users.
-          </p>
-
-          <GettingStarted darkModeOn={darkModeOn} />
-        </div>
-        <div className="fui-main-right">
-          <DropzoneMainPage darkMode={darkModeOn} />
-          <Divider sx={{ borderColor: darkMode ? "#121212" : undefined }} />
-          <FileMosaicImageVideoPreviews darkMode={darkModeOn} />
-        </div>
-      </main>
-      <section
-        id="more-components"
-        className={
-          darkModeOn
-            ? "files-ui-secondary-container darkmode"
-            : "files-ui-secondary-container"
-        }
-      >
-        <div className="secondary-content">
-          <h2
-            className={!darkModeOn ? "fui-logo-text" : "fui-logo-text darkmode"}
-          >
-            Yes! There are even more components
-          </h2>
-          <div className="secondary-content-flex">
-            <div className="secondary-item">
-              <ExtraComponentsMainPage darkMode={darkModeOn} />
-            </div>
-            <div className="secondary-item">
-              <ExtraComponentsMainPageInputButton darkMode={darkModeOn} />
-            </div>
-            <div className="secondary-item">
-              <ExtraComponentsMainPageAvatar darkMode={darkModeOn} />
-            </div>
-          </div>
-        </div>
-      </section>
-      <MainFooter />
-    </div>
-  );
-};
-export default MainPage;
diff --git a/src/pages/api/AvatarApi.jsx b/src/pages/api/AvatarApi.jsx
deleted file mode 100644
index 4a7722572fe1683b4ee14f2aeadd811629dbde73..0000000000000000000000000000000000000000
--- a/src/pages/api/AvatarApi.jsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import Alert from "@mui/material/Alert";
-import PropsTableApi from "./PropsTableApi";
-import { AvatarAPIPropsRows } from "../../data/AvatarAPIPropsRows";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/avatar#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/avatar#props",
-  },
-];
-
-const AvatarApi = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", scrollHandler);
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>Avatar API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React Avatar component. Learn about the
-          props and other APIs of this exported module.
-        </MainParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/avatar">Avatar</AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={AvatarAPIPropsRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default AvatarApi;
diff --git a/src/pages/api/DropzoneApi.tsx b/src/pages/api/DropzoneApi.tsx
deleted file mode 100644
index dc17bba899520f85d49522fdb57d613087b665db..0000000000000000000000000000000000000000
--- a/src/pages/api/DropzoneApi.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import Alert from "@mui/material/Alert";
-import PropsTableApi from "./PropsTableApi";
-import { DropzoneAPIPropsRows } from "../../data/DropzoneAPIPropsRows";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import { scrollHandler } from "../../utils/scrollHandler";
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/dropzone#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/dropzone#props",
-  },
-];
-
-const DropzoneApi = () => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>Dropzone API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React Dropzone component. Learn about the
-          props and other APIs of this exported module.
-        </MainParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/filemosaic">
-                  FileMosaic
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/dropzone">Dropzone</AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={DropzoneAPIPropsRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default DropzoneApi;
diff --git a/src/pages/api/FileCardApi.tsx b/src/pages/api/FileCardApi.tsx
deleted file mode 100644
index 129261c0bfba6ca2f5b6acb6ae93526e465a2b20..0000000000000000000000000000000000000000
--- a/src/pages/api/FileCardApi.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-import { Alert } from "@mui/material";
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import { FileCardAPIPropsRows } from "../../data/FileCardAPIPropsRows";
-import { scrollHandler } from "../../utils/scrollHandler";
-import PropsTableApi from "./PropsTableApi";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/filecard#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/filecard#props",
-  },
-];
-
-const FileCardApi = () => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FileCard API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React Filecard component. Learn about the
-          props and other APIs of this exported module.
-        </MainParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/filecard">FileCard</AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/dropzone">Dropzone</AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={FileCardAPIPropsRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-      <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileCardApi;
diff --git a/src/pages/api/FileInputButtonApi.jsx b/src/pages/api/FileInputButtonApi.jsx
deleted file mode 100644
index 81c97a142e38ec02a8c9a73de0ab0ea31c89551c..0000000000000000000000000000000000000000
--- a/src/pages/api/FileInputButtonApi.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import Alert from "@mui/material/Alert";
-import PropsTableApi from "./PropsTableApi";
-import { FileInputButtonPropsRows } from "../../data/FileInputButtonPropsRows";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/fileinputbutton#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/fileinputbutton#props",
-  },
-];
-const FileInputButtonApi = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FileInputButton API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React FileInputButton component. Learn
-          about the props and other APIs of this exported module.
-        </MainParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/filemosaic">
-                  FileMosaic
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/fileinputbutton">
-                  FileInputButton
-                </AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={FileInputButtonPropsRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileInputButtonApi;
diff --git a/src/pages/api/FileMosaicApi.jsx b/src/pages/api/FileMosaicApi.jsx
deleted file mode 100644
index b13d06b074f65ed04742348b9a14de363a86abf2..0000000000000000000000000000000000000000
--- a/src/pages/api/FileMosaicApi.jsx
+++ /dev/null
@@ -1,79 +0,0 @@
-import { Alert } from "@mui/material";
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import { FileMosaicAPIPropsRows } from "../../data/FileMosaicAPIPropsRows";
-import { scrollHandler } from "../../utils/scrollHandler";
-import PropsTableApi from "./PropsTableApi";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/filemosaic#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/filemosaic#props",
-  },
-];
-const FileMosaicApi = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FileMosaic API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React Filemosaic component. Learn about the
-          props and other APIs of this exported module.
-        </MainParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/filemosaic">
-                  FileMosaic
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/dropzone">Dropzone</AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={FileMosaicAPIPropsRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileMosaicApi;
diff --git a/src/pages/api/FullScreenAPIPropRows.tsx b/src/pages/api/FullScreenAPIPropRows.tsx
deleted file mode 100644
index e144ca6c492efc702cf26764b38ea1bead9a5db4..0000000000000000000000000000000000000000
--- a/src/pages/api/FullScreenAPIPropRows.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-
-export const FullScreenAPIPropRows = [
-  {
-    name: "open",
-    type: <TypeHighlight np>boolean</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>If true, the component is shown.</>,
-  },
-  {
-    name: "onClose",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>Callback fired when the component requests to be closed.</>,
-  },
-  {
-    name: "children",
-    type: <TypeHighlight np>React.ReactNode</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The content of the component. Tipically it is the
-        <CodeHighlight>{"<ImagePreview/>"}</CodeHighlight> or the{" "}
-        <CodeHighlight>{"<VideoPreview/>"}</CodeHighlight> components.
-      </>
-    ),
-  },
-];
diff --git a/src/pages/api/FullScreenApi.tsx b/src/pages/api/FullScreenApi.tsx
deleted file mode 100644
index 5fc7ae70b087fb2aa2046f8404b156239dc97eb6..0000000000000000000000000000000000000000
--- a/src/pages/api/FullScreenApi.tsx
+++ /dev/null
@@ -1,90 +0,0 @@
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import Alert from "@mui/material/Alert";
-import PropsTableApi from "./PropsTableApi";
-import { FullScreenAPIPropRows } from "./FullScreenAPIPropRows";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/fileinputbutton#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/fileinputbutton#props",
-  },
-];
-
-const FullScreenApi = () => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FullScreen API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React FullScreen component. Learn about the
-          props and other APIs of this exported module.
-        </MainParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/fullscreen#imagepreview">
-                  ImagePreview (FullScreen)
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/fullscreen#videopreview">
-                  VideoPreview (FullScreen)
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/filemosaic">
-                  FileMosaic
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/filecard">FileCard</AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={FullScreenAPIPropRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FullScreenApi;
diff --git a/src/pages/api/ImagePreviewAPIPropsRows.tsx b/src/pages/api/ImagePreviewAPIPropsRows.tsx
deleted file mode 100644
index fbf971b36440ce270356d2d886928aef1e9acb82..0000000000000000000000000000000000000000
--- a/src/pages/api/ImagePreviewAPIPropsRows.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-
-export const ImagePreviewAPIPropsRows = [
-  {
-    name: "src",
-    type: (
-      <>
-        <TypeHighlight np>{"string"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"File"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        Image source in string format (URL) or File Object (Will be read as
-        URL).
-      </>
-    ),
-  },
-  {
-    name: "width",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The width of the image.</>,
-  },
-  {
-    name: "height",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The height of the image.</>,
-  },
-  {
-    name: "alt",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>Alternative label when an error occurs on loading the image</>
-    ),
-  },
-  {
-    name: "onError",
-    type: <TypeHighlight np>func</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>Callback fired when an error occured on loading the image.</>
-    ),
-  },
-  {
-    name: "smartImgFit",
-    type: (
-      <>
-        <TypeHighlight np>false</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{'"orientation"'}</TypeHighlight>
-        {" | "}
-        <TypeHighlight>{'"center"'}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np>{'"orientation"'}</TypeHighlight>,
-    description: (
-      <>
-        If false, image width will be set to 100%.
-        <br />
-        If present, image will be analized and displayed according to its heigh
-        and width. Image with height greater than its width has a "portrait"
-        orientation. Otherwise it has a "landscape" orientation. .
-        <ul>
-          <li>
-            If value is "center", image will be centered and will not be
-            displayed complete. This the empty space is avoided. This is achived
-            by giving 100% to width prop if the orientation is "portrait". When
-            orientation is "landscape", height prop will be set to 100%.
-          </li>
-          <li>
-            If value is "orientation", image will be displayed complete by
-            giving 100% to width prop if the orientation is "landscape". When
-            orientation is "portrait", height prop will be set to 100%. Some
-            images will show an empty space.
-          </li>
-        </ul>
-      </>
-    ),
-  },
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles.
-      </>
-    ),
-  },
-];
diff --git a/src/pages/api/ImagePreviewApi.tsx b/src/pages/api/ImagePreviewApi.tsx
deleted file mode 100644
index fa973d0a62831b5d86b9b7f4a6f3fd2944ed9c1f..0000000000000000000000000000000000000000
--- a/src/pages/api/ImagePreviewApi.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import Alert from "@mui/material/Alert";
-import PropsTableApi from "./PropsTableApi";
-import { ImagePreviewAPIPropsRows } from "./ImagePreviewAPIPropsRows";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/fileinputbutton#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/fileinputbutton#props",
-  },
-];
-
-const ImagePreviewApi = () => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>ImagePreview API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React ImagePreview component. Learn about
-          the props and other APIs of this exported module.
-        </MainParagraph>
-        <DescParagraph>
-          Apart from the props described bellow, the{" "}
-          <CodeHighlight>ImagePreview</CodeHighlight> component accepts all the
-          HTML <CodeHighlight>{"<img/>"}</CodeHighlight> default props. You can
-          check them out{" "}
-          <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes">
-            here
-          </AnchorToTab>
-          .
-        </DescParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/filemosaic">
-                  FileMosaic
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/filecard">FileCard</AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={ImagePreviewAPIPropsRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default ImagePreviewApi;
diff --git a/src/pages/api/PropsTableApi.jsx b/src/pages/api/PropsTableApi.jsx
deleted file mode 100644
index 245164b445052f4c7fc722271f84ec3e74a20907..0000000000000000000000000000000000000000
--- a/src/pages/api/PropsTableApi.jsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import * as React from "react";
-import { styled } from "@mui/material/styles";
-import Table from "@mui/material/Table";
-import TableBody from "@mui/material/TableBody";
-import TableCell, { tableCellClasses } from "@mui/material/TableCell";
-import TableContainer from "@mui/material/TableContainer";
-import TableHead from "@mui/material/TableHead";
-import TableRow from "@mui/material/TableRow";
-import Paper from "@mui/material/Paper";
-import SortByAlphaIcon from "@mui/icons-material/SortByAlpha";
-import LowPriorityIcon from "@mui/icons-material/LowPriority";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import { Tooltip, IconButton, Stack } from "@mui/material";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-
-const StyledTableCell = styled(TableCell)(({ theme }) => ({
-  [`&.${tableCellClasses.head}`]: {
-    backgroundColor: "#042354",
-    color: theme.palette.common.white,
-  },
-  [`&.${tableCellClasses.body}`]: {
-    fontSize: 14,
-  },
-}));
-
-const StyledTableRow = styled(TableRow)(({ theme }) => ({
-  "&:nth-of-type(odd)": {
-    backgroundColor: theme.palette.action.hover,
-  },
-  // hide last border
-  "&:last-child td, &:last-child th": {
-    border: 0,
-  },
-}));
-
-function compareNames(a, b) {
-  if (a?.name < b?.name) {
-    return -1;
-  } else {
-    return 1;
-  }
-}
-
-export default function PropsTableApi({
-  rows = [],
-  title = "",
-  desc=<></>,
-  omitDefault = false,
-}) {
-
-
-  const [sorted, setSorted] = React.useState(false);
-  const [localRows, setLocalRows] = React.useState(rows);
-
-  const handleSort = () => {
-    setSorted((_sorted) => {
-      const resultSorted = !_sorted;
-      const rowsToSort = [...rows];
-      if (resultSorted) {
-        setLocalRows(rowsToSort.sort(compareNames));
-      } else {
-        setLocalRows(rowsToSort);
-      }
-      return resultSorted;
-    });
-  };
-  return (
-    <React.Fragment>
-      <Stack
-        direction={"row"}
-        justifyContent="flex-start"
-        alignItems={"center"}
-        spacing={2}
-      >
-        <SubTitle content={title.length === 0 ? "Props" : title} />{" "}
-        <Tooltip title={sorted ? "Sort by importance" : "Sort alphabetically"}>
-          <IconButton
-            style={{ borderRadius: "50%", border: "0.5px solid #eaeef3" }}
-            onClick={handleSort}
-            aria-label="upload picture"
-            component="label"
-          >
-            {sorted ? <SortByAlphaIcon /> : <LowPriorityIcon />}
-          </IconButton>
-        </Tooltip>{" "}
-      </Stack>
-      {desc!==undefined && <DescParagraph>{desc}</DescParagraph>}
-      <TableContainer component={Paper}>
-        <Table sx={{ minWidth: 700 }} aria-label="customized table">
-          <TableHead>
-            <TableRow>
-              <StyledTableCell /* width={"30%"} */>Name</StyledTableCell>
-              <StyledTableCell align="left" /* width={"30%"} */>
-                Type
-              </StyledTableCell>
-              {!omitDefault && (
-                <StyledTableCell align="left">Default</StyledTableCell>
-              )}
-              <StyledTableCell
-                align="left"
-                /*  width={"30%"} */
-              >
-                Description
-              </StyledTableCell>
-            </TableRow>
-          </TableHead>
-          <TableBody>
-            {localRows.map((row) => (
-              <StyledTableRow key={row.name}>
-                <StyledTableCell
-                  component="th"
-                  scope="row"
-                  style={{
-                    wordBreak: row.name.length > 20 ? "break-word" : "normal",
-                  }}
-                >
-                  {row.name}
-                </StyledTableCell>
-                <StyledTableCell
-                  align="left"
-                  style={{
-                    wordBreak: row.name.length > 10 ? "break-word" : "normal",
-                  }}
-                >
-                  {row.type}
-                </StyledTableCell>
-                
-                {!omitDefault && (
-                  <StyledTableCell align="left">{row.default}</StyledTableCell>
-                )}
-                
-                <StyledTableCell align="left" style={{ maxWidth: "50%" }}>
-                  {row.description}
-                </StyledTableCell>
-              </StyledTableRow>
-            ))}
-          </TableBody>
-        </Table>
-      </TableContainer>
-    </React.Fragment>
-  );
-}
diff --git a/src/pages/api/VideoPreviewAPIPropsRows.tsx b/src/pages/api/VideoPreviewAPIPropsRows.tsx
deleted file mode 100644
index 8defeb9ebac9ca2b9c60f9be4ef3d5799a1fb40f..0000000000000000000000000000000000000000
--- a/src/pages/api/VideoPreviewAPIPropsRows.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-
-export const VideoPreviewAPIPropsRows = [
-  {
-    name: "src",
-    type: (
-      <>
-        <TypeHighlight np>{"string"}</TypeHighlight>
-        {" | "}
-        <TypeHighlight np>{"File"}</TypeHighlight>
-      </>
-    ),
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The video source in string format or File object.</>,
-  },
-  {
-    name: "style",
-    type: <TypeHighlight np>React.CSSProperties</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: <>The in-line style object.</>,
-  },
-  {
-    name: "className",
-    type: <TypeHighlight np>string</TypeHighlight>,
-    default: <TypeHighlight np></TypeHighlight>,
-    description: (
-      <>
-        The classname to override the css styles in .css or .sass file instead
-        of using in-line styles.
-      </>
-    ),
-  },
-];
diff --git a/src/pages/api/VideoPreviewApi.tsx b/src/pages/api/VideoPreviewApi.tsx
deleted file mode 100644
index 775f9f6d3690e3bcafdcf53a4c6341efde19bf03..0000000000000000000000000000000000000000
--- a/src/pages/api/VideoPreviewApi.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import * as React from "react";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import Alert from "@mui/material/Alert";
-import PropsTableApi from "./PropsTableApi";
-import { VideoPreviewAPIPropsRows } from "./VideoPreviewAPIPropsRows";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Demos",
-    referTo: "/api/fileinputbutton#demo",
-  },
-  {
-    id: 1,
-    label: "Props",
-    referTo: "/api/fileinputbutton#props",
-  },
-];
-
-const VideoPreviewApi = () => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>VideoPreview API</MainTitle>
-        <MainParagraph>
-          API reference docs for the React VideoPreview component. Learn about
-          the props and other APIs of this exported module.
-        </MainParagraph>
-        <DescParagraph>
-          Apart from the props described bellow, the{" "}
-          <CodeHighlight>VideoPreview</CodeHighlight> component accepts all the
-          HTML <CodeHighlight>{"<video/>"}</CodeHighlight> default props. You
-          can check them out{" "}
-          <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#attributes">
-            here
-          </AnchorToTab>
-          .
-        </DescParagraph>
-        <section id="demo">
-          <SubTitle content="Demo" />
-          <Alert severity="info">
-            For examples and details on the usage of this React component, visit
-            the component demo pages:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/filemosaic">
-                  FileMosaic
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/filecard">FileCard</AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="props">
-          <PropsTableApi rows={VideoPreviewAPIPropsRows} />
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default VideoPreviewApi;
diff --git a/src/pages/code-generator/CodeGeneratorPage.jsx b/src/pages/code-generator/CodeGeneratorPage.jsx
deleted file mode 100644
index a5a76d1a1e5eaee6eba3b55dc33f57fb118c04d8..0000000000000000000000000000000000000000
--- a/src/pages/code-generator/CodeGeneratorPage.jsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import * as React from "react";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-
-const CodeGeneratorPage = (props) => {
-  return (
-    <MainLayoutPage selectedIndex={5}>
-      <MainContentContainer>
-        <MainTitle>Code Generator</MainTitle>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu width="240px" items={[]} />
-      </RightMenuContainer>
-    </MainLayoutPage>
-  );
-};
-export default CodeGeneratorPage;
diff --git a/src/pages/demo/AvatarDemoPage.tsx b/src/pages/demo/AvatarDemoPage.tsx
deleted file mode 100644
index 403e3ae202e72f31b7b9e52b72132a48b2b094e1..0000000000000000000000000000000000000000
--- a/src/pages/demo/AvatarDemoPage.tsx
+++ /dev/null
@@ -1,335 +0,0 @@
-import * as React from "react";
-import { Paper } from "@mui/material";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import BasicDemoAvatar from "../../components/demo-components/avatar-demo/BasicDemoAvatar";
-import CodeDemoAvatarBasic from "../../components/demo-components/avatar-demo/CodeDemoAvatarBasic";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-import DemoAvatarPickFile from "../../components/demo-components/avatar-demo/DemoAvatarPickFile";
-import CodeDemoAvatarPickFile from "../../components/demo-components/avatar-demo/CodeDemoAvatarPickFile";
-import DemoAvatarFallBack from "../../components/demo-components/avatar-demo/DemoAvatarFallBack";
-import CodeDemoAvatarFallBack from "../../components/demo-components/avatar-demo/CodeDemoAvatarFallBack";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import DemoAvatarSmartImgFit from "../../components/demo-components/avatar-demo/DmoAvatarSmartImgFit";
-import CodeDemoAvatarSmartFit from "../../components/demo-components/avatar-demo/CodeDemoAvatarSmartFit";
-import DemoAvatarStyling from "../../components/demo-components/avatar-demo/DemoAvatarStyling";
-import CodeDemoAvatarStyling from "../../components/demo-components/avatar-demo/CodeDemoAvatarStyling";
-import DemoAvatarLabels from "../../components/demo-components/avatar-demo/DemoAvatarLabels";
-import DemoAvatarVariants from "../../components/demo-components/avatar-demo/DemoAvatarVarians";
-import DemoAvatarLoading from "../../components/demo-components/avatar-demo/DemoAvatarLoading";
-import CodeDemoAvatarLoading from "../../components/demo-components/avatar-demo/CodeDemoAvatarLoading";
-import CodeDemoAvatarVariant from "../../components/demo-components/avatar-demo/CodeAvatarVariant";
-import CodeDemoAvatarLabels from "../../components/demo-components/avatar-demo/CodeDemoAvatarLabels";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-interface AvatarDemoPageProps {}
-const AvatarDemoPage: React.FC<AvatarDemoPageProps> = (
-  props: AvatarDemoPageProps
-) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>Avatar</MainTitle>
-
-        <MainParagraph>
-          This "avatar" component can be used to just display an image or even
-          can be a special file <CodeHighlight>input</CodeHighlight> designed
-          for setting an image
-          {/* by either dragging and dropping files there or  */}
-          by picking file from a file dialog.
-        </MainParagraph>
-
-        <section id="basic-avatar">
-          <SubTitle content="Basic Avatar (read only)" />
-          <DescParagraph>
-            The most basic use is to set a fixed image from Url.
-          </DescParagraph>
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "center",
-            }}
-          >
-            <BasicDemoAvatar />
-          </Paper>
-          <CodeDemoAvatarBasic />
-        </section>
-
-        <section id="picking-image-file">
-          <SubTitle content="Picking an image File" />
-          <DescParagraph>
-            The <CodeHighlight>{"<Avatar/>"}</CodeHighlight> component supports
-            both a <TypeHighlight>string</TypeHighlight> url and a{" "}
-            <TypeHighlight>File</TypeHighlight> object as the source.
-          </DescParagraph>
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "center",
-            }}
-          >
-            <DemoAvatarPickFile />
-          </Paper>
-          <CodeDemoAvatarPickFile />
-        </section>
-
-        <section id="fallback">
-          <SubTitle content="Fallback (error on load the image)" />
-          <DescParagraph>
-            If there is an error loading the avatar image, the{" "}
-            <CodeHighlight>{"<Avatar/>"}</CodeHighlight> component provides a
-            way to fall back by defining the{" "}
-            <TypeHighlight>onError</TypeHighlight> prop. This could happen if:
-            <ul>
-              <li>The image url is broken, or</li>
-              <li>The image file selected is not an image</li>
-            </ul>
-          </DescParagraph>
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "space-evenly",
-              flexWrap: "wrap",
-              gap: "5px",
-            }}
-          >
-            <DemoAvatarFallBack />
-          </Paper>
-          <CodeDemoAvatarFallBack />
-        </section>
-
-        <section id="smart-image-fit">
-          <SubTitle content="Smart image fit" />
-          <DescParagraph>
-            <CodeHighlight>Avatar</CodeHighlight> with
-            <TypeHighlight>smartImgFit</TypeHighlight> prop will display image
-            according to its heigh and width.
-            <br />
-            Image with height greater than its width has a "portrait"
-            orientation. Otherwise it has a "landscape" orientation.
-            <br />
-            In Avatar component the default value is "center".
-          </DescParagraph>
-
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "space-evenly",
-              flexWrap: "wrap",
-              gap: "50px",
-            }}
-          >
-            <DemoAvatarSmartImgFit />
-          </Paper>
-
-          <CodeDemoAvatarSmartFit />
-        </section>
-
-        <section id="loading">
-          <SubTitle content="Loading" />
-          <DescParagraph>
-            You can use the prop <TypeHighlight>isLoading</TypeHighlight> when
-            you want to communicate that something is loading.
-          </DescParagraph>
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "center",
-            }}
-          >
-            <DemoAvatarLoading />
-          </Paper>
-          <CodeDemoAvatarLoading />
-        </section>
-
-        <section id="variants">
-          <SubTitle content="Variants" />
-          <DescParagraph>
-            Avatar component comes in 2 variants: "circle" and "square".
-          </DescParagraph>
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "space-evenly",
-              flexWrap: "wrap",
-              gap: "50px",
-            }}
-          >
-            <DemoAvatarVariants />
-          </Paper>
-          <CodeDemoAvatarVariant />
-        </section>
-
-        <section id="styling">
-          <SubTitle content="Styling" />
-          <DescParagraph>
-            You can define the <TypeHighlight>style</TypeHighlight> prop for
-            changing the styles applied to the main container such us the{" "}
-            <TypeHighlight>width</TypeHighlight> o the{" "}
-            <TypeHighlight>height</TypeHighlight>.
-            <br />
-            Also you can use directly the prop{" "}
-            <TypeHighlight>borderRadius</TypeHighlight> to specify how rounde
-            you preffer the borders.
-          </DescParagraph>
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "space-evenly",
-              flexWrap: "wrap",
-              gap: "50px",
-            }}
-          >
-            <DemoAvatarStyling />
-          </Paper>
-          <CodeDemoAvatarStyling />
-        </section>
-
-        <section id="labels">
-          <SubTitle content="Labels" />
-          <DescParagraph>
-            You can specify the content of the texts:
-            <ul>
-              <li>
-                <CodeHighlight>emptyLabel</CodeHighlight>: when the source is
-                not set.
-              </li>
-              <li>
-                <CodeHighlight>changeLabel</CodeHighlight>: when there is a
-                valid source set.
-              </li>
-              <li>
-                <CodeHighlight>loadingLabel</CodeHighlight>: when you want to
-                communicate that something is loading.
-              </li>
-            </ul>
-          </DescParagraph>
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              width: "100%",
-              justifyContent: "space-evenly",
-              flexWrap: "wrap",
-              gap: "50px",
-            }}
-          >
-            <DemoAvatarLabels />
-          </Paper>
-          <CodeDemoAvatarLabels />
-        </section>
-
-        <section id="api">
-          <SubTitle content="API" />
-          <DescParagraph>
-            See the documentation below for a complete reference to all of the
-            props available to the components mentioned here.
-          </DescParagraph>
-          <ul>
-            <li>
-              <AnchorToTab href="/api/avatar">{"<Avatar/>"}</AnchorToTab>
-            </li>
-          </ul>
-        </section>
-      </MainContentContainer>
-
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default AvatarDemoPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Basic avatar",
-    referTo: "/components/avatar#basic-avatar",
-  },
-  {
-    id: 1,
-    label: "Picking image file",
-    referTo: "/components/avatar#picking-image-file",
-  },
-  {
-    id: 3,
-    label: "FallBack",
-    referTo: "/components/avatar#fallback",
-  },
-  {
-    id: 4,
-    label: "Smart image fit",
-    referTo: "/components/avatar#smart-image-fit",
-  },
-  {
-    id: 5,
-    label: "Loading",
-    referTo: "/components/avatar#loading",
-  },
-  {
-    id: 6,
-    label: "Variants",
-    referTo: "/components/avatar#variants",
-  },
-  {
-    id: 7,
-    label: "Styling",
-    referTo: "/components/avatar#styling",
-  },
-  {
-    id: 8,
-    label: "Labels",
-    referTo: "/components/avatar#labels",
-  },
-  {
-    id: 9,
-    label: "API",
-    referTo: "/components/avatar#api",
-  },
-];
diff --git a/src/pages/demo/DropzoneDemoPage.jsx b/src/pages/demo/DropzoneDemoPage.jsx
deleted file mode 100644
index e2d5eb9d3cd7f939ace705beaaf894dc296499f6..0000000000000000000000000000000000000000
--- a/src/pages/demo/DropzoneDemoPage.jsx
+++ /dev/null
@@ -1,761 +0,0 @@
-import * as React from "react";
-import { Paper, Alert, AlertTitle } from "@mui/material";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import BasicDropzoneCodeJS from "../../components/demo-components/dropzone-demo/BasicDropzoneCodeJS";
-import BasicDemoDropzone from "../../components/demo-components/dropzone-demo/BasicDropzoneDemo";
-import CodeDemoDropzoneActionButtons from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneActionButtons";
-import CodeDemoDropzoneCustomValidation from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneCustomValidation";
-import CodeDemoDropzoneUploading from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneUploading";
-import CodeDemoDropzoneValidation from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneValidation";
-import DemoDropzoneActionButtons from "../../components/demo-components/dropzone-demo/DemoDropzoneActionButtons";
-import DemoDropzoneCustomValidation from "../../components/demo-components/dropzone-demo/DemoDropzoneCustomValidation";
-import DemoDropzoneUploading from "../../components/demo-components/dropzone-demo/DemoDropzoneUploading";
-import DemoDropzoneValidation from "../../components/demo-components/dropzone-demo/DemoDropzoneValidation";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-
-import DemoDropzoneFooterConfig from "../../components/demo-components/dropzone-demo/DemoDropzoneFooterConfig";
-import DemoDropzoneHeaderConfig from "../../components/demo-components/dropzone-demo/DemoDropzoneHeaderConfig";
-import CodeDemoDropzoneHeaderConfig from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneHeaderConfig";
-import CodeDemoDropzoneFooterConfig from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneFooterConfig";
-import DemoDropzoneStyling from "../../components/demo-components/dropzone-demo/DemoDropzoneStyling";
-import DemoDropzoneBehaviour from "../../components/demo-components/dropzone-demo/DemoDropzoneBehaviour";
-import DemoDropzoneLabel from "../../components/demo-components/dropzone-demo/DemoDropzoneLabel";
-import DemoDropzoneDropLayer from "../../components/demo-components/dropzone-demo/DemoDropzoneDropLayer";
-import DemoDropzoneClickable from "../../components/demo-components/dropzone-demo/DemoDropzoneClickable";
-import DemoDropzoneDisabled from "../../components/demo-components/dropzone-demo/DemoDropzoneDisabled";
-import DemoDropzoneRipple from "../../components/demo-components/dropzone-demo/DemoDropzoneRipple";
-import CodeDemoDropzoneStyling from "../../components/demo-components/dropzone-demo/CodeDropzoneDemoStyling";
-import CodeDemoDropzoneRipple from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneRipple";
-import CodeDemoDropzoneDisabled from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneDisabled";
-import CodeDemoDropzoneClickable from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneClickable";
-import CodeDemoDropzoneDropLayer from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneDropLayer";
-import CodeDemoDropzoneBehaviour from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneBehaviour";
-import CodeDemoDropzoneLabel from "../../components/demo-components/dropzone-demo/CodeDropzoneDemoLabel";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const DropzoneDemoPage = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>Dropzone</MainTitle>
-
-        <MainParagraph>
-          The default <CodeHighlight>{'<input type="file"/>'}</CodeHighlight> is
-          just a quite boring button. That's why we present the{" "}
-          <CodeHighlight>{"<Dropzone/>"}</CodeHighlight>
-          component as an special <CodeHighlight>input</CodeHighlight> enhanced
-          by the ability to allow users to drag and drop files there or choose
-          files from a file dialog and also to validate an upload them.
-        </MainParagraph>
-
-        <DescParagraph>
-          The widget is useful for handling one{" "}
-          <TypeHighlight>File</TypeHighlight> or a list of{" "}
-          <TypeHighlight>Files</TypeHighlight> in one or more of these
-          scenarios:
-          <ol>
-            <li>
-              The file(s) must be chosen from a File Dialog or must be dragged
-              and dropped into the widget
-            </li>
-            <li>
-              The file(s) must be validated or not. If validation is required,
-              it can be done by taking into account a predefined set of allowed{" "}
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept">
-                Common MIME Types
-              </AnchorToTab>
-              ; specifiying the max file size (in bytes) and/or the max amount
-              of files.
-            </li>
-            <li>The file(s) must be uploaded somewhere in the internet.</li>
-          </ol>
-        </DescParagraph>
-        <DescParagraph>
-          It's meant to be an improved version of the{" "}
-          <AnchorToTab href="https://react-dropzone.js.org/">
-            react-dropzone
-          </AnchorToTab>{" "}
-          and{" "}
-          <AnchorToTab href="https://docs.dropzone.dev/">dropzone</AnchorToTab>{" "}
-          packages.
-        </DescParagraph>
-
-        <section id="basic-dropzone">
-          <SubTitle content="Basic Dropzone" />
-          <DescParagraph>
-            In this demo we set the{" "}
-            <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> with the minimum
-            props that allows you to get your task done fast. These props are{" "}
-            <CodeHighlight>onChange</CodeHighlight> and{" "}
-            <CodeHighlight>value</CodeHighlight>.
-          </DescParagraph>
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <BasicDemoDropzone />
-          </Paper>
-          <BasicDropzoneCodeJS />
-          <Alert severity="info">
-            <AlertTitle> FileMosaic </AlertTitle>
-            For completeness, these examples include{" "}
-            <CodeHighlight>{`<FileMosaic/>`} </CodeHighlight>
-            component for showing the files selected by the user with minimun
-            props too. For further information of this component check out the{" "}
-            <AnchorToTab href="/components/filemosaic">
-              FileMosaic
-            </AnchorToTab>{" "}
-            page.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> ExtFile </AlertTitle>
-            {/*  This is an info alert — <strong>check it out!</strong>
-             */}
-            <strong>ExtFile type </strong>
-            is explicity used in the
-            <strong> Typescript</strong> example and is implicity used in the{" "}
-            <strong>Javascript</strong> example for handling the metadata that
-            makes possible the information exchange between components. For
-            further information about this data type check out the{" "}
-            <AnchorToTab href="/types#extfile">ExtFile-API. </AnchorToTab>
-          </Alert>
-        </section>
-
-        <section id="validation">
-          <SubTitle content="Validation" />
-          <DescParagraph>
-            In this demo you can see how{" "}
-            <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> component covers the
-            following features when it comes to validating files.
-            <ol>
-              <li>Accepting specific file types.</li>
-              <li>Accepting an specific number of files.</li>
-              <li>Accepting files with an specific size (in bytes).</li>
-            </ol>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneValidation />
-          </Paper>
-          <CodeDemoDropzoneValidation />
-          <Alert severity="info">
-            <AlertTitle> Removing non valid Files </AlertTitle>
-            We call "clean" to the operation of removing non valid files. Apart
-            from deleting them individually, there are some other ways in which
-            you can remove all of them. You can try the following props in the{" "}
-            {"<Dropzone/>"} component:
-            <ul>
-              <li>
-                <TypeHighlight>cleanFiles</TypeHighlight> : This will make
-                dropzone header to display the "clean" icon which can trigger
-                the "clean" operation.
-              </li>
-              <li>
-                <TypeHighlight>actionButtons</TypeHighlight> : By setting this
-                prop properly, a button will be visible and will trigger the
-                "clean" operation (This is the way used in this demo).
-              </li>
-              <li>
-                <TypeHighlight>autoClean</TypeHighlight> : By setting this prop,
-                non valid files will be automatically discarted and will not be
-                given in the <CodeHighlight>onChange</CodeHighlight> event.
-              </li>
-            </ul>
-          </Alert>
-        </section>
-
-        <section id="custom-validation">
-          <SubTitle content="Custom validation" />
-          <DescParagraph>
-            You can also override the Dropzone validation operation by giving a
-            custom validation function that must fit the following signature:{" "}
-            <CodeHighlight>
-              {"validator?: (f: "}
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/API/File">
-                File
-              </AnchorToTab>
-              {") => "}
-              <AnchorToTab href="/types#custom-validate-file-response">
-                ValidateFileResponse
-              </AnchorToTab>
-            </CodeHighlight>
-            . Custom validator can work together with{" "}
-            <TypeHighlight>accept</TypeHighlight>,{" "}
-            <TypeHighlight>maxFileSize</TypeHighlight> and{" "}
-            <TypeHighlight>maxFiles</TypeHighlight> props.
-          </DescParagraph>
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneCustomValidation />
-          </Paper>
-          <CodeDemoDropzoneCustomValidation />
-        </section>
-
-        <section id="uploading">
-          <SubTitle content="Uploading" />
-          <DescParagraph>
-            For uploading , the prop <TypeHighlight>uploadConfig</TypeHighlight>{" "}
-            must be given. This prop recieves an object in which you can specify
-            the HTTP method, the url, the headers and also extra data to be
-            uploaded. The type definition for the prop mentioned can be found{" "}
-            <AnchorToTab href="/types#UploadConfig">here</AnchorToTab>.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneUploading />
-          </Paper>
-
-          <CodeDemoDropzoneUploading />
-
-          <Alert severity="info">
-            <AlertTitle> Server response </AlertTitle>
-            For uploading files through files-ui, server must return the
-            response with the structure of the{" "}
-            <TypeHighlight>
-              {" "}
-              <AnchorToTab href="/types#ServerResponse">
-                ServerResponse
-              </AnchorToTab>
-            </TypeHighlight>{" "}
-            type.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> "fakeUpload" </AlertTitle>
-            By giving this prop, the {"<Dropzone/>"} component will simulate the
-            upload operation by randomly setting the upload status and message
-            on each uploadable <TypeHighlight>ExtFile</TypeHighlight>. It will
-            also set a fake progress.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> Upload config properties </AlertTitle>
-            Apart from the properties you can see in the example above, there
-            are more of them that can make the upload process to behave
-            differently.
-            <ul>
-              <li>
-                <TypeHighlight>autoUpload</TypeHighlight> : By setting this prop
-                to true, the upload process will start automatically just after
-                the user drops or selects files.
-              </li>
-              <li>
-                <TypeHighlight>cleanOnUpload</TypeHighlight> : By setting this
-                prop, you can control whether the upload process should "clean"
-                the non valid files before uploading or not. By default this
-                value is true.
-              </li>
-            </ul>
-            More information about the uploadConfig type structure can be found{" "}
-            <AnchorToTab href="/types#UploadConfig">here</AnchorToTab>.
-          </Alert>
-        </section>
-
-        <section id="action-buttons">
-          <SubTitle content="Dropzone with action buttons" />
-          <DescParagraph>
-            If you need to display buttons that trigger the default events in
-            the <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> component, you
-            can do it by adding the <TypeHighlight>actionButtons</TypeHighlight>{" "}
-            prop. This will add buttons to the top or to the bottom of this
-            component.
-            <ul>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>actionButtons.cleanButton</TypeHighlight> prop
-                defined will display a button which triggers the clean process.
-                <br />
-                This button will be visible only{" "}
-                <strong>when the "upload" process is not active</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>actionButtons.deleteButton</TypeHighlight> prop
-                defined will display a button which deletes all files.
-                <br />
-                this button will be visible only{" "}
-                <strong>when the "upload" process is not active</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>actionButtons.uploadButton</TypeHighlight> prop
-                defined will display a button which starts the upload process.
-                This button will <strong>not</strong> be visible{" "}
-                <strong>during the "upload" process</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>actionButtons.abortButton</TypeHighlight> prop
-                defined will display a button which stops the upload process.
-                <br />
-                This button will be visible only{" "}
-                <strong>during the "upload" process</strong>.
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneActionButtons />
-          </Paper>
-
-          <CodeDemoDropzoneActionButtons />
-        </section>
-
-        <section id="header-config">
-          <SubTitle content="Dropzone header config" />
-          <DescParagraph>
-            You can use the <TypeHighlight>headerConfig</TypeHighlight> prop to
-            define what will be displayed in the header.
-            <ul>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>headerConfig.customHeader</TypeHighlight> prop
-                defined will display this prop replacing the entire default
-                header.
-              </li>
-            </ul>
-            By default all of these values are set to{" "}
-            <TypeHighlight>true</TypeHighlight>.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneHeaderConfig />
-          </Paper>
-
-          <CodeDemoDropzoneHeaderConfig />
-          <Alert severity="info">
-            <AlertTitle> HeaderConfig </AlertTitle>
-            There are more options that can be defined such as:
-            <ul>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>headerConfig.deleteFiles</TypeHighlight> prop set
-                to <TypeHighlight>true</TypeHighlight> will display a delete
-                button which triggers the delete process.
-                <br />
-                This button will be visible only{" "}
-                <strong>when the "upload" process is not active</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>headerConfig.cleanFiles</TypeHighlight> prop set
-                to <TypeHighlight>true</TypeHighlight> will display a "clean"
-                buton. This button will be visible only during the "upload"
-                process.
-                <br />
-                button will be visible only{" "}
-                <strong>when the "upload" process is not active</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>headerConfig.uploadFiles</TypeHighlight> prop set
-                to <TypeHighlight>true</TypeHighlight> will display a button
-                which starts the upload process.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>headerConfig.uploading</TypeHighlight> prop set
-                to <TypeHighlight>true</TypeHighlight> will display a loading
-                icon <strong>during the "upload" process</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>headerConfig.maxFileSize</TypeHighlight> prop set
-                to <TypeHighlight>true</TypeHighlight> will display the max file
-                size label.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>headerConfig.validFilesCount</TypeHighlight> prop
-                set to <TypeHighlight>true</TypeHighlight> will display the
-                current count of valid files.
-              </li>
-            </ul>
-            By default all of these values are set to
-            <TypeHighlight>true</TypeHighlight>. The complete type definition
-            can be found{" "}
-            <AnchorToTab href="/types#header-config">here</AnchorToTab>.
-          </Alert>
-        </section>
-
-        <section id="footer-config">
-          <SubTitle content="Dropzone footer config" />
-          <DescParagraph>
-            You can use the <TypeHighlight>footerConfig</TypeHighlight> prop to
-            define what will be displayed in the footer.
-            <ul>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>footerConfig.customMessage</TypeHighlight> prop
-                defined will be considered the message to display in the footer.
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneFooterConfig />
-          </Paper>
-
-          <CodeDemoDropzoneFooterConfig />
-
-          <Alert severity="info">
-            <AlertTitle> FooterConfig </AlertTitle>
-            There are more options that can be defined such as:
-            <ul>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>footerConfig.allowedTypesLabel</TypeHighlight>{" "}
-                prop set to <TypeHighlight>false</TypeHighlight> will hide the
-                label that indicates the allowed file types. This label is
-                normally hidden{" "}
-                <strong>when the "upload" process is active</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>
-                  footerConfig.uploadProgressMessage
-                </TypeHighlight>{" "}
-                prop set to <TypeHighlight>false</TypeHighlight> will not
-                display the that indicates the current upload progress. This
-                label is normally visible
-                <strong> only during the "upload" process</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>footerConfig.uploadResultMessage</TypeHighlight>{" "}
-                prop set to <TypeHighlight>false</TypeHighlight> will not
-                display a label that indicates the final result of the upload
-                progress will not be shown. This label is normally visible for 2
-                seconds just{" "}
-                <strong>after the "upload" process finishes</strong>.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>footerConfig.noMissingFilesLabel</TypeHighlight>{" "}
-                prop set to <TypeHighlight>false</TypeHighlight> will not
-                display a label that indicates that there are not files missing
-                to upload.
-              </li>
-              <li>
-                Dropzone with the{" "}
-                <TypeHighlight>footerConfig.style</TypeHighlight> prop defined
-                will override the styles associated to the footer component.
-              </li>
-            </ul>
-            By default all of these values are set to
-            <TypeHighlight>true</TypeHighlight>.
-            <br />
-            The complete type definition can be found{" "}
-            <AnchorToTab href="/types#footer-config">here</AnchorToTab>.
-          </Alert>
-        </section>
-
-        <section id="styling">
-          <SubTitle content="Styling Dropzone" />
-          <DescParagraph>
-            You can use change the look and feel of the{" "}
-            <CodeHighlight>Dropzone</CodeHighlight> component
-            <ul>
-              <li>
-                Dropzone with the <TypeHighlight>color</TypeHighlight> prop
-                defined will use this color for border, drop layer, font color
-                and ripple.
-              </li>
-              <li>
-                Dropzone with the <TypeHighlight>minHeight</TypeHighlight> prop
-                defined will use this value to define the minimum height of the
-                component.
-              </li>
-              <li>
-                Dropzone with the <TypeHighlight>background</TypeHighlight> prop
-                defined will use this value for the background. You can set nice
-                gradients or even a background image.
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneStyling />
-          </Paper>
-
-          <CodeDemoDropzoneStyling />
-        </section>
-
-        <section id="label">
-          <SubTitle content="Label" />
-          <DescParagraph>
-            You can specify a fixed label for{" "}
-            <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> component to display
-            when there isn't any files.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneLabel />
-          </Paper>
-
-          <CodeDemoDropzoneLabel />
-        </section>
-
-        <section id="ripple">
-          <SubTitle content="Ripple" />
-          <DescParagraph>
-            According to{" "}
-            <AnchorToTab href="https://m2.material.io/develop/ios/supporting/ripple">
-              Material Design
-            </AnchorToTab>
-            , the Ripple component provides a radial action in the form of a
-            visual ripple expanding outward from the user's touch. Ripple is a
-            visual form of feedback for touch events providing users a clear
-            signal that an element is being touched. In this component, a ripple
-            is displayed after 2 user actions:
-            <ul>
-              <li>When user clicks or touches the component.</li>
-              <li>Just after user dropped files.</li>
-            </ul>
-            For disabling the ripple effect you can set the{" "}
-            <TypeHighlight>disableRipple</TypeHighlight> prop to true.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneRipple />
-          </Paper>
-
-          <CodeDemoDropzoneRipple />
-        </section>
-
-        <section id="disabled">
-          <SubTitle content="Disabled Dropzone" />
-          <DescParagraph>
-            According to{" "}
-            <AnchorToTab href="https://m2.material.io/develop/ios/supporting/ripple">
-              Material Design
-            </AnchorToTab>{" "}
-            a disabled state communicates when a component or element isn’t
-            interactive, and should be deemphasized in a UI.
-            <TypeHighlight>disabled</TypeHighlight> prop to true.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneDisabled />
-          </Paper>
-
-          <CodeDemoDropzoneDisabled />
-        </section>
-
-        <section id="clickable">
-          <SubTitle content="Clickable Dropzone" />
-          <DescParagraph>
-            Dropzone with the
-            <TypeHighlight>clickable</TypeHighlight> prop set to false will not
-            open the file dialog to select files when user clicks the component.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneClickable />
-          </Paper>
-
-          <CodeDemoDropzoneClickable />
-        </section>
-
-        <section id="drop-layer">
-          <SubTitle content="Drop Layer" />
-          <DescParagraph>
-            Dropzone with the
-            <TypeHighlight>dropOnLayer</TypeHighlight> prop set to false will
-            not perform the drop operation in a layer that covers the complete
-            component container.
-            <br />
-            In this demo try to drag and drop files in both dropzones to see the
-            difference.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneDropLayer />
-          </Paper>
-
-          <CodeDemoDropzoneDropLayer />
-        </section>
-
-        <section id="add-or-replace">
-          <SubTitle content="Add or replace files" />
-          <DescParagraph>
-            There are 2 different behaviours when user selects or drops new
-            files:
-            <ul>
-              <li>
-                Dropzone with the <CodeHighlight>behaviour</CodeHighlight> set
-                to <TypeHighlight>"add"</TypeHighlight> will add the new files
-                to the current array of ExtFiles.
-              </li>
-              <li>
-                Dropzone with the <CodeHighlight>behaviour</CodeHighlight> set
-                to <TypeHighlight>"replace"</TypeHighlight> will replace the
-                current array of ExtFiles with the new ones.
-              </li>
-            </ul>
-            In this demo try to select or drop files more than once on each
-            dropzone to see the difference.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneBehaviour />
-          </Paper>
-
-          <CodeDemoDropzoneBehaviour />
-        </section>
-
-        <section id="localization">
-          <SubTitle content="Localization" />
-          <DescParagraph>
-            <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> component uses the{" "}
-            <TypeHighlight>localization</TypeHighlight> prop in the validation
-            and the upload process for setting status and messages according to
-            the language that this prop refers to.
-            <br />
-            The localization demo for this component can be found in the{" "}
-            <AnchorToTab href="/localization">localization page</AnchorToTab>.
-          </DescParagraph>
-        </section>
-
-        <section id="api">
-          <SubTitle content="API" />
-          <DescParagraph>
-            See the documentation below for a complete reference to all of the
-            props and classes available to the components mentioned here.
-            <ul>
-              <li>
-                <CodeHighlight>
-                  <AnchorToTab href="/api/dropzone">
-                    {"<Dropzone />"}
-                  </AnchorToTab>
-                </CodeHighlight>
-              </li>
-              <li>
-                <CodeHighlight>
-                  <AnchorToTab href="/api/filemosaic">
-                    {"<FileMosaic />"}
-                  </AnchorToTab>
-                </CodeHighlight>
-              </li>
-            </ul>
-          </DescParagraph>
-        </section>
-      </MainContentContainer>
-
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default DropzoneDemoPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Basic dropzone",
-    referTo: "/components/dropzone#basic-dropzone",
-  },
-  {
-    id: 1,
-    label: "Validation",
-    referTo: "/components/dropzone#validation",
-  },
-  {
-    id: 2,
-    label: "Custom validation",
-    referTo: "/components/dropzone#custom-validation",
-  },
-  {
-    id: 3,
-    label: "Uploading",
-    referTo: "/components/dropzone#uploading",
-  },
-  /*  {
-    id: 4,
-    label: "Dropzone events",
-    referTo: "/components/dropzone#dropzone-events",
-  }, */
-  {
-    id: 5,
-    label: "Action buttons",
-    referTo: "/components/dropzone#action-buttons",
-  },
-  {
-    id: 9,
-    label: "Header config",
-    referTo: "/components/dropzone#header-config",
-  },
-  {
-    id: 10,
-    label: "Footer config",
-    referTo: "/components/dropzone#footer-config",
-  },
-  {
-    id: 6,
-    label: "Styling",
-    referTo: "/components/dropzone#styling",
-  },
-  {
-    id: 14,
-    label: "Label",
-    referTo: "/components/dropzone#label",
-  },
-  {
-    id: 8,
-    label: "Ripple",
-    referTo: "/components/dropzone#ripple",
-  },
-  {
-    id: 11,
-    label: "Disabled",
-    referTo: "/components/dropzone#disabled",
-  },
-  {
-    id: 12,
-    label: "Clickable",
-    referTo: "/components/dropzone#clickable",
-  },
-  {
-    id: 13,
-    label: "Drop Layer",
-    referTo: "/components/dropzone#drop-layer",
-  },
-  {
-    id: 15,
-    label: "Add or replace",
-    referTo: "/components/dropzone#add-or-replace",
-  },
-  {
-    id: 7,
-    label: "Localization",
-    referTo: "/components/dropzone#localization",
-  },
-  {
-    id: 8,
-    label: "API",
-    referTo: "/components/dropzone#api",
-  },
-];
diff --git a/src/pages/demo/FileCardDemoPage.jsx b/src/pages/demo/FileCardDemoPage.jsx
deleted file mode 100644
index e05a53f6a7c7c4d96ba9326147e72eeeaa361d7f..0000000000000000000000000000000000000000
--- a/src/pages/demo/FileCardDemoPage.jsx
+++ /dev/null
@@ -1,446 +0,0 @@
-import * as React from "react";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import DemoFileCardBasic from "../../components/demo-components/file-card-demo/DemoFileCardBasic";
-import CodeJSFileCardBasic from "../../components/demo-components/file-card-demo/CodeJSFileCardBasic";
-import { AlertTitle, Alert, Paper } from "@mui/material";
-import DemoFileMosaicImagePreview from "../../components/demo-components/filemosaic-demo/DemoFileMosaicImagePreview";
-import CodeJSFileMosaicImagePreview from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview";
-import DemoContainerFileMosaic from "../../components/demo-components/filemosaic-demo/DemoContainerFileMosaic";
-import DemoFileMosaicDarkMode from "../../components/demo-components/filemosaic-demo/DemoFileMosaicDarkMode";
-import CodeJSFileMosaicDarkMode from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import DemoFileMosaicValidation from "../../components/demo-components/filemosaic-demo/DemoFileMosaicValidation";
-import CodeJSFileMosaicValidation from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation";
-import DemoFileMosaicUploadStatus from "../../components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus";
-import CodeJSFileMosaicUploadStatus from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus";
-import DemoFileCardActions from "../../components/demo-components/filemosaic-demo/DemoFileCradActions";
-import CodeJSFileCardActions from "../../components/demo-components/filemosaic-demo/CodeJSFileCardActions";
-import DemoFileMosaicSmartImgFit from "../../components/demo-components/filemosaic-demo/DemoFileMosaicSmartImgFit";
-import CodeJSFileMosaicSmartImgFit from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicSmartImgFit";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const FileCardDemoPage = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FileCard</MainTitle>
-        <MainParagraph>
-          File cards are compact elements that represent a file in the UI. They
-          can be used for just showing general info of the file, or either to
-          allow the user to interact with them.
-        </MainParagraph>
-        <DescParagraph>
-          This widget allow users to see information of{" "}
-          <TypeHighlight> Files</TypeHighlight> and / or trigger actions.
-        </DescParagraph>
-        <Alert severity="info">
-          While included here as a standalone component, the most common use
-          will be to display the result of the "onChange" event of{" "}
-          <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> or{" "}
-          <CodeHighlight>{"<InputButton/>"}</CodeHighlight> components, so some
-          of the behavior demonstrated here is not totally shown in context.{" "}
-        </Alert>
-        <section id="basic-filecard">
-          <SubTitle content="Basic FileCard" />
-          <DescParagraph>
-            The <CodeHighlight>FileCard</CodeHighlight> component supports
-            displaying information from a{" "}
-            <TypeHighlight>
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/API/File">
-                File
-              </AnchorToTab>
-            </TypeHighlight>{" "}
-            object or from given props.
-            <br />
-            Also, the <TypeHighlight>onDelete</TypeHighlight> prop is used to
-            remove the file selection.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic>
-            <DemoFileCardBasic />
-          </DemoContainerFileMosaic>
-          <CodeJSFileCardBasic card />
-
-          <Alert severity="info">
-            <AlertTitle> FileInputButton </AlertTitle>
-            For completeness, some of these examples include{" "}
-            <CodeHighlight>{`<FileInputButton/>`} </CodeHighlight>
-            component for allowing the user to select files. For further
-            information of this component check out the{" "}
-            <AnchorToTab href="/components/fileinputbutton">
-              FileInputButton
-            </AnchorToTab>{" "}
-            page.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> ExtFile </AlertTitle>
-            {/*  This is an info alert — <strong>check it out!</strong>
-             */}
-            <strong>ExtFile type </strong>
-            is explicity used in the
-            <strong> Typescript</strong> example and is implicity used in the{" "}
-            <strong>Javascript</strong> example for handling the metadata that
-            makes possible the information exchange between components. For
-            further information about this data type check out the{" "}
-            <AnchorToTab href="/types#extfile">ExtFile-API. </AnchorToTab>
-          </Alert>
-        </section>
-        <section id="image-preview">
-          <SubTitle content="Image preview" />
-          <DescParagraph>
-            By setting the <CodeHighlight>preview</CodeHighlight> prop to{" "}
-            <TypeHighlight>true</TypeHighlight> the component will show an image
-            preview instead of a file icon.
-            <br />
-            To acomplish this task this component will take the{" "}
-            <CodeHighlight>imageUrl</CodeHighlight>
-            prop or will read the <TypeHighlight>File</TypeHighlight> object if
-            given and if it is an image.
-            <br />
-            Finally, the <TypeHighlight>info</TypeHighlight> prop is used to
-            show the complete information of the file.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic>
-            <DemoFileMosaicImagePreview card />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicImagePreview card />
-          <Alert severity="info">
-            As you can notice, when
-            <CodeHighlight>{`imageUrl`}</CodeHighlight> prop is present, the{" "}
-            <CodeHighlight>{`preview`}</CodeHighlight> prop is not needed since
-            it has more priority.
-            <br />
-            On the other side, for displaying an image preview as a result of
-            reading an image File it is necesary to set the{" "}
-            <CodeHighlight>{`preview`}</CodeHighlight> prop, otherwise a default
-            image preview will be shown in order to save memory.
-          </Alert>
-        </section>
-        {/** VALIDATION UPLOAD AND MORE */}
-
-        <section id="validation">
-          <SubTitle content="Validation" />
-          <DescParagraph>
-            The <CodeHighlight>valid</CodeHighlight> prop can be set to{" "}
-            <TypeHighlight>true</TypeHighlight>,{" "}
-            <TypeHighlight>false</TypeHighlight> or{" "}
-            <TypeHighlight>undefined</TypeHighlight>.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic card>
-            <DemoFileMosaicValidation card />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicValidation card />
-
-          <Alert severity="info">
-            Typically, <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> or{" "}
-            <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> components set
-            this prop when validating the input from a given criteria. You can
-            see the behaviour mentioned in the following demos:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/dropzone#validation">
-                  Dropzone validation
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/fileinputbutton#validation">
-                  FileInputButton validation
-                </AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-
-        <section id="uploading">
-          <SubTitle content="Uploading status" />
-          <DescParagraph>
-            The <CodeHighlight>uploadStatus</CodeHighlight> prop can be set to{" "}
-            <TypeHighlight>"preparing"</TypeHighlight>,{" "}
-            <TypeHighlight>"uploading"</TypeHighlight>,{" "}
-            <TypeHighlight>"aborted"</TypeHighlight>,{" "}
-            <TypeHighlight>"error"</TypeHighlight> or{" "}
-            <TypeHighlight>"success"</TypeHighlight>. Also the{" "}
-            <CodeHighlight>uploadMessage</CodeHighlight> prop is used for
-            displaying the error or success message. Finally, the{" "}
-            <CodeHighlight>progress</CodeHighlight> prop can be used to show the
-            current progress of the upload process.
-            <br />
-            Each of the following examples demonstrates one state combination of
-            the FileCard component.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic card>
-            <DemoFileMosaicUploadStatus card />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicUploadStatus card />
-
-          <Alert severity="info">
-            As you can see, you have full control of the FileCard upload props.
-            You can take advantage of them to ake your own upload function and
-            show the user the progress.
-            <br /> On the other hand, you can also leverage the capability of{" "}
-            <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> and{" "}
-            <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> components
-            since they also manage the{" "}
-            <TypeHighlight>{"uploadStatus"}</TypeHighlight>
-            prop for you when upload is enabled. You can see the behaviour
-            mentioned in the following demos:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/dropzone#uploading">
-                  Dropzone upload
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/fileinputbutton#uploading">
-                  FileInputButton upload
-                </AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="actions">
-          <SubTitle content="Actions: info, delete, see, watch, download" />
-          <DescParagraph>
-            You can use the following actions.
-            <ul>
-              <li>
-                FileCard with the <CodeHighlight>onDelete</CodeHighlight> prop
-                will display a delete icon.
-              </li>
-              <li>
-                FileCard with the <CodeHighlight>info</CodeHighlight> prop will
-                display an "info" icon that will display an info layer.
-              </li>
-              <li>
-                FileCard with the <CodeHighlight>onSee</CodeHighlight> prop will
-                display the "see" button that can be used to retrieve an image
-                <TypeHighlight>URI</TypeHighlight> obtained by reading a{" "}
-                <TypeHighlight>File</TypeHighlight> object if given or just the{" "}
-                <TypeHighlight>imageUrl</TypeHighlight> prop if given. In the
-                first case, the file must be an image.
-              </li>
-              <li>
-                FileCard with the <CodeHighlight>onWatch</CodeHighlight> prop
-                will display the "play" icon that can be used to retrieve the
-                video as a <TypeHighlight>File</TypeHighlight> object if given
-                or just the <TypeHighlight>videoUrl</TypeHighlight> prop if
-                given. The file must be an video.
-              </li>
-              <li>
-                FileCard with the <CodeHighlight>downloadUrl</CodeHighlight>{" "}
-                prop will display the "download" icon that can be used to start
-                the download. If the <CodeHighlight>onDownload</CodeHighlight>{" "}
-                prop is given, the "download" icon will also be visible, but it
-                will be taken as the user will perform their own download.
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              alignItems: "center",
-              justifyContent: "center",
-              gap: "7px",
-              flexWrap: "wrap",
-              width: "100%",
-              //padding: "25px 0",
-              flexDirection: "row",
-            }}
-          >
-            <DemoFileCardActions card />
-          </Paper>
-          <CodeJSFileCardActions card />
-          <Alert severity="info">
-            <AlertTitle>
-              {" "}
-              <strong>downloadUrl</strong> and <strong>onDownload</strong> props
-            </AlertTitle>
-            {/*  This is an info alert — <strong>check it out!</strong>
-             */}
-            When only <CodeHighlight>downloadUrl</CodeHighlight> is specified,
-            FileCard will perform the download only for{" "}
-            <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy">
-              same-origin URLs
-            </AnchorToTab>{" "}
-            since it uses the{" "}
-            <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes">
-              anchor
-            </AnchorToTab>{" "}
-            tag under the hood.
-            <br />
-            If the resource is located in any other host, it will open a new tab
-            and display the content.
-            <br />
-            For avoiding that behaviour you can do you own download
-            implementation by overriding the download function by setting the{" "}
-            <CodeHighlight>onDownload</CodeHighlight> prop.
-            <br />
-            You can check an example here:
-            <ul>
-              <li>
-                <AnchorToTab href="/file-download#differenthost2">
-                  {"Download a File from different host"}
-                </AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="dark-mode">
-          <SubTitle content="Dark mode and Elevation" />
-          <DescParagraph>
-            The <CodeHighlight>FileCard</CodeHighlight> component supports dark
-            mode by setting the prop <TypeHighlight>darkMode</TypeHighlight> to{" "}
-            <TypeHighlight>true</TypeHighlight>. The elevation can be used to
-            establish a hierarchy between other content. In practical terms, the
-            elevation controls the size of the shadow applied to the surface. In
-            dark mode, raising the elevation also makes the surface lighter.
-          </DescParagraph>
-
-          <div
-            style={{
-              display: "flex",
-              flexWrap: "wrap",
-              width: "100%",
-              padding: "25px 0",
-            }}
-          >
-            <DemoFileMosaicDarkMode card />
-          </div>
-
-          <CodeJSFileMosaicDarkMode card />
-        </section>
-        <section id="smart-image-fit">
-          <SubTitle content="Smart image fit" />
-          <DescParagraph>
-            <CodeHighlight>FileCard</CodeHighlight> with
-            <TypeHighlight>smartImgFit</TypeHighlight> prop will display image
-            according to its heigh and width.
-            <br />
-            Image with height greater than its width has a "portrait"
-            orientation. Otherwise it has a "landscape" orientation.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic>
-            <DemoFileMosaicSmartImgFit card />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicSmartImgFit card />
-        </section>
-        <section id="api">
-          <SubTitle content="API" />
-          <DescParagraph>
-            See the documentation below for a complete reference to all of the
-            props available to the components mentioned here.
-          </DescParagraph>
-          <ul>
-            <li>
-              <AnchorToTab href="/api/filecard">{"<FileCard/>"}</AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/fileinputbuttom">
-                {"<FileInputButton/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/fullscreen">
-                {"<FullScreen/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/imagepreview">
-                {"<ImagePreview/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/videopreview">
-                {"<VideoPreview/>"}
-              </AnchorToTab>
-            </li>
-          </ul>
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileCardDemoPage;
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Basic file card",
-    referTo: "/components/filecard#basic-filecard",
-  },
-  {
-    id: 1,
-    label: "Image Preview",
-    referTo: "/components/filecard#image-preview",
-  },
-  {
-    id: 2,
-    label: "Validation",
-    referTo: "/components/filecard#validation",
-  },
-  {
-    id: 3,
-    label: "Uploading",
-    referTo: "/components/filecard#uploading",
-  },
-  {
-    id: 4,
-    label: "Actions",
-    referTo: "/components/filecard#actions",
-  },
-  {
-    id: 5,
-    label: "Dark mode",
-    referTo: "/components/filecard#dark-mode",
-  },
-  {
-    id: 7,
-    label: "Smart image fit",
-    referTo: "/components/filemosaic#smart-image-fit",
-  },
-  {
-    id: 6,
-    label: "API",
-    referTo: "/components/filecard#api",
-  },
-];
diff --git a/src/pages/demo/FileInputButtonDemoPage.tsx b/src/pages/demo/FileInputButtonDemoPage.tsx
deleted file mode 100644
index 6060193bbaab0b631f986dc4f3ed231fc1ee3cbd..0000000000000000000000000000000000000000
--- a/src/pages/demo/FileInputButtonDemoPage.tsx
+++ /dev/null
@@ -1,545 +0,0 @@
-import Alert from "@mui/material/Alert/Alert";
-import AlertTitle from "@mui/material/AlertTitle/AlertTitle";
-import Paper from "@mui/material/Paper";
-import * as React from "react";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import RightMenu from "../../components/RightMenu/RightMenu";
-
-import BasicDropzoneCodeJS from "../../components/demo-components/dropzone-demo/BasicDropzoneCodeJS";
-
-import DemoDropzoneStyling from "../../components/demo-components/dropzone-demo/DemoDropzoneStyling";
-import DemoDropzoneBehaviour from "../../components/demo-components/dropzone-demo/DemoDropzoneBehaviour";
-import DemoDropzoneLabel from "../../components/demo-components/dropzone-demo/DemoDropzoneLabel";
-import DemoDropzoneDisabled from "../../components/demo-components/dropzone-demo/DemoDropzoneDisabled";
-import DemoDropzoneRipple from "../../components/demo-components/dropzone-demo/DemoDropzoneRipple";
-import CodeDemoDropzoneStyling from "../../components/demo-components/dropzone-demo/CodeDropzoneDemoStyling";
-import CodeDemoDropzoneRipple from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneRipple";
-import CodeDemoDropzoneDisabled from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneDisabled";
-import CodeDemoDropzoneBehaviour from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneBehaviour";
-import CodeDemoDropzoneLabel from "../../components/demo-components/dropzone-demo/CodeDropzoneDemoLabel";
-import BasicDemoDropzone from "../../components/demo-components/dropzone-demo/BasicDropzoneDemo";
-import DemoDropzoneValidation from "../../components/demo-components/dropzone-demo/DemoDropzoneValidation";
-import CodeDemoDropzoneValidation from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneValidation";
-import DemoDropzoneCustomValidation from "../../components/demo-components/dropzone-demo/DemoDropzoneCustomValidation";
-import CodeDemoDropzoneCustomValidation from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneCustomValidation";
-import DemoDropzoneUploading from "../../components/demo-components/dropzone-demo/DemoDropzoneUploading";
-import CodeDemoDropzoneUploading from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneUploading";
-import DemoDropzoneActionButtons from "../../components/demo-components/dropzone-demo/DemoDropzoneActionButtons";
-import CodeDemoDropzoneActionButtons from "../../components/demo-components/dropzone-demo/CodeDemoDropzoneActionButtons";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-interface FileInputButtonDemoPageProps {}
-const FileInputButtonDemoPage: React.FC<FileInputButtonDemoPageProps> = (
-  props: FileInputButtonDemoPageProps
-) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FileInputButton</MainTitle>
-
-        <MainParagraph>
-          The default <CodeHighlight>{'<input type="file"/>'}</CodeHighlight> is
-          just a quite boring button. That's why we present the
-          <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> component which
-          as an special <CodeHighlight>input</CodeHighlight> enhanced by the
-          ability to allow users to choose files from a file dialog and also to
-          validate an upload them.
-        </MainParagraph>
-
-        <DescParagraph>
-          The widget is useful for handling one{" "}
-          <TypeHighlight>File</TypeHighlight> or a list of{" "}
-          <TypeHighlight>Files</TypeHighlight> in one or more of these
-          scenarios:
-          <ol>
-            <li>The file(s) must be chosen from a File Dialog</li>
-            <li>
-              The file(s) must be validated or not. If validation is required,
-              it can be done by taking into account a predefined set of allowed{" "}
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept">
-                Common MIME Types
-              </AnchorToTab>
-              ; specifiying the max file size (in bytes) and/or the max amount
-              of files.
-            </li>
-            <li>The file(s) must be uploaded somewhere in the internet.</li>
-          </ol>
-        </DescParagraph>
-
-        <DescParagraph>
-          This component works perfectly with{" "}
-          <CodeHighlight>{"<FileMosaic/>"}</CodeHighlight> and
-          <CodeHighlight>{"<FileCard/>"}</CodeHighlight> components for
-          displaying the files.
-        </DescParagraph>
-
-        <section id="basic-fileinputbutton">
-          <SubTitle content="Basic FileInputButton" />
-          <DescParagraph>
-            In this demo we set the{" "}
-            <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> with the
-            minimum props that allows you to get your task done fast. These
-            props are <CodeHighlight>onChange</CodeHighlight> and{" "}
-            <CodeHighlight>value</CodeHighlight>.
-          </DescParagraph>
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <BasicDemoDropzone button />
-          </Paper>
-          <BasicDropzoneCodeJS button />
-          <Alert severity="info">
-            <AlertTitle> FileCard </AlertTitle>
-            For completeness, these examples include{" "}
-            <CodeHighlight>{`<FileCard/>`} </CodeHighlight>
-            component for showing the files selected by the user with minimun
-            props too. For further information of this component check out the{" "}
-            <AnchorToTab href="/components/filecard">FileCard</AnchorToTab>{" "}
-            page.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> ExtFile </AlertTitle>
-            {/*  This is an info alert — <strong>check it out!</strong>
-             */}
-            <strong>ExtFile type </strong>
-            is explicity used in the
-            <strong> Typescript</strong> example and is implicity used in the{" "}
-            <strong>Javascript</strong> example for handling the metadata that
-            makes possible the information exchange between components. For
-            further information about this data type check out the{" "}
-            <AnchorToTab href="/types#extfile">ExtFile-API. </AnchorToTab>
-          </Alert>
-        </section>
-
-        <section id="validation">
-          <SubTitle content="Validation" />
-          <DescParagraph>
-            In this demo you can see how{" "}
-            <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> component
-            covers the following features when it comes to validating files.
-            <ol>
-              <li>Accepting specific file types.</li>
-              <li>Accepting an specific number of files.</li>
-              <li>Accepting files with an specific size (in bytes).</li>
-            </ol>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneValidation button />
-          </Paper>
-          <CodeDemoDropzoneValidation button />
-          <Alert severity="info">
-            <AlertTitle> Removing non valid Files </AlertTitle>
-            We call "clean" to the operation of removing non valid files. Apart
-            from deleting them individually, there are some other ways in which
-            you can remove all of them. You can try the following props in the{" "}
-            {"<FileInputButton/>"} component:
-            <ul>
-              <li>
-                <TypeHighlight>actionButtons</TypeHighlight> : By setting this
-                prop properly, a button will be visible and will trigger the
-                "clean" operation (This is the way used in this demo).
-              </li>
-              <li>
-                <TypeHighlight>autoClean</TypeHighlight> : By setting this prop,
-                non valid files will be automatically discarted and will not be
-                given in the <CodeHighlight>onChange</CodeHighlight> event.
-              </li>
-            </ul>
-          </Alert>
-        </section>
-
-        <section id="custom-validation">
-          <SubTitle content="Custom validation" />
-          <DescParagraph>
-            You can also override the FileInputButton validation operation by
-            giving a custom validation function that must fit the following
-            signature:{" "}
-            <CodeHighlight>
-              {"validator?: (f: "}
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/API/File">
-                File
-              </AnchorToTab>
-              {") => "}
-              <AnchorToTab href="/types#custom-validate-file-response">
-                ValidateFileResponse
-              </AnchorToTab>
-            </CodeHighlight>
-            . Custom validator can work together with{" "}
-            <TypeHighlight>accept</TypeHighlight>,{" "}
-            <TypeHighlight>maxFileSize</TypeHighlight> and{" "}
-            <TypeHighlight>maxFiles</TypeHighlight> props.
-          </DescParagraph>
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneCustomValidation button />
-          </Paper>
-          <CodeDemoDropzoneCustomValidation button />
-        </section>
-
-        <section id="uploading">
-          <SubTitle content="Uploading" />
-          <DescParagraph>
-            For uploading , the prop <TypeHighlight>uploadConfig</TypeHighlight>{" "}
-            must be given. This prop recieves an object in which you can specify
-            the HTTP method, the url, the headers and also extra data to be
-            uploaded. The type definition for the prop mentioned can be found{" "}
-            <AnchorToTab href="/types#UploadConfig">here</AnchorToTab>.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneUploading button />
-          </Paper>
-
-          <CodeDemoDropzoneUploading button />
-          <Alert severity="info">
-            <AlertTitle> Server response </AlertTitle>
-            For uploading files through files-ui, server must return the
-            response with the structure of the{" "}
-            <TypeHighlight>
-              {" "}
-              <AnchorToTab href="/types#ServerResponse">
-                ServerResponse
-              </AnchorToTab>
-            </TypeHighlight>{" "}
-            type.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> "fakeUpload" </AlertTitle>
-            By giving this prop, the {"<FileInputButton/>"} component will
-            simulate the upload operation by randomly setting the upload status
-            and message on each uploadable{" "}
-            <TypeHighlight>ExtFile</TypeHighlight>. It will also set a fake
-            progress.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> Upload config properties </AlertTitle>
-            Apart from the properties you can see in the example above, there
-            are more of them that can make the upload process to behave
-            differently.
-            <ul>
-              <li>
-                <TypeHighlight>autoUpload</TypeHighlight> : By setting this prop
-                to true, the upload process will start automatically just after
-                the user drops or selects files.
-              </li>
-              <li>
-                <TypeHighlight>cleanOnUpload</TypeHighlight> : By setting this
-                prop, you can control whether the upload process should "clean"
-                the non valid files before uploading or not. By default this
-                value is true.
-              </li>
-            </ul>
-            More information about the uploadConfig type structure can be found{" "}
-            <AnchorToTab href="/types#UploadConfig">here</AnchorToTab>.
-          </Alert>
-        </section>
-
-        <section id="action-buttons">
-          <SubTitle content="FileInputButton with action buttons" />
-          <DescParagraph>
-            If you need to display buttons that trigger the default events in
-            the <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> component,
-            you can do it by adding the{" "}
-            <TypeHighlight>actionButtons</TypeHighlight> prop. This will add
-            buttons to the top or to the bottom of this component.
-            <ul>
-              <li>
-                FileInputButton with the{" "}
-                <TypeHighlight>actionButtons.cleanButton</TypeHighlight> prop
-                defined will display a button which triggers the clean process.
-                <br />
-                This button will be visible only{" "}
-                <strong>when the "upload" process is not active</strong>.
-              </li>
-              <li>
-                FileInputButton with the{" "}
-                <TypeHighlight>actionButtons.deleteButton</TypeHighlight> prop
-                defined will display a button which deletes all files.
-                <br />
-                this button will be visible only{" "}
-                <strong>when the "upload" process is not active</strong>.
-              </li>
-              <li>
-                FileInputButton with the{" "}
-                <TypeHighlight>actionButtons.uploadButton</TypeHighlight> prop
-                defined will display a button which starts the upload process.
-                This button will <strong>not</strong> be visible{" "}
-                <strong>during the "upload" process</strong>.
-              </li>
-              <li>
-                FileInputButton with the{" "}
-                <TypeHighlight>actionButtons.abortButton</TypeHighlight> prop
-                defined will display a button which stops the upload process.
-                <br />
-                This button will be visible only{" "}
-                <strong>during the "upload" process</strong>.
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneActionButtons button />
-          </Paper>
-
-          <CodeDemoDropzoneActionButtons button />
-        </section>
-
-        <section id="styling">
-          <SubTitle content="Styling FileInputButton" />
-          <DescParagraph>
-            You can use change the look and feel of the{" "}
-            <CodeHighlight>FileInputButton</CodeHighlight> component
-            <ul>
-              <li>
-                FileInputButton with the <TypeHighlight>color</TypeHighlight>{" "}
-                prop defined will use this color as the theme color.
-              </li>
-              <li>
-                FileInputButton with the{" "}
-                <TypeHighlight>textColor</TypeHighlight> prop defined will use
-                this value to define the color of the text to be displayed.
-              </li>
-              <li>
-                FileInputButton with the <TypeHighlight>variant</TypeHighlight>{" "}
-                prop defined can display the button in 3 different variants:
-                contained(default), outlined and text.
-              </li>
-              <li>
-                FileInputButton with the{" "}
-                <TypeHighlight>textTransform</TypeHighlight> prop defined can
-                display the text with a text transform style (e.g. "uppercase").
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneStyling button />
-          </Paper>
-
-          <CodeDemoDropzoneStyling button />
-        </section>
-
-        <section id="label">
-          <SubTitle content="Label" />
-          <DescParagraph>
-            You can specify a fixed label for{" "}
-            <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> component.
-            <br />
-            If not given, the default label is "Browse...".
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneLabel button />
-          </Paper>
-
-          <CodeDemoDropzoneLabel button />
-        </section>
-
-        <section id="ripple">
-          <SubTitle content="Ripple" />
-          <DescParagraph>
-            According to{" "}
-            <AnchorToTab href="https://m2.material.io/develop/ios/supporting/ripple">
-              Material Design
-            </AnchorToTab>
-            , the Ripple component provides a radial action in the form of a
-            visual ripple expanding outward from the user's touch. Ripple is a
-            visual form of feedback for touch events providing users a clear
-            signal that an element is being touched. In this component, a ripple
-            is displayed When user clicks or touches the component.
-            <br />
-            For disabling the ripple effect you can set the{" "}
-            <TypeHighlight>disableRipple</TypeHighlight> prop to true.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneRipple button />
-          </Paper>
-
-          <CodeDemoDropzoneRipple button />
-        </section>
-
-        <section id="disabled">
-          <SubTitle content="Disabled FileInputButton" />
-          <DescParagraph>
-            According to{" "}
-            <AnchorToTab href="https://m2.material.io/develop/ios/supporting/ripple">
-              Material Design
-            </AnchorToTab>{" "}
-            a disabled state communicates when a component or element isn’t
-            interactive, and should be deemphasized in a UI.
-            <TypeHighlight>disabled</TypeHighlight> prop to true.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneDisabled button />
-          </Paper>
-
-          <CodeDemoDropzoneDisabled button />
-        </section>
-
-        <section id="add-or-replace">
-          <SubTitle content="Add or replace files" />
-          <DescParagraph>
-            There are 2 different behaviours when user selects or drops new
-            files:
-            <ul>
-              <li>
-                Dropzone with the <CodeHighlight>behaviour</CodeHighlight> set
-                to <TypeHighlight>"add"</TypeHighlight> will add the new files
-                to the current array of ExtFiles.
-              </li>
-              <li>
-                Dropzone with the <CodeHighlight>behaviour</CodeHighlight> set
-                to <TypeHighlight>"replace"</TypeHighlight> will replace the
-                current array of ExtFiles with the new ones.
-              </li>
-            </ul>
-            In this demo try to select files more than once on each
-            fileinputbutton to see the difference.
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <DemoDropzoneBehaviour button />
-          </Paper>
-
-          <CodeDemoDropzoneBehaviour button />
-        </section>
-
-        <section id="localization">
-          <SubTitle content="Localization" />
-          <DescParagraph>
-            Although the <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight>{" "}
-            allows full control of label, this component uses the{" "}
-            <TypeHighlight>localization</TypeHighlight> prop in the validation
-            and the upload process for setting status and messages according to
-            the language that this prop refers to.
-            <br />
-            The localization demo for this component can be found in the{" "}
-            <AnchorToTab href="/localization">localization page</AnchorToTab>.
-          </DescParagraph>
-        </section>
-
-        <section id="api">
-          <SubTitle content="API" />
-          <DescParagraph>
-            See the documentation below for a complete reference to all of the
-            props and classes available to the components mentioned here.
-            <ul>
-              <li>
-                <CodeHighlight>
-                  <AnchorToTab href="/api/fileinputbutton">
-                    {"<FileInputButton />"}
-                  </AnchorToTab>
-                </CodeHighlight>
-              </li>
-              <li>
-                <CodeHighlight>
-                  <AnchorToTab href="/api/filecard">
-                    {"<FileCard />"}
-                  </AnchorToTab>
-                </CodeHighlight>
-              </li>
-            </ul>
-          </DescParagraph>
-        </section>
-      </MainContentContainer>
-
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileInputButtonDemoPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Basic file input",
-    referTo: "/components/fileinputbutton#basic-fileinputbutton",
-  },
-  {
-    id: 1,
-    label: "Validation",
-    referTo: "/components/fileinputbutton#validation",
-  },
-  {
-    id: 2,
-    label: "Custom validation",
-    referTo: "/components/fileinputbutton#custom-validation",
-  },
-  {
-    id: 3,
-    label: "Uploading",
-    referTo: "/components/fileinputbutton#uploading",
-  },
-  {
-    id: 5,
-    label: "Action buttons",
-    referTo: "/components/fileinputbutton#action-buttons",
-  },
-
-  {
-    id: 6,
-    label: "Styling",
-    referTo: "/components/fileinputbutton#styling",
-  },
-  {
-    id: 14,
-    label: "Label",
-    referTo: "/components/fileinputbutton#label",
-  },
-  {
-    id: 8,
-    label: "Ripple",
-    referTo: "/components/fileinputbutton#ripple",
-  },
-  {
-    id: 11,
-    label: "Disabled",
-    referTo: "/components/fileinputbutton#disabled",
-  },
-
-  {
-    id: 15,
-    label: "Add or replace",
-    referTo: "/components/fileinputbutton#add-or-replace",
-  },
-  {
-    id: 7,
-    label: "Localization",
-    referTo: "/components/fileinputbutton#localization",
-  },
-  {
-    id: 8,
-    label: "API",
-    referTo: "/components/fileinputbutton#api",
-  },
-];
diff --git a/src/pages/demo/FileMosaicDemoPage.jsx b/src/pages/demo/FileMosaicDemoPage.jsx
deleted file mode 100644
index 4ca66f30ca8da67cf23579adf82ff66d503e7547..0000000000000000000000000000000000000000
--- a/src/pages/demo/FileMosaicDemoPage.jsx
+++ /dev/null
@@ -1,465 +0,0 @@
-import { Alert, AlertTitle, Paper } from "@mui/material";
-import * as React from "react";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-
-import CodeJSFileMosaicBasic from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicBasic";
-import DemoFileMosaicBasic from "../../components/demo-components/filemosaic-demo/DemoFileMosaicBasic";
-import DemoFileMosaicImagePreview from "../../components/demo-components/filemosaic-demo/DemoFileMosaicImagePreview";
-import CodeJSFileMosaicImagePreview from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview";
-import DemoContainerFileMosaic from "../../components/demo-components/filemosaic-demo/DemoContainerFileMosaic";
-import CodeJSFileMosaicValidation from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation";
-import DemoFileMosaicValidation from "../../components/demo-components/filemosaic-demo/DemoFileMosaicValidation";
-import CodeJSFileMosaicUploadStatus from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus";
-import DemoFileMosaicUploadStatus from "../../components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus";
-//import DemoFileMosaicLocalization from "../../components/demo-components/localization/DemoFileMosaicLocalization";
-//import CodeJSFileMosaicLocalization from "../../components/demo-components/localization/CodeJSFileMosaicLocalization";
-import DemoFileMosaicDarkMode from "../../components/demo-components/filemosaic-demo/DemoFileMosaicDarkMode";
-import CodeJSFileMosaicDarkMode from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode";
-//import DemoFileMosaicFileIcons from "../../components/demo-components/filemosaic-demo/DemoFileMosaicFileIcons";
-import DemoFileCardActions from "../../components/demo-components/filemosaic-demo/DemoFileCradActions";
-import CodeJSFileCardActions from "../../components/demo-components/filemosaic-demo/CodeJSFileCardActions";
-import DemoFileMosaicSmartImgFit from "../../components/demo-components/filemosaic-demo/DemoFileMosaicSmartImgFit";
-import CodeJSFileMosaicSmartImgFit from "../../components/demo-components/filemosaic-demo/CodeJSFileMosaicSmartImgFit";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const FileMosaicDemoPage = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FileMosaic</MainTitle>
-        <MainParagraph>
-          File mosaics are compact elements that represent a file in the UI.
-          They can be used for just showing general info of the file, or either
-          to allow the user to interact with them.
-        </MainParagraph>
-        <DescParagraph>
-          This widget allow users to see information of{" "}
-          <TypeHighlight> Files</TypeHighlight> and / or trigger actions.
-        </DescParagraph>
-        <Alert severity="info">
-          While included here as a standalone component, the most common use
-          will be to display the result of the "onChange" event of{" "}
-          <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> or{" "}
-          <CodeHighlight>{"<InputButton/>"}</CodeHighlight> components, so some
-          of the behavior demonstrated here is not totally shown in context.{" "}
-        </Alert>
-        <section id="basic-filemosaic">
-          <SubTitle content="Basic FileMosaic" />
-          <DescParagraph>
-            The <CodeHighlight>FileMosaic</CodeHighlight> component supports
-            displaying information from a{" "}
-            <TypeHighlight>
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/API/File">
-                File
-              </AnchorToTab>
-            </TypeHighlight>{" "}
-            object or from given props.
-            <br />
-            Also, the <TypeHighlight>onDelete</TypeHighlight> prop is used to
-            remove the file selection.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic>
-            <DemoFileMosaicBasic />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicBasic />
-
-          <Alert severity="info">
-            <AlertTitle> FileInputButton </AlertTitle>
-            For completeness, some of these examples include{" "}
-            <CodeHighlight>{`<FileInputButton/>`} </CodeHighlight>
-            component for allowing the user to select files. For further
-            information of this component check out the{" "}
-            <AnchorToTab href="/components/fileinputbutton">
-              FileInputButton
-            </AnchorToTab>{" "}
-            page.
-          </Alert>
-          <br />
-          <Alert severity="info">
-            <AlertTitle> ExtFile </AlertTitle>
-            {/*  This is an info alert — <strong>check it out!</strong>
-             */}
-            <strong>ExtFile type </strong>
-            is explicity used in the
-            <strong> Typescript</strong> example and is implicity used in the{" "}
-            <strong>Javascript</strong> example for handling the metadata that
-            makes possible the information exchange between components. For
-            further information about this data type check out the{" "}
-            <AnchorToTab href="/types#extfile">ExtFile-API. </AnchorToTab>
-          </Alert>
-        </section>
-
-        <section id="image-preview">
-          <SubTitle content="Image preview" />
-          <DescParagraph>
-            By setting the <CodeHighlight>preview</CodeHighlight> prop to{" "}
-            <TypeHighlight>true</TypeHighlight> the component will show an image
-            preview instead of a file icon.
-            <br />
-            To acomplish this task this component will take the{" "}
-            <CodeHighlight>imageUrl</CodeHighlight>
-            prop or will read the <TypeHighlight>File</TypeHighlight> object if
-            given and if it is an image.
-            <br />
-            Finally, the <TypeHighlight>info</TypeHighlight> prop is used to
-            show the complete information of the file.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic>
-            <DemoFileMosaicImagePreview />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicImagePreview />
-          <Alert severity="info">
-            As you can notice, when
-            <CodeHighlight>{`imageUrl`}</CodeHighlight> prop is present, the{" "}
-            <CodeHighlight>{`preview`}</CodeHighlight> prop is not needed since
-            it has more priority.
-            <br />
-            On the other side, for displaying an image preview as a result of
-            reading an image File it is necesary to set the{" "}
-            <CodeHighlight>{`preview`}</CodeHighlight> prop, otherwise a default
-            image preview will be shown in order to save memory.
-          </Alert>
-        </section>
-
-        <section id="validation">
-          <SubTitle content="Validation" />
-          <DescParagraph>
-            The <CodeHighlight>valid</CodeHighlight> prop can be set to{" "}
-            <TypeHighlight>true</TypeHighlight>,{" "}
-            <TypeHighlight>false</TypeHighlight> or{" "}
-            <TypeHighlight>undefined</TypeHighlight>.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic>
-            <DemoFileMosaicValidation />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicValidation />
-          <Alert severity="info">
-            Typically, <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> or{" "}
-            <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> components set
-            this prop when validating the input from a given criteria. You can
-            see the behaviour mentioned in the following demos:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/dropzone#validation">
-                  Dropzone validation
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/fileinputbutton#validation">
-                  FileInputButton validation
-                </AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-
-        <section id="uploading">
-          <SubTitle content="Uploading status" />
-          <DescParagraph>
-            The <CodeHighlight>uploadStatus</CodeHighlight> prop can be set to{" "}
-            <TypeHighlight>"preparing"</TypeHighlight>,{" "}
-            <TypeHighlight>"uploading"</TypeHighlight>,{" "}
-            <TypeHighlight>"aborted"</TypeHighlight>,{" "}
-            <TypeHighlight>"error"</TypeHighlight> or{" "}
-            <TypeHighlight>"success"</TypeHighlight>. Also the{" "}
-            <CodeHighlight>uploadMessage</CodeHighlight> prop is used for
-            displaying the error or success message. Finally, the{" "}
-            <CodeHighlight>progress</CodeHighlight> prop can be used to show the
-            current progress of the upload process.
-            <br />
-            Each of the following examples demonstrates one state combination of
-            the FileMosaic component.
-          </DescParagraph>
-
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              alignItems: "center",
-              justifyContent: "center",
-              flexDirection: "column",
-              gap: "7px",
-            }}
-          >
-            <DemoFileMosaicUploadStatus />
-          </Paper>
-
-          <CodeJSFileMosaicUploadStatus />
-
-          <Alert severity="info">
-            As you can see, you have full control of the FileMosaic upload
-            props. You can take advantage of them to ake your own upload
-            function and show the user the progress.
-            <br /> On the other hand, you can also leverage the capability of{" "}
-            <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> and{" "}
-            <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> components
-            since they also manage the{" "}
-            <TypeHighlight>{"uploadStatus"}</TypeHighlight>
-            prop for you when upload is enabled. You can see the behaviour
-            mentioned in the following demos:
-            <ul>
-              <li>
-                <AnchorToTab href="/components/dropzone#uploading">
-                  Dropzone upload
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/components/fileinputbutton#uploading">
-                  FileInputButton upload
-                </AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="actions">
-          <SubTitle content="Actions: info, delete, see, watch, download" />
-          <DescParagraph>
-            You can use the following actions.
-            <ul>
-              <li>
-                FileMosaic with the <CodeHighlight>onDelete</CodeHighlight> prop
-                will display a delete icon.
-              </li>
-              <li>
-                FileMosaic with the <CodeHighlight>info</CodeHighlight> prop
-                will display an "info" icon that will display an info layer.
-              </li>
-              <li>
-                FileMosaic with the <CodeHighlight>onSee</CodeHighlight> prop
-                will display the "see" button that can be used to retrieve an
-                image <TypeHighlight>URI</TypeHighlight> obtained by reading a{" "}
-                <TypeHighlight>File</TypeHighlight> object if given or just the{" "}
-                <TypeHighlight>imageUrl</TypeHighlight> prop if given. In the
-                first case, the file must be an image.
-              </li>
-              <li>
-                FileMosaic with the <CodeHighlight>onWatch</CodeHighlight> prop
-                will display the "play" icon that can be used to retrieve the
-                video as a <TypeHighlight>File</TypeHighlight> object if given
-                or just the <TypeHighlight>videoUrl</TypeHighlight> prop if
-                given. The file must be an video.
-              </li>
-              <li>
-                FileMosaic with the <CodeHighlight>downloadUrl</CodeHighlight>{" "}
-                prop will display the "download" icon that can be used to start
-                the download. If the <CodeHighlight>onDownload</CodeHighlight>{" "}
-                prop is given, the "download" icon will also be visible, but it
-                will be taken as the user will perform their own download.
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              alignItems: "center",
-              justifyContent: "center",
-              gap: "7px",
-              flexWrap: "wrap",
-              width: "100%",
-              //padding: "25px 0",
-              flexDirection: "row",
-            }}
-          >
-            <DemoFileCardActions />
-          </Paper>
-          <CodeJSFileCardActions />
-          <Alert severity="info">
-            <AlertTitle>
-              {" "}
-              <strong>downloadUrl</strong> and <strong>onDownload</strong> props
-            </AlertTitle>
-            {/*  This is an info alert — <strong>check it out!</strong>
-             */}
-            When only <CodeHighlight>downloadUrl</CodeHighlight> is specified,
-            FileMosaic will perform the download only for{" "}
-            <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy">
-              same-origin URLs
-            </AnchorToTab>{" "}
-            since it uses the{" "}
-            <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes">
-              anchor
-            </AnchorToTab>{" "}
-            tag under the hood.
-            <br />
-            If the resource is located in any other host, it will open a new tab
-            and display the content.
-            <br />
-            For avoiding that behaviour you can do you own download
-            implementation by overriding the download function by setting the{" "}
-            <CodeHighlight>onDownload</CodeHighlight> prop.
-            <br />
-            You can check an example here:
-            <ul>
-              <li>
-                <AnchorToTab href="/file-download#differenthost2">
-                  {"Download a File from different host"}
-                </AnchorToTab>
-              </li>
-            </ul>
-          </Alert>
-        </section>
-        <section id="dark-mode">
-          <SubTitle content="Dark mode" />
-          <DescParagraph>
-            The <CodeHighlight>FileMosaic</CodeHighlight> component supports
-            dark mode by setting the prop{" "}
-            <TypeHighlight>darkMode</TypeHighlight> to{" "}
-            <TypeHighlight>true</TypeHighlight>.
-          </DescParagraph>
-
-          <Paper
-            variant="outlined"
-            style={{
-              //padding: "25px",
-              display: "flex",
-              alignItems: "center",
-              justifyContent: "center",
-              width: "100%",
-            }}
-          >
-            <DemoFileMosaicDarkMode />
-          </Paper>
-
-          <CodeJSFileMosaicDarkMode />
-        </section>
-
-        <section id="smart-image-fit">
-          <SubTitle content="Smart image fit" />
-          <DescParagraph>
-            <CodeHighlight>FileMosaic</CodeHighlight> with
-            <TypeHighlight>smartImgFit</TypeHighlight> prop will display image
-            according to its heigh and width.
-            <br />
-            Image with height greater than its width has a "portrait"
-            orientation. Otherwise it has a "landscape" orientation.
-          </DescParagraph>
-
-          <DemoContainerFileMosaic>
-            <DemoFileMosaicSmartImgFit />
-          </DemoContainerFileMosaic>
-
-          <CodeJSFileMosaicSmartImgFit />
-        </section>
-
-        <section id="api">
-          <SubTitle content="API" />
-          <DescParagraph>
-            See the documentation below for a complete reference to all of the
-            props available to the components mentioned here.
-          </DescParagraph>
-          <ul>
-            <li>
-              <AnchorToTab href="/api/filemosaic">
-                {"<FileMosaic/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/fileinputbuttom">
-                {"<FileInputButton/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/fullscreen">
-                {"<FullScreen/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/imagepreview">
-                {"<ImagePreview/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/videopreview">
-                {"<VideoPreview/>"}
-              </AnchorToTab>
-            </li>
-          </ul>
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileMosaicDemoPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Basic file mosaic",
-    referTo: "/components/filemosaic#basic-filemosaic",
-  },
-  {
-    id: 1,
-    label: "Image Preview",
-    referTo: "/components/filemosaic#image-preview",
-  },
-  {
-    id: 2,
-    label: "Validation",
-    referTo: "/components/filemosaic#validation",
-  },
-  {
-    id: 3,
-    label: "Uploading",
-    referTo: "/components/filemosaic#uploading",
-  },
-  {
-    id: 4,
-    label: "Actions",
-    referTo: "/components/filemosaic#actions",
-  },
-  {
-    id: 5,
-    label: "Dark mode",
-    referTo: "/components/filemosaic#dark-mode",
-  },
-  {
-    id: 7,
-    label: "Smart image fit",
-    referTo: "/components/filemosaic#smart-image-fit",
-  },
-  {
-    id: 6,
-    label: "API",
-    referTo: "/components/filemosaic#api",
-  },
-];
diff --git a/src/pages/demo/FullScreenDemoPage.tsx b/src/pages/demo/FullScreenDemoPage.tsx
deleted file mode 100644
index 18c088163ebb6112aa277e3f4cf44c4e0362dcd8..0000000000000000000000000000000000000000
--- a/src/pages/demo/FullScreenDemoPage.tsx
+++ /dev/null
@@ -1,165 +0,0 @@
-import { Alert, Paper } from "@mui/material";
-import * as React from "react";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import CodeDemoFullScrrenImg from "../../components/demo-components/fullsceen/CodeDemoFullScreenImg";
-import CodeDemoFullScrrenVid from "../../components/demo-components/fullsceen/CodeDemoFullScreenVid";
-import DemoFullScreenImg from "../../components/demo-components/fullsceen/DemoFullScreenImg";
-import DemoFullScreenVid from "../../components/demo-components/fullsceen/DemoFullScreenVid";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import { scrollHandler } from "../../utils/scrollHandler";
-interface FullScreenDemoPageProps {}
-const FullScreenDemoPage: React.FC<FullScreenDemoPageProps> = (
-  props: FullScreenDemoPageProps
-) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainContentContainer>
-        <MainTitle>FullScreen</MainTitle>
-        <MainParagraph>
-          Basically the purpose of the{" "}
-          <CodeHighlight>{"<FullScreen/>"}</CodeHighlight> component is to
-          highlight any kind of component and works in a similar way a modal
-          does. It provides important prompts in a user flow.
-          <br />
-          You can close it by clicking on the close button or with the "esc"
-          key.
-        </MainParagraph>
-
-        <Alert severity="info">
-          While included here as a standalone component, the most common use
-          will be to display the the image preview or video preview
-          withSubMenufiring the onSee event or onWatch event from
-          <CodeHighlight>{"<FileMosaic/>"}</CodeHighlight> or{" "}
-          <CodeHighlight>{"<FileCard/>"}</CodeHighlight> components, so for
-          completeness, those components are included in the examples
-        </Alert>
-
-        <section id="imagepreview">
-          <SubTitle content="Image preview" />
-          <DescParagraph>
-            To display an image in full screen you can use the {"<FullScreen/>"}{" "}
-            and {"<ImagePreview/>"} components.
-          </DescParagraph>
-
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              alignItems: "center",
-              justifyContent: "space-evenly",
-              gap: "7px",
-              flexWrap: "wrap",
-              width: "100%",
-              //padding: "25px 0",
-              flexDirection: "row",
-            }}
-          >
-            <DemoFullScreenImg />
-          </Paper>
-
-          <CodeDemoFullScrrenImg />
-        </section>
-
-        <section id="videopreview">
-          <SubTitle content="Video preview" />
-          <DescParagraph>
-            To display a video in full screen you can use the {"<FullScreen/>"}{" "}
-            and {"<VideoPreview/>"} components.
-          </DescParagraph>
-
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              alignItems: "center",
-              justifyContent: "space-evenly",
-              gap: "7px",
-              flexWrap: "wrap",
-              width: "100%",
-              //padding: "25px 0",
-              flexDirection: "row",
-            }}
-          >
-            <DemoFullScreenVid />
-          </Paper>
-
-          <CodeDemoFullScrrenVid />
-        </section>
-        <section id="api">
-          <SubTitle content="API" />
-          <DescParagraph>
-            See the documentation below for a complete reference to all of the
-            props available to the components mentioned here.
-          </DescParagraph>
-          <ul>
-            <li>
-              <AnchorToTab href="/api/fullscreen">
-                {"<FullScreen/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/imagepreview">
-                {"<ImagePreview/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/videopreview">
-                {"<VideoPreview/>"}
-              </AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/filecard">{"<FileCard/>"}</AnchorToTab>
-            </li>
-            <li>
-              <AnchorToTab href="/api/fileinputbuttom">
-                {"<FileInputButton/>"}
-              </AnchorToTab>
-            </li>
-          </ul>
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FullScreenDemoPage;
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Fullscreen Image",
-    referTo: "/components/fullscreen#imagepreview",
-  },
-  {
-    id: 1,
-    label: "FullScreen Video",
-    referTo: "/components/fullscreen#videopreview",
-  },
-];
diff --git a/src/pages/download-page/FileDownloadPage.tsx b/src/pages/download-page/FileDownloadPage.tsx
deleted file mode 100644
index 9f6d5803485aec10276291acf9157dca9e3d7dc3..0000000000000000000000000000000000000000
--- a/src/pages/download-page/FileDownloadPage.tsx
+++ /dev/null
@@ -1,209 +0,0 @@
-import { Paper } from "@mui/material";
-import * as React from "react";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import CodeDemoDownload2 from "../../components/demo-components/demo-download/CodeDemoDownload";
-import CodeDemoDownload1 from "../../components/demo-components/demo-download/CodeDemoDownload1";
-import CodeDemoDownload3 from "../../components/demo-components/demo-download/CodeDemoDownload3";
-import DemoDownload1 from "../../components/demo-components/demo-download/DemoDownload1";
-import DemoDownload2 from "../../components/demo-components/demo-download/DemoDownload2";
-import DemoDownload3 from "../../components/demo-components/demo-download/DemoDownload3";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const FileDownloadPage = () => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={9}>
-        <MainContentContainer>
-          <MainTitle>File Download</MainTitle>
-          <MainParagraph>
-            In this page you will find some demos for downloading files with{" "}
-            <CodeHighlight>{"<FileMosaic/>"}</CodeHighlight> and{" "}
-            <CodeHighlight>{"<FileCard/>"}</CodeHighlight> components.
-          </MainParagraph>
-          <section id="samehost">
-            <SubTitle content="Same origin URL" />
-            <DescParagraph>
-              When only <CodeHighlight>downloadUrl</CodeHighlight> is specified,
-              FileMosaic will perform the download only for{" "}
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy">
-                same-origin URLs
-              </AnchorToTab>{" "}
-              since it uses the{" "}
-              <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes">
-                anchor
-              </AnchorToTab>{" "}
-              tag under the hood.
-            </DescParagraph>
-            <Paper
-              variant="outlined"
-              style={{
-                padding: "25px",
-                display: "flex",
-                alignItems: "center",
-                justifyContent: "space-evenly",
-                width: "100%",
-              }}
-            >
-              <DemoDownload1 />
-            </Paper>
-            <CodeDemoDownload1 />
-          </section>
-          <section id="differenthost1">
-            <SubTitle content="Different origin URL and 'downloadUrl' prop specified" />
-            <DescParagraph>
-              When only <CodeHighlight>downloadUrl</CodeHighlight> is specified
-              and if the resource is located in any other host (on Stean for
-              instance), the component will open a new tab and display the
-              content.
-            </DescParagraph>
-            <Paper
-              variant="outlined"
-              style={{
-                padding: "25px",
-                display: "flex",
-                alignItems: "center",
-                justifyContent: "space-evenly",
-                width: "100%",
-              }}
-            >
-              <DemoDownload2 />
-            </Paper>
-            <CodeDemoDownload2 />
-          </section>
-          <section id="differenthost2">
-            <SubTitle content="Different origin URL and 'onDownload' prop specified" />
-            <DescParagraph>
-              For avoiding the behaviour described above, you can do you own
-              download implementation by overriding the download function by
-              setting the <CodeHighlight>onDownload</CodeHighlight> prop. There
-              is an example of how to do it with pure javascript.
-              <br />
-              The approach we use here can be summerized in 4 steps:
-              <ol>
-                <li>
-                  Make a GET request with{" "}
-                  <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/API/fetch">
-                    fetch API
-                  </AnchorToTab>{" "}
-                  (you can use{" "}
-                  <AnchorToTab href="https://axios-http.com/">
-                    axios
-                  </AnchorToTab>{" "}
-                  or any other way to fetch resources from internet).
-                </li>
-                <li>
-                  Create an{" "}
-                  <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL">
-                    Object URL
-                  </AnchorToTab>{" "}
-                  from the{" "}
-                  <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/API/Blob">
-                    Blob
-                  </AnchorToTab>{" "}
-                  file.
-                </li>
-                <li>
-                  Create an{" "}
-                  <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes">
-                    anchor tag
-                  </AnchorToTab>{" "}
-                  set the attributes, append it to the document, and click it
-                  programatically.
-                </li>
-                <li>
-                  Finally, revoke the Object URL and remove the anchor from
-                  document.
-                </li>
-              </ol>
-              
-            </DescParagraph>
-            <Paper
-              variant="outlined"
-              style={{
-                padding: "25px",
-                display: "flex",
-                alignItems: "center",
-                justifyContent: "space-evenly",
-                width: "100%",
-              }}
-            >
-              <DemoDownload3 />
-            </Paper>
-            <CodeDemoDownload3 />
-          </section>{" "}
-          <section id="api">
-            <SubTitle content="API" />
-            <DescParagraph>
-              See the documentation below for a complete reference to all of the
-              props available to the components mentioned here.
-            </DescParagraph>
-            <ul>
-              <li>
-                <AnchorToTab href="/api/filemosaic">
-                  {"<FileMosaic/>"}
-                </AnchorToTab>
-              </li>
-              <li>
-                <AnchorToTab href="/api/filecard">{"<FileCard/>"}</AnchorToTab>
-              </li>
-            </ul>
-          </section>
-        </MainContentContainer>
-      </MainLayoutPage>
-
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileDownloadPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Same host",
-    referTo: "/file-download#samehost",
-  },
-  {
-    id: 1,
-    label: "Different host 1",
-    referTo: "/file-download#differenthost1",
-  },
-  {
-    id: 2,
-    label: "Different host 2",
-    referTo: "/file-download#differenthost2",
-  },
-  {
-    id: 3,
-    label: "Components API",
-    referTo: "/file-download#api",
-  },
-];
diff --git a/src/pages/error-page/ErrorPage.scss b/src/pages/error-page/ErrorPage.scss
deleted file mode 100644
index 307b7edf38fb205251b41453e441dd2b95db621c..0000000000000000000000000000000000000000
--- a/src/pages/error-page/ErrorPage.scss
+++ /dev/null
@@ -1,44 +0,0 @@
-/*======================
-    404 page
-=======================*/
-
-.page_404 {
-  padding: 40px 0;
-  background: #fff;
-  width: 100%;
-  height: 100vh;
-  // font-family: "Arvo", serif;
-}
-
-.page_404 img {
-  width: 100%;
-}
-
-.four_zero_four_bg {
-  background-image: url(https://cdn.dribbble.com/users/285475/screenshots/2083086/dribbble_1.gif);
-  
-  background-position: center;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-}
-
-.four_zero_four_bg h1 {
-  font-size: 80px;
-}
-
-.four_zero_four_bg h3 {
-  font-size: 80px;
-}
-
-.link_404 {
-  color: #fff !important;
-  padding: 10px 20px;
-  background: #39ac31;
-  margin: 20px 0;
-  display: inline-block;
-}
-.contant_box_404 {
-  margin-top: -50px;
-}
diff --git a/src/pages/error-page/ErrorPage.tsx b/src/pages/error-page/ErrorPage.tsx
deleted file mode 100644
index 15b4ba5d0c19fdbf9d3592641ef0b4fbd45bb9a8..0000000000000000000000000000000000000000
--- a/src/pages/error-page/ErrorPage.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import * as React from "react";
-import { ErrorPageProps } from "./ErrorPageProps";
-import "./ErrorPage.scss";
-import { Box, Button } from "@mui/material";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import { useNavigate } from "react-router-dom";
-
-const ErrorPage: React.FC<ErrorPageProps> = (props: ErrorPageProps) => {
-  //const goBack = useNavigateGoBack();
-  const navigate = useNavigate();
-  const handleReturn = () => {
-    navigate(-1);
-  };
-
-  return (
-    <div
-      style={{
-        width: "100%",
-        display: "flex",
-        alignItems: "center",
-        flexDirection: "column",
-        justifyContent: "center",
-      }}
-    >
-      <Box
-        sx={{
-          width: "100%",
-          display: "flex",
-          alignItems: "center",
-          flexDirection: "column",
-          justifyContent: "flex-start",
-          height:{sm: "400px", xs:"300px", lg:"600px"},
-          //objectFit: "cover",
-          backgroundSize:"cover",
-          backgroundPosition:"center",
-          backgroundRepeat: "no-repeat",
-          backgroundImage:
-            "url(https://cdn.dribbble.com/users/285475/screenshots/2083086/dribbble_1.gif)",
-        }}
-      >
-        <MainTitle style={{ fontSize: "5rem", marginBottom: 0, marginTop:"10px" }}>404</MainTitle>
-
-        {/*  <img
-        src="https://cdn.dribbble.com/users/285475/screenshots/2083086/dribbble_1.gif"
-        alt="error_image"
-        width={"100%"}
-        style={{backgroundPosition:"center"}}
-      /> */}
-      </Box>
-      <MainParagraph>Looks like you're lost</MainParagraph>
-      <DescParagraph>
-        the page you are looking for is not avaible!
-      </DescParagraph>
-      <Button onClick={handleReturn} variant="outlined">
-        Go back
-      </Button>
-    </div>
-  );
-};
-export default ErrorPage;
diff --git a/src/pages/error-page/ErrorPageProps.ts b/src/pages/error-page/ErrorPageProps.ts
deleted file mode 100644
index 1985bb722bb3ab22fa9bbed235fdc1da09a2cd6f..0000000000000000000000000000000000000000
--- a/src/pages/error-page/ErrorPageProps.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface ErrorPageProps{
-    darkMode?:boolean;
-}
\ No newline at end of file
diff --git a/src/pages/file-icons/FileIconsPage.jsx b/src/pages/file-icons/FileIconsPage.jsx
deleted file mode 100644
index 996e48628abb01252d50b364a12581376f57c1e4..0000000000000000000000000000000000000000
--- a/src/pages/file-icons/FileIconsPage.jsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import * as React from "react";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import Paper from "@mui/material/Paper";
-import DemoFileMosaicFileIcons from "../../components/demo-components/filemosaic-demo/DemoFileMosaicFileIcons";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import FileCardMosaicSwitch from "../../components/switch/FileCardMosaicSwitch";
-import { scrollHandler } from "../../utils/scrollHandler";
-const FileIconsPage = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  const [component, setComponent] = React.useState("FileMosaic");
-  const handleChangeComponent = (newVal) => {
-    setComponent(newVal);
-  };
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={4}>
-        <MainContentContainer>
-          <MainTitle>File Icons (extensive list)</MainTitle>
-          <MainParagraph>
-            Both <CodeHighlight>{"<FileMosaic/>"}</CodeHighlight> and{" "}
-            <CodeHighlight>{"<FileCard/>"}</CodeHighlight> components diplay a
-            file icon according to the file mime type. A media type (also known
-            as a Multipurpose Internet Mail Extensions or MIME type) indicates
-            the nature and format of a document, file, or assortment of bytes.
-            You can find more information{" "}
-            <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">
-              here
-            </AnchorToTab>
-            . Files UI supports at list the least this{" "}
-            <AnchorToTab href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">
-              Common MIME types
-            </AnchorToTab>{" "}
-            and some other extra file types.
-          </MainParagraph>
-
-          <section id="complete-list">
-            <SubTitle content="Complete list" />
-            <DescParagraph>
-              Bellow you can see a preview of every file type supported:
-            </DescParagraph>
-            <FileCardMosaicSwitch
-              value={component}
-              onChange={handleChangeComponent}
-            />
-            <Paper
-              variant="outlined"
-              style={{
-                padding: "25px 0",
-                display: "flex",
-                alignItems: "center",
-                justifyContent: "center",
-                //flexDirection: "column",
-                gap: "10px",
-                flexWrap: "wrap",
-              }}
-            >
-              <DemoFileMosaicFileIcons card={component === "FileCard"} />
-            </Paper>
-          </section>
-        </MainContentContainer>
-        <RightMenuContainer>
-          <RightMenu
-            width="240px"
-            items={rightMenuItems}
-            selectedItemProp={selectedItem}
-            setSelected={setSelectedItem}
-          />
-        </RightMenuContainer>
-      </MainLayoutPage>
-    </React.Fragment>
-  );
-};
-export default FileIconsPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Complete list",
-    referTo: "/file-icons#complete-list",
-  },
-];
diff --git a/src/pages/getting-started/ClipBoardInstall.jsx b/src/pages/getting-started/ClipBoardInstall.jsx
deleted file mode 100644
index 7cd3f9e0e719a22549fed396021d05082e1435e0..0000000000000000000000000000000000000000
--- a/src/pages/getting-started/ClipBoardInstall.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import * as React from "react";
-
-const ClipBoardInstall = (props) => {
-  return (
-    <div className="clipboard-container">
-      <span style={{ color: "#60d2ff" }}>
-        <span style={{ color: "white" }}>
-          <b>{" > "}</b>&nbsp;
-        </span>
-        <span style={{ color: "#e2d487" }}>{"npm "}&nbsp;</span>
-        <span style={{ color: "white" }}>{"install "}&nbsp;</span>
-        <span>{"@files-ui/react"} &nbsp;&nbsp;</span>
-        {"axios"}
-      </span>
-      <Clipboard
-        style={{ backgroundColor: "grey" }}
-        code="npm install @dropzone-ui/react axios"
-        onCopyToClipboard={() => {}}
-      />
-    </div>
-  );
-};
-export default ClipBoardInstall;
diff --git a/src/pages/getting-started/GettingStartedPage.jsx b/src/pages/getting-started/GettingStartedPage.jsx
deleted file mode 100644
index 1f5057c3ef2481832169f03f9d3dd9c5b89353ef..0000000000000000000000000000000000000000
--- a/src/pages/getting-started/GettingStartedPage.jsx
+++ /dev/null
@@ -1,110 +0,0 @@
-import * as React from "react";
-
-import { Stack } from "@mui/material";
-import Overview from "../../components/getting-started/Overview";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import logoLight from "../../static/files-ui-logo-blue-wbg.png";
-import logo_blue from "../../static/files-ui-logo-blue.png";
-import "../../styles/GettingStartedPage.scss";
-import InstallationNPM from "../../components/getting-started/InstallationNPM";
-import InstallationYarn from "../../components/getting-started/InstallationYarn";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import { scrollHandler } from "../../utils/scrollHandler";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-const GettingStartedPage = ({ darkModeOn }) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-
-  return (
-    <MainLayoutPage selectedIndex={0}>
-      <MainContentContainer>
-        <Stack sx={{ width: "100%", alignItems: "center" }}>
-          <img
-            className="fui-logo-img-getting-started"
-            src={!darkModeOn ? logo_blue : logoLight}
-            alt="files-ui-logo"
-          />
-          <MainTitle>Files UI - Getting started!</MainTitle>
-        </Stack>
-        <section id="overview">
-          <Overview />
-        </section>
-
-        <section id="installation">
-          <SubTitle content="Installation" />
-
-          <MainParagraph>
-            Run one of the following commands to add Files UI to your project:
-          </MainParagraph>
-          <h3>npm:</h3>
-          <InstallationNPM />
-          <h3>yarn:</h3>
-          <InstallationYarn />
-        </section>
-
-        <section id="peer-dependency">
-          <SubTitle content="Peer dependency" />
-
-          <DescParagraph>
-            <CodeHighlight>react </CodeHighlight> {">= 17.0.0 "}and{" "}
-            <CodeHighlight>react-dom</CodeHighlight>
-            {" >= 17.0.0 "} are peer dependencies.
-          </DescParagraph>
-        </section>
-        <section id="default-font">
-          <SubTitle content="Default font" />
-
-          <DescParagraph>
-            Files UI components use the Poppins font by default. However, you
-            can set your own font-family en each component.
-          </DescParagraph>
-        </section>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </MainLayoutPage>
-  );
-};
-export default GettingStartedPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Overview",
-    referTo: "/getting-started#overview",
-  },
-  {
-    id: 1,
-    label: "Installation",
-    referTo: "/getting-started#installation",
-  },
-  {
-    id: 2,
-    label: "Peer dependency",
-    referTo: "/getting-started#peer-dependency",
-  },
-  { id: 3, label: "Default font", referTo: "/getting-started#default-font" },
-];
diff --git a/src/pages/global-config-page/GlobalConfigPage.tsx b/src/pages/global-config-page/GlobalConfigPage.tsx
deleted file mode 100644
index 79e2f84db3a5dcc502f474fcd7be744831cb6056..0000000000000000000000000000000000000000
--- a/src/pages/global-config-page/GlobalConfigPage.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import * as React from "react";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import { scrollHandler } from "../../utils/scrollHandler";
-import { Paper, Alert, AlertTitle } from "@mui/material";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import DemoGlobalConfig from "../../components/demo-components/global-demo/DemoGlobalConfig";
-import FileCardMosaicSwitch from "../../components/switch/FileCardMosaicSwitch";
-import CodeDemoGlobalConfig from "../../components/demo-components/global-demo/CodeDemoGlobalConfig";
-
-interface GlobalConfigPageProps {}
-const GlobalConfigPage: React.FC<GlobalConfigPageProps> = (
-  props: GlobalConfigPageProps
-) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-
-  const [component, setComponent] = React.useState("FileMosaic");
-  const handleChangeComponent = (newVal: string) => {
-    setComponent(newVal);
-  };
-
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={10}>
-        <MainContentContainer>
-          <MainTitle>Global configuration</MainTitle>
-          <MainParagraph>
-            There are some params like <CodeHighlight>darkMode</CodeHighlight>{" "}
-            or localization that can be set through a global config.
-            <br />
-            Also, you can add your custom icons sources.
-          </MainParagraph>
-          <DescParagraph>
-            This feature is possible thanks to the React{" "}
-            <AnchorToTab href="https://react.dev/reference/react#context-hooks">
-              Context hooks
-            </AnchorToTab>
-            .
-          </DescParagraph>
-          <Alert severity="info">
-            <AlertTitle> Context and Providers </AlertTitle>
-            When it comes to Context and Providers you can think that the
-            provider is just the in charge one to pass globally a "prop". So you
-            can avoid the set it individually on every component.
-            <br></br>
-            For using this feature you don't need to be an expert on{" "}
-            <TypeHighlight>React.Context</TypeHighlight>.
-          </Alert>
-          <section id="config">
-            <SubTitle content="Config" />
-            <DescParagraph>
-              In the following demo we will wrap the complete app and will set
-              the 3 allowed params:
-              <ul>
-                <li>darkMode</li>
-                <li>localization</li>
-                <li>icons</li>
-              </ul>
-            </DescParagraph>
-
-            <FileCardMosaicSwitch
-              value={component}
-              onChange={handleChangeComponent}
-              withInput
-              row
-            />
-
-            <Paper
-              variant="outlined"
-              style={{
-                padding: "25px 10px",
-                display: "flex",
-                alignItems: "center",
-                justifyContent: "center",
-                flexDirection: "column",
-                gap: "20px",
-              }}
-            >
-              <DemoGlobalConfig card={component === "FileCard"} />
-            </Paper>
-
-            <CodeDemoGlobalConfig />
-
-            <Alert severity="info">
-              This demo is a combination of other samples that you can find in
-              their respective pages. For further information about the data
-              types involved you can visit:
-              <ul>
-                <li>
-                  <AnchorToTab href="/types#filesuiconfig">
-                    FilesUIConfig type page
-                  </AnchorToTab>
-                </li>
-                <li>
-                  <AnchorToTab href="/types#iconsset">
-                    IconsSet type page
-                  </AnchorToTab>
-                </li>
-              </ul>
-            </Alert>
-          </section>
-        </MainContentContainer>
-        <RightMenuContainer>
-          <RightMenu
-            width="240px"
-            items={rightMenuItems}
-            selectedItemProp={selectedItem}
-            setSelected={setSelectedItem}
-          />
-        </RightMenuContainer>
-      </MainLayoutPage>
-    </React.Fragment>
-  );
-};
-export default GlobalConfigPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "FilesUiProvider",
-    referTo: "/global-config#config",
-  },
-];
diff --git a/src/pages/localization/LocalizationPage.jsx b/src/pages/localization/LocalizationPage.jsx
deleted file mode 100644
index e1885031556903f831a6af56c38eddbe0f04d333..0000000000000000000000000000000000000000
--- a/src/pages/localization/LocalizationPage.jsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import * as React from "react";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import Paper from "@mui/material/Paper";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-// import AnchorToTab from "../../components/util-components/AnchorToTab";
-import FileCardMosaicSwitch from "../../components/switch/FileCardMosaicSwitch";
-import TypeHighlight from "../../components/typeHighlight/TypeHighlight";
-import DemoFileMosaicLocalization from "../../components/demo-components/localization/DemoFileMosaicLocalization";
-import CodeJSFileMosaicLocalization from "../../components/demo-components/localization/CodeJSFileMosaicLocalization";
-import { scrollHandler } from "../../utils/scrollHandler";
-
-const LocalizationPage = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  const [component, setComponent] = React.useState("FileMosaic");
-  const handleChangeComponent = (newVal) => {
-    setComponent(newVal);
-  };
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={5}>
-        <MainContentContainer>
-          <MainTitle>Localization</MainTitle>
-          <MainParagraph>
-            Localization (also referred to as "l10n") is the process of adapting
-            a product or content to a specific locale or market.
-            <br />
-            The default locale of Files UI is English. If you want to use other
-            locales, follow the instructions below.
-          </MainParagraph>
-
-          <section id="locale-texts">
-            <SubTitle content="Locale texts" />
-            <DescParagraph>
-              Files UI components have multilanguage support. You can change the
-              language in wich the labels are displayed by setting the{" "}
-              <CodeHighlight>{"localization"}</CodeHighlight> prop. So far only
-              the following languages are supported:
-              <ul>
-                {[
-                  "English",
-                  "Spanish",
-                  "French",
-                  "Italian",
-                  "Portuguese",
-                  "Russian",
-                  "Chinnese (simplified)",
-                  "Chinnese (traditional)",
-                ].map((x) => (
-                  <li>
-                    <TypeHighlight key={x}>{x}</TypeHighlight>
-                  </li>
-                ))}
-              </ul>
-            </DescParagraph>
-            <FileCardMosaicSwitch
-              value={component}
-              onChange={handleChangeComponent}
-              withInput
-              row
-            />
-            <Paper
-              variant="outlined"
-              style={{
-                padding: "25px 10px",
-                display: "flex",
-                alignItems: "center",
-                justifyContent: "center",
-                flexDirection: "column",
-                gap: "20px",
-              }}
-            >
-              <DemoFileMosaicLocalization card={component === "FileCard"} />
-            </Paper>
-            <CodeJSFileMosaicLocalization card={component === "FileCard"} />
-          </section>
-
-          <RightMenuContainer>
-            <RightMenu
-              width="240px"
-              items={rightMenuItems}
-              selectedItemProp={selectedItem}
-              setSelected={setSelectedItem}
-            />
-          </RightMenuContainer>
-        </MainContentContainer>
-      </MainLayoutPage>
-    </React.Fragment>
-  );
-};
-export default LocalizationPage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Locale texts",
-    referTo: "/file-icons#locale-texts",
-  },
-];
diff --git a/src/pages/server-side/ServerSidePage.tsx b/src/pages/server-side/ServerSidePage.tsx
deleted file mode 100644
index 4252902e75ac3c9c6bb7ee31bce585b800495eba..0000000000000000000000000000000000000000
--- a/src/pages/server-side/ServerSidePage.tsx
+++ /dev/null
@@ -1,159 +0,0 @@
-import { Paper } from "@mui/material";
-import * as React from "react";
-import CodeDemoServerSideJava from "../../components/demo-components/demo-server-side/CodeDemoServerSideJava";
-import CodeDemoServerSideExpress from "../../components/demo-components/demo-server-side/CodeDemoServerSideExpress";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import { FileMosaic } from "../../files-ui";
-import { redirect } from "../../utils/redirect";
-import { scrollHandler } from "../../utils/scrollHandler";
-const ServerSidePage = () => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={6}>
-        <MainContentContainer>
-          <MainTitle>Server Side implementations</MainTitle>
-          <MainParagraph>
-            Some implementations to correctly handle uploaded files using Files
-            UI.
-          </MainParagraph>
-          <DescParagraph>
-            <ul>
-              <li>
-                If you think more server-side samples should be added or would
-                like to contribute by fixing or adding a new server-side sampler
-                in programming languages not yet covered, please contact us.
-              </li>
-            </ul>
-          </DescParagraph>
-          <section id="expressjs">
-            <SubTitle content="Express JS" />
-            <Paper
-              variant="outlined"
-              style={{
-                display: "flex",
-                flexDirection: "row",
-                flexWrap: "nowrap",
-                alignItems: "center",
-                padding: "25px",
-                justifyContent: "space-evenly",
-              }}
-            >
-              <FileMosaic
-                {...logoExpress}
-                onClick={() =>
-                  redirect(
-                    "https://github.com/files-ui/files-ui-web-test/tree/master/expressjs"
-                  )
-                }
-                //{...logoExpress.extraData}
-                //smartImgFit={"center"}
-              />{" "}
-              <DescParagraph>
-                The following code is just the main part of a project.
-                <br />
-                Check it up in the following{" "}
-                <AnchorToTab href="https://github.com/files-ui/files-ui-web-test/tree/master/expressjs">
-                  link
-                </AnchorToTab>
-                .
-              </DescParagraph>
-            </Paper>
-            <CodeDemoServerSideExpress splittedOnly />
-          </section>
-          <section id="springboot">
-            <SubTitle content="Java - Spring boot" />{" "}
-            <Paper
-              variant="outlined"
-              style={{
-                display: "flex",
-                flexDirection: "revert",
-                flexWrap: "nowrap",
-                alignItems: "center",
-                justifyContent: "space-evenly",
-                padding: "25px",
-              }}
-            >
-              <FileMosaic
-                {...logoJava}
-                onClick={() =>
-                  redirect(
-                    "https://github.com/files-ui/files-ui-web-test/tree/master/springboot"
-                  )
-                }
-              />{" "}
-              <DescParagraph>
-                The following code is just the main part of a project.
-                <br />
-                Check it up in the following{" "}
-                <AnchorToTab href="https://github.com/files-ui/files-ui-web-test/tree/master/springboot">
-                  link
-                </AnchorToTab>
-                .
-              </DescParagraph>
-            </Paper>
-            <CodeDemoServerSideJava splittedOnly />
-          </section>
-        </MainContentContainer>
-        <RightMenuContainer>
-          <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-        </RightMenuContainer>
-        
-      </MainLayoutPage>
-    </React.Fragment>
-  );
-};
-export default ServerSidePage;
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "ExpressJS",
-    referTo: "/server-side#expressjs",
-  },
-  {
-    id: 1,
-    label: "Spring Boot (Java)",
-    referTo: "/server-side#springboot",
-  },
-];
-
-const logoExpress = {
-  id: ":0:",
-  //size: 28 * 1024 * 1024,
-  type: "image/png",
-  imageUrl: "/serverside/nodeexpress.jpg",
-  name: "Click me!",
-};
-
-const logoJava = {
-  id: ":1:",
-  //size: 28 * 1024 * 1024,
-  type: "image/png",
-  imageUrl: "/serverside/springbootjavalogo.png",
-  name: "Click me!",
-};
diff --git a/src/pages/tutorials/TutorialPage.tsx b/src/pages/tutorials/TutorialPage.tsx
deleted file mode 100644
index 136cddf76dd44b91989fae8a3bb8684496815a9b..0000000000000000000000000000000000000000
--- a/src/pages/tutorials/TutorialPage.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import * as React from "react";
-import { TutorialPageProps } from "./TutorialPageProps";
-
-const TutorialPage:React.FC<TutorialPageProps> = (props:TutorialPageProps) =>{
-    return(
-        <div>
-        TutorialPage
-        </div>
-    )
-}
-export default TutorialPage;
\ No newline at end of file
diff --git a/src/pages/tutorials/TutorialPageProps.ts b/src/pages/tutorials/TutorialPageProps.ts
deleted file mode 100644
index 3e4e57d37f2e795a69a20e7aa72514bc49eb859d..0000000000000000000000000000000000000000
--- a/src/pages/tutorials/TutorialPageProps.ts
+++ /dev/null
@@ -1 +0,0 @@
-export interface TutorialPageProps{}
\ No newline at end of file
diff --git a/src/pages/types-page/TypesPage.jsx b/src/pages/types-page/TypesPage.jsx
deleted file mode 100644
index c33bd6ce5c79d23e84b38bda915c69b312c4b1cd..0000000000000000000000000000000000000000
--- a/src/pages/types-page/TypesPage.jsx
+++ /dev/null
@@ -1,340 +0,0 @@
-import { Highlighter } from "rc-highlight";
-import * as React from "react";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-//import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import AnchorToTab from "../../components/util-components/AnchorToTab";
-import { ActionButtonItemAPIRows } from "../../data/ActionButtonItemAPIRows";
-import { ActionButtonsAPIRows } from "../../data/ActionButtonsAPIRows";
-import { ExtFileAPIRows } from "../../data/ExtFileAPIRows";
-//import { FilesUiConfigAPIRows } from "../../data/FilesUiConfigAPIRows";
-import { FooterConfigAPIRows } from "../../data/FooterConfigAPIRows";
-import { HeaderConfigAPIRows } from "../../data/HeaderConfigAPIRows";
-//import { IconsMapAPIRows } from "../../data/IconsMapAPIRows";
-import { ServerResponseAPIRows } from "../../data/ServerResponseAPIRows";
-import { UploadConfigAPIRows } from "../../data/UploadConfigAPIRows";
-import { ValidateFileResponseAPIrows } from "../../data/ValidateFileResponseAPIrows";
-import { UserContext } from "../../globals/contexts/UserContext";
-import { scrollHandler } from "../../utils/scrollHandler";
-import PropsTableApi from "../api/PropsTableApi";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "ExtFile",
-    referTo: "/types#extfile",
-  },
-  {
-    id: 1,
-    label: "ValidateFileResponse",
-    referTo: "/types#validatefileresponse",
-  },
-  {
-    id: 2,
-    label: "UploadConfig",
-    referTo: "/types#uploadconfig",
-  },
-  {
-    id: 3,
-    label: "ActionButtons",
-    referTo: "/types#actionbuttons",
-  },
-  {
-    id: 4,
-    label: "ActionButtonItem",
-    referTo: "/types#actionbuttonitem",
-  },
-  {
-    id: 5,
-    label: "HeaderConfig",
-    referTo: "/types#headerconfig",
-  },
-  {
-    id: 6,
-    label: "FooterConfig",
-    referTo: "/types#footerconfig",
-  },
-  {
-    id: 7,
-    label: "ServerResonse",
-    referTo: "/types#uploadconfig",
-  },
-  {
-    id: 8,
-    label: "UPLOADSTATUS",
-    referTo: "/types#uploadstatus",
-  },
-  {
-    id: 9,
-    label: "FilesUiConfig",
-    referTo: "/types#filesuiconfig",
-  },
-  {
-    id: 10,
-    label: "IconsSet",
-    referTo: "/types#iconsset",
-  },
-];
-
-const TypesPage = (props) => {
-  const [user, ] = React.useContext(UserContext);
-  const darkMode = user.darkMode;
-
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={7}>
-        <MainContentContainer>
-          <MainTitle>Types</MainTitle>
-          <MainParagraph>
-            API reference docs for all the important types related to files UI
-            components.
-          </MainParagraph>
-          <section id="extfile">
-            <PropsTableApi
-              title="ExtFile"
-              desc={
-                <>
-                  Data estructure that "extends" the{" "}
-                  <AnchorToTab href="https://developer.mozilla.org/es/docs/Web/API/File">
-                    File
-                  </AnchorToTab>{" "}
-                  Object. This object is designed to allow the information
-                  exchange between components.
-                </>
-              }
-              omitDefault
-              rows={ExtFileAPIRows(darkMode)}
-            />
-          </section>
-          <section id="validatefileresponse">
-            <PropsTableApi
-              rows={ValidateFileResponseAPIrows}
-              title="ValidateFileResponse"
-              omitDefault
-              desc="Response convention for file validation"
-            />
-          </section>
-          <section id="uploadconfig">
-            <PropsTableApi
-              rows={UploadConfigAPIRows}
-              title="UploadConfig"
-              desc="Configuration needed for performing the upload process"
-            />
-          </section>
-          <section id="actionbuttons">
-            <PropsTableApi
-              rows={ActionButtonsAPIRows}
-              title="ActionButtons"
-              omitDefault
-              desc="Advanced configuration for buttons after or before the component. (Dropzone and FileInputButton)"
-            />
-          </section>
-          <section id="actionbuttonitem">
-            <PropsTableApi
-              rows={ActionButtonItemAPIRows}
-              title="ActionButtonItem"
-              desc="Advanced configuration for each action button"
-            />
-          </section>
-          <section id="headerconfig">
-            <PropsTableApi
-              rows={HeaderConfigAPIRows}
-              title="HeaderConfig"
-              desc="Advanced configuration for dropzone header"
-            />
-          </section>
-          <section id="footerconfig">
-            <PropsTableApi
-              rows={FooterConfigAPIRows}
-              title="FooterConfig"
-              desc="Advanced configuration for dropzone footer"
-            />
-          </section>
-          <section id="serverresponse">
-            <PropsTableApi
-              rows={ServerResponseAPIRows}
-              title="ServerResponse"
-              omitDefault
-              desc="Convention for server response"
-            />
-          </section>
-          <section id="uploadstatus">
-            <SubTitle content={"UPLOADSTATUS"} />{" "}
-            <Highlighter
-              style={{
-                margin: "20px 0",
-                fontSize: "15px",
-                lineHeight: "",
-              }}
-              onCopyToClipboard={(code_) => {
-                console.log("code copied to clipboard: ");
-                console.log(code_);
-              }}
-            >
-              {UPLOADSTATUSCODE}
-            </Highlighter>
-          </section>
-          <section id="filesuiconfig">
-            <SubTitle content={"FilesUIConfig"} />{" "}
-            <DescParagraph>
-              Global configuration for Files UI components
-            </DescParagraph>
-            <Highlighter
-              style={{
-                margin: "20px 0",
-                fontSize: "15px",
-                lineHeight: "",
-              }}
-              onCopyToClipboard={(code_) => {
-                console.log("code copied to clipboard: ");
-                console.log(code_);
-              }}
-            >
-              {FilesUIConfigCODE}
-            </Highlighter>
-          </section>
-          <section id="iconsset">
-          
-            <SubTitle content={"IconsSet"} />{" "}
-            <DescParagraph>
-              Data type that keeps track of all keys of addmited mime types.
-            </DescParagraph>
-            <Highlighter
-              style={{
-                margin: "20px 0",
-                fontSize: "15px",
-                lineHeight: "",
-              }}
-              onCopyToClipboard={(code_) => {
-                console.log("code copied to clipboard: ");
-                console.log(code_);
-              }}
-            >
-              {IconsSetCode}
-            </Highlighter>
-          </section>
-        </MainContentContainer>
-      </MainLayoutPage>{" "}
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default TypesPage;
-
-const UPLOADSTATUSCODE = `export type UPLOADSTATUS = "preparing" | "aborted" | "uploading" | "success" | "error";`;
-
-const FilesUIConfigCODE = `export type FilesUIConfig = {
-  // If true, dark mode colors are used in FileMosaic and FIleCard components.
-  darkMode?: boolean;
-
-  // Set of icons to override the existing ones
-  icons?: IconsConfig;
-  
-  // The language in which text labels are shown.
-  localization?: Localization;
-}`;
-
-const IconsSetCode= `export type IconsSet = {
-  aac?: string;
-  accdb?: string;
-  abw?: string;
-  arc?: string;
-  avi?: string;
-  azw?: string;
-  octet?: string;
-  bmp?: string;
-  bz?: string;
-  bz2?: string;
-  cda?: string;
-  csh?: string;
-  css?: string;
-  csv?: string;
-  docx?: string;
-  drawio?: string;
-  eot?: string;
-  epub?: string;
-  gzip?: string;
-  gif?: string;
-  html?: string;
-  icalendar?: string;
-  jar?: string;
-  jpeg?: string;
-  javascript?: string;
-  json?: string;
-  jsonld?: string;
-  midi?: string;
-  mp3?: string;
-  mp4?: string;
-  mpeg?: string;
-  mpkg?: string;
-  mp2t?: string;
-  odp?: string;
-  ods?: string;
-  odt?: string;
-  oga?: string;
-  ogv?: string;
-  ogx?: string;
-  opus?: string;
-  otf?: string;
-  png?: string;
-  pdf?: string;
-  php?: string;
-  pptx?: string;
-  psd?: string;
-  rar?: string;
-  rtf?: string;
-  sass?: string;
-  sh?: string;
-  swf?: string;
-  tar?: string;
-  tiff?: string;
-  ttf?: string;
-  typescript?: string;
-  text?: string;
-  vsd?: string;
-  wav?: string;
-  weba?: string;
-  webm?: string;
-  webp?: string;
-  woff?: string;
-  wma?: string;
-  wmv?: string;
-  xhtml?: string;
-  xlsx?: string;
-  xml?: string;
-  xul?: string;
-  zip?: string;
-  sevenzip?: string;
-  python?: string;
-  java?: string;
-  react?: string;
-  vue?: string;
-  //fallback when file type is not here
-  fallBack?: string;
-}`;
\ No newline at end of file
diff --git a/src/pages/upload/UploadPage.jsx b/src/pages/upload/UploadPage.jsx
deleted file mode 100644
index 0dd39100b870db32671eb0b614933eb2efb86915..0000000000000000000000000000000000000000
--- a/src/pages/upload/UploadPage.jsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import * as React from "react";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-
-const UploadPage = (props) => {
-  return (
-    <MainLayoutPage>
-      <MainContentContainer>
-        <MainTitle>pload with Files ui</MainTitle>
-      </MainContentContainer>
-      <RightMenuContainer>
-        <RightMenu width="240px" items={[]} />
-      </RightMenuContainer>
-    </MainLayoutPage>
-  );
-};
-export default UploadPage;
diff --git a/src/pages/usage/UsagePage.jsx b/src/pages/usage/UsagePage.jsx
deleted file mode 100644
index 7e80ce46258e03039b7efd765d5e94bd8a7b8932..0000000000000000000000000000000000000000
--- a/src/pages/usage/UsagePage.jsx
+++ /dev/null
@@ -1,127 +0,0 @@
-import * as React from "react";
-import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
-import SubTitle from "../../components/demo-components/sub-title/SubTitle";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import MainParagraph from "../../components/paragraph-main/MainParagraph";
-import RightMenu from "../../components/RightMenu/RightMenu";
-import BasicDropzoneCodeJS from "../../components/demo-components/dropzone-demo/BasicDropzoneCodeJS";
-import Paper from "@mui/material/Paper";
-import AdvancedDropzoneDemo from "../../components/demo-components/dropzone-demo/AdvancedDropzoneDemo";
-import CodeHighlight from "../../components/codeHighlight/CodeHighlight";
-import AdvancedDropzoneCodeJS from "../../components/demo-components/dropzone-demo/AdvancedDropzoneCodeJS";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import { scrollHandler } from "../../utils/scrollHandler";
-const rightMenuItems = [
-  { id: 0, label: "Quick start", referTo: "/usage#quick-start" },
-  {
-    id: 1,
-    label: "Advanced examples",
-    referTo: "/usage#advanced-example",
-  },
-];
-const UsagePage = (props) => {
-  const [selectedItem, setSelectedItem] = React.useState(0);
-
-  React.useEffect(() => {
-    window.addEventListener("scroll", () =>
-      scrollHandler(rightMenuItems, setSelectedItem)
-    );
-    return () => {
-      window.removeEventListener("scroll", () =>
-        scrollHandler(rightMenuItems, setSelectedItem)
-      );
-    };
-  }, []);
-  return (
-    <MainLayoutPage selectedIndex={1}>
-      <MainContentContainer>
-        <MainTitle>Usage</MainTitle>
-        <MainParagraph>
-          Learn the basics of working with Files UI components.
-        </MainParagraph>
-
-        <section id="quick-start">
-          <DescParagraph>
-            <SubTitle content="Quick start (Basic exaple)" />
-            The following code snippet demonstrates a simple app that uses the
-            Files UI <a href="/components/dropzone">Dropzone</a> and{" "}
-            <a href="/components/filemosaic">FileMosaic</a> components:
-          </DescParagraph>
-          <DescParagraph>
-            In this demo we set dropzone with the minimun props that allows you
-            to get done fast. These props are{" "}
-            <CodeHighlight>onChange</CodeHighlight> and{" "}
-            <CodeHighlight>value</CodeHighlight> props. This example is the same
-            as the one you will find in the{" "}
-            <a href="/components/dropzone#basic-dropzone">Basic dropzone</a>{" "}
-            section.
-          </DescParagraph>{" "}
-          <BasicDropzoneCodeJS splittedOnly />
-          {/* <Paper variant="outlined" style={{ padding: "25px" }}>
-          <BasicDemoDropzone />
-        </Paper>{" "} */}
-          <DescParagraph>
-            You can play around with this code in the interactive Code Sandbox
-            demo below. Try adding the <CodeHighlight>accept</CodeHighlight>{" "}
-            prop to the Dropzone to see the changes:
-          </DescParagraph>
-          <iframe
-            title="codesandbox"
-            // add    ".../embed/..."
-            src="https://codesandbox.io/embed/basic-demo-js-blssi1"
-            //src="https://codesandbox.io/embed/u9sy1h?hidenavigation=1&amp;fontsize=14&amp;view=preview"
-            //src="https://codesandbox.io/s/material-ui-u9sy1h"
-            style={{
-              width: "100%",
-              height: "500px",
-              border: "0px none",
-              borderRadius: "4px",
-              overflow: "hidden",
-            }}
-            allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
-            sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
-          ></iframe>
-        </section>
-
-        <section id="advanced-example">
-          <SubTitle content="Advanced Example" />
-          <DescParagraph>
-            In this example we set dropzone with the props that allows
-            validation and upload. These props are:
-            <ul>
-              <li>
-                For validating: <CodeHighlight>accept</CodeHighlight>,{" "}
-                <CodeHighlight>maxFiles</CodeHighlight> and{" "}
-                <CodeHighlight>maxFileSize</CodeHighlight>
-              </li>
-              <li>
-                For uploading: <CodeHighlight>uploadConfig</CodeHighlight>
-              </li>
-              <li>
-                For simulating the upload process:{" "}
-                <CodeHighlight>fakeUpload</CodeHighlight>
-              </li>
-            </ul>
-          </DescParagraph>
-
-          <Paper variant="outlined" style={{ padding: "25px" }}>
-            <AdvancedDropzoneDemo />
-          </Paper>
-          <AdvancedDropzoneCodeJS />
-        </section>
-      </MainContentContainer>
-
-      <RightMenuContainer>
-        <RightMenu
-          width="240px"
-          items={rightMenuItems}
-          selectedItemProp={selectedItem}
-          setSelected={setSelectedItem}
-        />
-      </RightMenuContainer>
-    </MainLayoutPage>
-  );
-};
-export default UsagePage;
diff --git a/src/pages/utilities/FileReaderPage.tsx b/src/pages/utilities/FileReaderPage.tsx
deleted file mode 100644
index 7c6d87faa919f2c7d3f55298e102c1bceda5b1a9..0000000000000000000000000000000000000000
--- a/src/pages/utilities/FileReaderPage.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import * as React from "react";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Read as URL",
-    referTo: "/utilities-methods/file-reader/#read-as-url",
-  },
-];
-
-interface FileReaderPageProps {}
-const FileReaderPage: React.FC<FileReaderPageProps> = (
-  props: FileReaderPageProps
-) => {
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={8}>
-         <MainContentContainer>
-        <MainTitle>File Reader</MainTitle>
-      </MainContentContainer>
-      </MainLayoutPage>
-     
-
-      <RightMenuContainer>
-        <RightMenu width="240px" items={rightMenuItems} />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileReaderPage;
diff --git a/src/pages/utilities/FileUploaderPage.tsx b/src/pages/utilities/FileUploaderPage.tsx
deleted file mode 100644
index be02427c0ce4c09549eb7955d240d2c4187cd637..0000000000000000000000000000000000000000
--- a/src/pages/utilities/FileUploaderPage.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import * as React from "react";
-import MainContentContainer from "../../components/layout-pages/MainContentContainer";
-import MainLayoutPage from "../../components/layout-pages/MainLayoutPage";
-import RightMenuContainer from "../../components/layout-pages/RightMenuContainer";
-import MainTitle from "../../components/main-title/MainTitle";
-import RightMenu from "../../components/RightMenu/RightMenu";
-
-const rightMenuItems = [
-  {
-    id: 0,
-    label: "Upload to server",
-    referTo: "/file-upload/#uploadtoaws",
-  },
-  {
-    id: 1,
-    label: "Upload to AWS",
-    referTo: "/file-upload/#uploadtoaws",
-  },
-];
-
-interface FileUploaderPageProps {}
-const FileUploaderPage: React.FC<FileUploaderPageProps> = (
-  props: FileUploaderPageProps
-) => {
-  return (
-    <React.Fragment>
-      <MainLayoutPage selectedIndex={8}>
-        <MainContentContainer>
-          <MainTitle>File Upload</MainTitle>
-        </MainContentContainer>
-      </MainLayoutPage>
-
-      <RightMenuContainer>
-        <RightMenu width="240px" items={rightMenuItems} />
-      </RightMenuContainer>
-    </React.Fragment>
-  );
-};
-export default FileUploaderPage;
diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js
deleted file mode 100644
index 5253d3ad9e6be6690549cb255f5952337b02401d..0000000000000000000000000000000000000000
--- a/src/reportWebVitals.js
+++ /dev/null
@@ -1,13 +0,0 @@
-const reportWebVitals = onPerfEntry => {
-  if (onPerfEntry && onPerfEntry instanceof Function) {
-    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
-      getCLS(onPerfEntry);
-      getFID(onPerfEntry);
-      getFCP(onPerfEntry);
-      getLCP(onPerfEntry);
-      getTTFB(onPerfEntry);
-    });
-  }
-};
-
-export default reportWebVitals;
diff --git a/src/routes/MainRouter.jsx b/src/routes/MainRouter.jsx
deleted file mode 100644
index 1c894051d89d565deb9e09c3747a22035afc5f0a..0000000000000000000000000000000000000000
--- a/src/routes/MainRouter.jsx
+++ /dev/null
@@ -1,165 +0,0 @@
-import * as React from "react";
-import MainPage from "./../pages/MainPage";
-import GettingStartedPage from "./../pages/getting-started/GettingStartedPage";
-import ErrorPage from "./../pages/error-page/ErrorPage";
-import DropzoneDemoPage from "./../pages/demo/DropzoneDemoPage";
-import FileMosaicDemoPage from "./../pages/demo/FileMosaicDemoPage";
-import FileCardDemoPage from "./../pages/demo/FileCardDemoPage";
-import ServerSidePage from "./../pages/server-side/ServerSidePage";
-//import CodeGeneratorPage from "./../pages/code-generator/CodeGeneratorPage";
-import DropzoneApi from "./../pages/api/DropzoneApi";
-import FileMosaicApi from "./../pages/api/FileMosaicApi";
-import FileCardApi from "./../pages/api/FileCardApi";
-import UsagePage from "./../pages/usage/UsagePage";
-import TypesPage from "./../pages/types-page/TypesPage";
-import { createBrowserRouter, Outlet, RouterProvider } from "react-router-dom";
-import MainLayoutPage from "../components/layout-pages/MainLayoutPage";
-import FileReaderPage from "../pages/utilities/FileReaderPage";
-//import FileUploaderPage from "../pages/utilities/FileUploaderPage";
-import AvatarDemoPage from "../pages/demo/AvatarDemoPage";
-import FileInputButtonApi from "../pages/api/FileInputButtonApi";
-import AvatarApi from "../pages/api/AvatarApi";
-import FileInputButtonDemoPage from "../pages/demo/FileInputButtonDemoPage";
-import FileDownloadPage from "../pages/download-page/FileDownloadPage";
-import FileIconsPage from "../pages/file-icons/FileIconsPage";
-import LocalizationPage from "../pages/localization/LocalizationPage";
-import VideoPreviewApi from "../pages/api/VideoPreviewApi";
-import ImagePreviewApi from "../pages/api/ImagePreviewApi";
-import FullScreenApi from "../pages/api/FullScreenApi";
-import FullScreenDemoPage from "../pages/demo/FullScreenDemoPage";
-import GlobalConfigPage from "../pages/global-config-page/GlobalConfigPage";
-
-const router = createBrowserRouter([
-  {
-    path: "/",
-    element: <MainPage />,
-    errorElement: (
-      <MainLayoutPage>
-        <ErrorPage />
-      </MainLayoutPage>
-    ),
-  },
-  {
-    path: "/getting-started",
-    element: <GettingStartedPage />,
-  },
-  {
-    path: "/usage",
-    element: <UsagePage />,
-  },
-  {
-    path: "/components",
-    element: (
-      <MainLayoutPage selectedIndex={2}>
-        <Outlet />
-      </MainLayoutPage>
-    ),
-    children: [
-      {
-        path: "/components/avatar",
-        element: <AvatarDemoPage />,
-      },
-      {
-        path: "/components/dropzone",
-        element: <DropzoneDemoPage />,
-      },
-      {
-        path: "/components/fileinputbutton",
-        element: <FileInputButtonDemoPage />,
-      },
-      {
-        path: "/components/filemosaic",
-        element: <FileMosaicDemoPage />,
-      },
-      {
-        path: "/components/filecard",
-        element: <FileCardDemoPage />,
-      },
-      {
-        path: "/components/fullscreen",
-        element: <FullScreenDemoPage />,
-      },
-    ],
-  },
-  {
-    path: "/api",
-    element: (
-      <MainLayoutPage selectedIndex={3}>
-        <Outlet />
-      </MainLayoutPage>
-    ),
-    children: [
-      {
-        path: "/api/avatar",
-        element: <AvatarApi />,
-      },
-      {
-        path: "/api/fileinputbutton",
-        element: <FileInputButtonApi />,
-      },
-      {
-        path: "/api/dropzone",
-        element: <DropzoneApi />,
-      },
-      {
-        path: "/api/filemosaic",
-        element: <FileMosaicApi />,
-      },
-      {
-        path: "/api/filecard",
-        element: <FileCardApi />,
-      },
-      {
-        path: "/api/fullscreen",
-        element: <FullScreenApi />,
-      },
-      {
-        path: "/api/imagepreview",
-        element: <ImagePreviewApi />,
-      },
-      {
-        path: "/api/videopreview",
-        element: <VideoPreviewApi />,
-      },
-    ],
-  },
-  {
-    path: "/file-icons",
-    element: <FileIconsPage />,
-  },
-  {
-    path: "/localization",
-    element: <LocalizationPage />,
-  },
-  {
-    path: "/server-side",
-    element: <ServerSidePage />,
-  },
-  /*   {
-    path: "/code-generator",
-    element: <CodeGeneratorPage />,
-  }, */
-  {
-    path: "/types",
-    element: <TypesPage />,
-  },
-  /*   {
-    path: "/file-reader",
-    element: <FileReaderPage />,
-  }, */
-  {
-    path: "/file-download",
-    element: <FileDownloadPage />,
-  },
-  ///
-  /*   {
-    path: "/file-upload",
-    element: <FileUploaderPage />,
-  }, */
-  { path: "/global-config", element: <GlobalConfigPage /> },
-]);
-
-const MainRouter = (props) => {
-  return <RouterProvider router={router} />;
-};
-export default MainRouter;
diff --git a/src/setupTests.js b/src/setupTests.js
deleted file mode 100644
index 8f2609b7b3e0e3897ab3bcaad13caf6876e48699..0000000000000000000000000000000000000000
--- a/src/setupTests.js
+++ /dev/null
@@ -1,5 +0,0 @@
-// jest-dom adds custom jest matchers for asserting on DOM nodes.
-// allows you to do things like:
-// expect(element).toHaveTextContent(/react/i)
-// learn more: https://github.com/testing-library/jest-dom
-import '@testing-library/jest-dom';
diff --git a/src/files-ui/skeleton/FuiSkeleton.scss b/src/skeleton/FuiSkeleton.scss
similarity index 100%
rename from src/files-ui/skeleton/FuiSkeleton.scss
rename to src/skeleton/FuiSkeleton.scss
diff --git a/src/files-ui/skeleton/FuiSkeleton.tsx b/src/skeleton/FuiSkeleton.tsx
similarity index 100%
rename from src/files-ui/skeleton/FuiSkeleton.tsx
rename to src/skeleton/FuiSkeleton.tsx
diff --git a/src/files-ui/skeleton/FuiSkeletonProps.ts b/src/skeleton/FuiSkeletonProps.ts
similarity index 100%
rename from src/files-ui/skeleton/FuiSkeletonProps.ts
rename to src/skeleton/FuiSkeletonProps.ts
diff --git a/src/static/dropzone/dz-d.png b/src/static/dropzone/dz-d.png
deleted file mode 100644
index 0aededc93bc6840b7ece37390c55d1a77fcfb154..0000000000000000000000000000000000000000
Binary files a/src/static/dropzone/dz-d.png and /dev/null differ
diff --git a/src/static/dropzone/dz-w.png b/src/static/dropzone/dz-w.png
deleted file mode 100644
index 03bd60d8e8a7f70c3229b4ff7c6cb7d1df11b4cc..0000000000000000000000000000000000000000
Binary files a/src/static/dropzone/dz-w.png and /dev/null differ
diff --git a/src/static/files-ui-logo-blue-dark.png b/src/static/files-ui-logo-blue-dark.png
deleted file mode 100644
index 0177065c45133b82881090e1fe2accaf6774e228..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-blue-dark.png and /dev/null differ
diff --git a/src/static/files-ui-logo-blue-shadow.png b/src/static/files-ui-logo-blue-shadow.png
deleted file mode 100644
index 78cf1ee8e370abce2d69f6f0ec78463e0f5f0986..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-blue-shadow.png and /dev/null differ
diff --git a/src/static/files-ui-logo-blue-wbg.png b/src/static/files-ui-logo-blue-wbg.png
deleted file mode 100644
index 57ce4c6250bec94eb9c35bd60514b777108e1a4e..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-blue-wbg.png and /dev/null differ
diff --git a/src/static/files-ui-logo-blue.png b/src/static/files-ui-logo-blue.png
deleted file mode 100644
index f4ac6b1e98a4180dbb0ca2e342e0013c2f9b3351..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-blue.png and /dev/null differ
diff --git a/src/static/files-ui-logo-text-med-dark.png b/src/static/files-ui-logo-text-med-dark.png
deleted file mode 100644
index a245f8689750b8fe7ea539e686d2e18c99d632ae..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-text-med-dark.png and /dev/null differ
diff --git a/src/static/files-ui-logo-text-med-white.png b/src/static/files-ui-logo-text-med-white.png
deleted file mode 100644
index 55c9a315789fdba70e0bf2a899b446117ad9e004..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-text-med-white.png and /dev/null differ
diff --git a/src/static/files-ui-logo-text-med.png b/src/static/files-ui-logo-text-med.png
deleted file mode 100644
index 783dec6038a0c4a83c6b6599efc14bb82060ee48..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-text-med.png and /dev/null differ
diff --git a/src/static/files-ui-logo-white-bbg.png b/src/static/files-ui-logo-white-bbg.png
deleted file mode 100644
index 7e61d341b606edf80ae4c6df6f0df44f464ee79a..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-white-bbg.png and /dev/null differ
diff --git a/src/static/files-ui-logo-white.png b/src/static/files-ui-logo-white.png
deleted file mode 100644
index 194bdf2d6249d53c9f601aa5e6da69b104d4dee5..0000000000000000000000000000000000000000
Binary files a/src/static/files-ui-logo-white.png and /dev/null differ
diff --git a/src/static/index.d.ts b/src/static/index.d.ts
deleted file mode 100644
index a6d28473e39c4b37bc93fd456c80242a18a3511c..0000000000000000000000000000000000000000
--- a/src/static/index.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare module '*.png';
-declare module '*.jpg';
-declare module '*.webp';
-declare module '*.mp4';
\ No newline at end of file
diff --git a/src/static/new-icons/Microsoft.VisualStudio.Services.Icons.Default.png b/src/static/new-icons/Microsoft.VisualStudio.Services.Icons.Default.png
deleted file mode 100644
index 386be5b3030db509f506f11abf97af66ab29c4ec..0000000000000000000000000000000000000000
Binary files a/src/static/new-icons/Microsoft.VisualStudio.Services.Icons.Default.png and /dev/null differ
diff --git a/src/static/new-icons/gradle.jpg b/src/static/new-icons/gradle.jpg
deleted file mode 100644
index 5a87d77a1058c57306cd434599ae6bd487489af7..0000000000000000000000000000000000000000
Binary files a/src/static/new-icons/gradle.jpg and /dev/null differ
diff --git a/src/static/new-icons/images.png b/src/static/new-icons/images.png
deleted file mode 100644
index ca61510a9d20959d3740958f27e0702b91fe1986..0000000000000000000000000000000000000000
Binary files a/src/static/new-icons/images.png and /dev/null differ
diff --git a/src/static/new-icons/markdown-fill-1.png b/src/static/new-icons/markdown-fill-1.png
deleted file mode 100644
index 37a31624e2eba4cfda902bea852d896680c881c4..0000000000000000000000000000000000000000
Binary files a/src/static/new-icons/markdown-fill-1.png and /dev/null differ
diff --git a/src/static/new-icons/maven_logo.png b/src/static/new-icons/maven_logo.png
deleted file mode 100644
index 990203c90a2fcdcffbdfc8b4de975ef237e0107c..0000000000000000000000000000000000000000
Binary files a/src/static/new-icons/maven_logo.png and /dev/null differ
diff --git a/src/static/other/Captura de pantalla (3946).png b/src/static/other/Captura de pantalla (3946).png
deleted file mode 100644
index e42ce40c63d0fdaaa55b7bb55d990e031b5c5670..0000000000000000000000000000000000000000
Binary files a/src/static/other/Captura de pantalla (3946).png and /dev/null differ
diff --git a/src/static/other/ref mt.png b/src/static/other/ref mt.png
deleted file mode 100644
index c53a224d58aec2f7f04299ce110a920d48564f02..0000000000000000000000000000000000000000
Binary files a/src/static/other/ref mt.png and /dev/null differ
diff --git a/src/static/videos/NarutoEN.mp4 b/src/static/videos/NarutoEN.mp4
deleted file mode 100644
index 4b5a4ed9b91b9b0af0af8a5985ded2944c2f6792..0000000000000000000000000000000000000000
Binary files a/src/static/videos/NarutoEN.mp4 and /dev/null differ
diff --git a/src/static/videos/NarutoES.mp4 b/src/static/videos/NarutoES.mp4
deleted file mode 100644
index 43777a67fdcc7838c8ca7ef3f6b11e51eee59e66..0000000000000000000000000000000000000000
Binary files a/src/static/videos/NarutoES.mp4 and /dev/null differ
diff --git a/src/static/videos/ThorEN-1.mp4 b/src/static/videos/ThorEN-1.mp4
deleted file mode 100644
index 0f3344c31f37ed954c17d40c0a49f5d6532858fc..0000000000000000000000000000000000000000
Binary files a/src/static/videos/ThorEN-1.mp4 and /dev/null differ
diff --git a/src/static/videos/ThorEN.mp4 b/src/static/videos/ThorEN.mp4
deleted file mode 100644
index 0f3344c31f37ed954c17d40c0a49f5d6532858fc..0000000000000000000000000000000000000000
Binary files a/src/static/videos/ThorEN.mp4 and /dev/null differ
diff --git a/src/styles/GettingStarted.scss b/src/styles/GettingStarted.scss
deleted file mode 100644
index 0d26ed16aa45c9e8353debdba0476995223041d0..0000000000000000000000000000000000000000
--- a/src/styles/GettingStarted.scss
+++ /dev/null
@@ -1,40 +0,0 @@
-.getting-started-container {
-  width: 100%;
-  display: flex;
-  flex-direction: column;
-  p,
-  h2 {
-    margin: 0;
-    padding: 0;
-  }
-  h2{
-    margin-top: 10px;
-  }
-  .button-container {
-    margin: 10px 0;
-    display: flex;
-    flex-direction: row;
-    width: 100%;
-    box-sizing: border-box;
-    align-items: center;
-    gap: 10px;
-    .code-button-flex {
-      display: flex;
-      flex-direction: column;
-      align-items: center;
-      box-sizing: border-box;
-      width: 60%;
-      gap :10px
-    }
-  }
-
-  @media screen and (max-width: 900px) {
-    .button-container {
-      flex-direction: column;
-      align-items: stretch;
-      .code-button-flex {
-        width: 100%;
-      }
-    }
-  }
-}
diff --git a/src/styles/GettingStartedPage.scss b/src/styles/GettingStartedPage.scss
deleted file mode 100644
index 0f0848900b90f04ece0369b7a3329b04ff95f694..0000000000000000000000000000000000000000
--- a/src/styles/GettingStartedPage.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-.fui-logo-img-getting-started {
-  width: 150px;
-  height: 150px;
-
-  @media screen and (max-width: 900px) {
-    width: 30vw;
-    height: auto;
-  }
-}
-.clipboard-container {
-  background-color: #1e1e1e;
-  border-radius: 8px;
-  position: relative;
-  display: flex;
-  padding: 12px 7px;
-  width: calc(100% - 20px);
-  flex-direction: row;
-  align-items: center;
-  font-size: 0.9em;
-  margin-bottom: 15px;
-  justify-content: space-between;
-  .floating-copy-button {
-    box-sizing: border-box;
-    background-color: gray;
-    padding: 6px 5px;
-    border-radius: 8px;
-    cursor: pointer;
-    display: flex;
-
-    &:hover {
-      border: 1px wheat solid;
-      padding: 5px 4px;
-    }
-    &.copied {
-      border: 1px solid greenyellow;
-      padding: 5px 4px;
-    }
-  }
-}
diff --git a/src/styles/MainPage.scss b/src/styles/MainPage.scss
deleted file mode 100644
index a24f1954ebec1fa4652fa7440a78f2661e61fd0c..0000000000000000000000000000000000000000
--- a/src/styles/MainPage.scss
+++ /dev/null
@@ -1,334 +0,0 @@
-//@import url("https://fonts.googleapis.com/css2?family=Kalam:wght@700&display=swap");
-
-$main-color-light: #0a1929;
-$main-color-dark: #0a1929;
-
-$sec-color-light: #55b4f2;
-$sec-color-dark: #0a1929;
-
-$text-color-light: #042354;
-$text-color-dark: rgba(255, 255, 255, 0.7);
-
-$border-color-light: #0a1929;
-$border-color-dark: #0a1929;
-
-.files-uimain-container {
-  transition: all 0.4s ease-in-out;
-  min-height: 100vh;
-  font-family: "Poppins", sans-serif;
-  font-size: 16px;
-  display: flex;
-  width: 100%;
-  align-items: center;
-  flex-direction: column;
-  justify-content: center;
-  color: #0a1929;
-  .filesui-nav {
-    transition: all 0.4s ease-in-out;
-    color: #042354;
-    height: 64px;
-    background-color: rgba(255, 255, 255, 0.559);
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    box-shadow: rgb(234, 238, 243) 0px -1px 1px inset;
-    width: 100%;
-    font-weight: 300;
-
-    .filesui-nav-container {
-      box-sizing: border-box;
-      padding: 0 10px;
-      width: 100%;
-      // background-color: aqua;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      box-sizing: border-box;
-      max-width: 1280px;
-
-      p {
-        letter-spacing: 0em;
-        line-height: 1.334;
-        font-size: 1.6rem;
-      }
-      .filesui-nav-logo-container {
-        margin-right: 5px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-
-        &.darkmode {
-          border-radius: 8px;
-          padding: 2px 0;
-          background-color: rgba(255, 255, 255, 0.8);
-        }
-        .filesui-nav-logo {
-          width: 45px;
-          height: 45px;
-
-          width: 45px;
-        }
-      }
-      .left-part {
-        display: flex;
-        justify-content: flex-start;
-        align-items: center;
-        .filesui-nav-text-logo {
-          font-size: 1.4rem;
-          color: $main-color-light;
-          font-weight: 300;
-        }
-      }
-      .right-part {
-        display: flex;
-        justify-content: flex-start;
-        //align-items: center;
-        //justify-content: center;
-        gap: 10px;
-        //max-height: 500px;
-      }
-    }
-  }
-  .filesui-main {
-    margin: auto;
-
-    width: 100%;
-    max-width: 1280px;
-
-    min-height: calc(100vh - 64px);
-    display: flex;
-    flex-direction: row;
-
-    align-items: flex-start;
-    gap: 30px;
-    box-sizing: border-box;
-    padding: 0 28px;
-    .fui-main-left {
-      width: 48%;
-      padding: 0 5px;
-      padding-top: 20px;
-
-      box-sizing: border-box;
-      //background-color: bisque;
-      display: flex;
-      flex-direction: column;
-      align-items: center;
-      justify-content: center;
-      min-height: calc(100vh - 64px);
-      .filesui-main-logo-container {
-        &.darkmode {
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          border-radius: 20px;
-          background-color: rgba(255, 255, 255, 0.8);
-          padding: 10px 0px;
-        }
-        .fui-logo-img {
-          width: 156px;
-          height: 156px;
-        }
-      }
-
-      .fui-logo-text {
-        font-size: 3.2rem;
-        font-weight: 700;
-        text-align: center;
-        letter-spacing: 1px;
-        margin: 20px 0;
-        padding: 0;
-        line-height: 3.5rem;
-      }
-      .fui-description {
-        margin: 0;
-        font-size: 1.5rem;
-        //text-align: center;
-
-        font-weight: 300;
-      }
-    }
-    .fui-main-right {
-      padding: 0 5px;
-      //padding-top: 20px;
-
-      box-sizing: border-box;
-      //background-color: bisque;
-      display: flex;
-      flex-direction: column;
-      //align-items: center;
-      justify-content: center;
-      width: 52%;
-      min-height: calc(100vh - 64px);
-      max-height: 1280px;
-      // overflow: auto;
-    }
-  }
-  .filesui-footer {
-    min-height: 64px;
-    background-color: #042354;
-    color: white;
-    width: 100%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    gap: 10px;
-  }
-  .files-ui-secondary-container {
-    width: 100%;
-    background-color: #f3f6f9;
-    &.darkmode {
-      background-color: #001e3c;
-    }
-    padding-bottom: 28px;
-    .secondary-content {
-      margin: auto;
-      width: 100%;
-      max-width: 1280px;
-      //min-height: calc(100vh - 64px);
-
-      .secondary-content-flex {
-        display: flex;
-        flex-direction: row;
-        align-items: stretch;
-        gap: 30px;
-        box-sizing: border-box;
-        padding: 0 28px;
-        flex-wrap: wrap;
-        .secondary-item {
-          flex-grow: 1;
-          min-width: 30%;
-        }
-      }
-
-      @media (max-width: 900px) {
-        .secondary-right {
-          width: 100%;
-        }
-        .secondary-left {
-          width: 100%;
-        }
-      }
-      .secondary-right {
-        box-sizing: border-box;
-        width: 50%;
-        margin: auto;
-      }
-      .secondary-left {
-        box-sizing: border-box;
-        width: 50%;
-        display: flex;
-        flex-direction: column;
-        gap: 10px;
-      }
-    }
-  }
-  .gradient-span {
-    font-weight: 700;
-    background: linear-gradient(
-      to right,
-      #042354,
-      #042354,
-      $sec-color-light,
-      #042354,
-      #042354
-    );
-    -webkit-text-fill-color: transparent;
-    -webkit-background-clip: text;
-    background-clip: text;
-  }
-  &.darkmode {
-    background-color: $main-color-dark;
-    color: $text-color-dark;
-    .filesui-nav {
-      background-color: rgba(4, 35, 84, 0.559);
-      color: $text-color-dark;
-      box-shadow: rgba(234, 238, 243, 0.161) 0px -1px 1px inset;
-    }
-
-    .gradient-span {
-      font-weight: 700;
-      background: linear-gradient(to right, $sec-color-light, $sec-color-light);
-      -webkit-text-fill-color: transparent;
-      -webkit-background-clip: text;
-      background-clip: text;
-    }
-  }
-
-  @media screen and (max-width: 900px) {
-    width: 100%;
-    .filesui-nav {
-      transition: all 0.4s ease-in-out;
-      color: #042354;
-      height: 64px;
-      background-color: rgba(255, 255, 255, 0.559);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      box-shadow: rgb(234, 238, 243) 0px -1px 1px inset;
-      width: 100%;
-      font-weight: 300;
-
-      .filesui-nav-container {
-        p {
-          letter-spacing: 0em;
-          line-height: 1.334;
-          font-size: 1rem;
-        }
-        .filesui-nav-logo-container {
-          margin-right: 7px;
-
-          .filesui-nav-logo {
-            width: 35px;
-            height: 35px;
-          }
-        }
-
-        .left-part {
-          display: flex;
-          justify-content: flex-start;
-          align-items: center;
-          p {
-            font-size: 1.1rem;
-            width: 150px;
-          }
-        }
-      }
-    }
-    .filesui-main {
-      flex-direction: column;
-      gap: 5px;
-      align-items: center;
-      width: 100%;
-      //padding: 15px;
-      .fui-main-left,
-      .fui-main-right {
-        width: 100%;
-        margin-bottom: 20px;
-      }
-      .fui-main-left {
-        //padding-top: 5vh;
-        min-height: auto;
-        .fui-logo-img {
-          width: 30vw;
-          height: auto;
-        }
-        .fui-logo-text {
-          font-size: 2.8em;
-          text-align: center;
-        }
-        .fui-description {
-          //font-size: 1.2em;
-          text-align: left;
-        }
-      }
-    }
-    .filesui-footer {
-      font-size: smaller;
-    }
-  }
-}
-
-.rc-hl-code-line {
-  font-size: 16px !important;
-  line-height: 19px !important;
-}
diff --git a/src/templates/NavBarTemplate.jsx b/src/templates/NavBarTemplate.jsx
deleted file mode 100644
index 5fe7b9a0b5f3ef8474dda5554cb6a17e2cdc2116..0000000000000000000000000000000000000000
--- a/src/templates/NavBarTemplate.jsx
+++ /dev/null
@@ -1,222 +0,0 @@
-import * as React from "react";
-import AppBar from "@mui/material/AppBar";
-import Box from "@mui/material/Box";
-import CssBaseline from "@mui/material/CssBaseline";
-import Divider from "@mui/material/Divider";
-import Drawer from "@mui/material/Drawer";
-import MenuIcon from "@mui/icons-material/Menu";
-import Toolbar from "@mui/material/Toolbar";
-import Typography from "@mui/material/Typography";
-import logoLight from "../static/files-ui-logo-blue-dark.png";
-import logo_blue from "../static/files-ui-logo-blue.png";
-import { IconButton, Stack, styled, Tooltip } from "@mui/material";
-import GitHubIcon from "@mui/icons-material/GitHub";
-import DarkModeLightModeButton from "../components/MainPage/DarkModeLightModeButton";
-import MainMenuSideBar from "../components/MainMenu/MainMenuSideBar";
-import logo_text_blue from "../static/files-ui-logo-text-med.png";
-import logo_text_blue_dark from "../static/files-ui-logo-text-med-dark.png";
-import { UserContext } from "../globals/contexts/UserContext";
-import AnchorToTab from "../components/util-components/AnchorToTab";
-
-const drawerWidth = 280;
-const StyledImage = styled("img")(({ theme }) => ({
-  height: "100%",
-  maxHeight: "40px",
-  marginRight: "10px",
-
-  [theme.breakpoints.up("sm")]: {
-    display: "none",
-  },
-}));
-function NavBarTemplate(props) {
-  const [usuario, dispatch] = React.useContext(UserContext);
-  const darkModeOn = usuario.darkMode;
-  //const navigate = useNavigateToTop();
-  const {
-    window,
-    children,
-    /* darkModeOn, */ /* handleDarkMode, */ selectedIndex,
-  } = props;
-  const [mobileOpen, setMobileOpen] = React.useState(false);
-
-  //const [selectedIndex, setSelectedIndex] = React.useState(0);
-  const handleDarkMode = () => {
-    // setDarkModeOn((darkModeOn) => !darkModeOn);
-    if (!darkModeOn) dispatch({ type: "TURNOFFLIGHT" });
-    else dispatch({ type: "TURNONLIGHT" });
-  };
-
-  const handleGoGitRepo = () => {
-    alert("HAAA");
-    window.open("https://github.com/files-ui", "_blank");
-  };
-
-  const handleDrawerToggle = () => {
-    setMobileOpen(!mobileOpen);
-  };
-
-  const drawer = (
-    <div>
-      <Toolbar>
-        <a href="/" style={{ textDecoration: "none" }}>
-          <Stack
-            direction={"row"}
-            alignItems="center"
-            sx={{ "&:hover": { cursor: "pointer" } }}
-            // onClick={() => navigate("/")}
-          >
-            <img
-              style={{
-                height: "40px",
-                marginRight: "5px",
-              }}
-              className="filesui-nav-logo"
-              //src={logo_blue }
-              src={!darkModeOn ? logo_blue : logoLight}
-              alt="files-ui-main-logo"
-            />
-            <img
-              src={darkModeOn ? logo_text_blue_dark : logo_text_blue}
-              // src={darkModeOn ? logo_text_blue_dark : logo_text_blue}
-              alt="files-ui-main-logo-text"
-              height={16}
-            />
-            {/*   <Typography variant="h6" noWrap component="div" color="primary">
-              Files ui
-            </Typography> */}
-          </Stack>
-        </a>
-      </Toolbar>
-
-      <Divider />
-
-      <MainMenuSideBar
-        //setSelectedIndex={setSelectedIndex}
-        selectedIndex={selectedIndex}
-        //items={}
-      />
-    </div>
-  );
-
-  const container =
-    window !== undefined ? () => window().document.body : undefined;
-
-  return (
-    <Box sx={{ display: "flex", flexDirection: { xs: "column", sm: "row" } ,transition:"all 0.4s ease-in-out"}}>
-      <CssBaseline />
-      <AppBar
-        className="section-container"
-        position="fixed"
-        sx={{
-          width: { sm: `calc(100% - ${drawerWidth}px)` },
-          ml: { sm: `${drawerWidth}px` },
-          bgcolor: "rgba(255,255,255,0.7)",
-          //color: "skyblue",
-        }}
-      >
-        <Toolbar>
-          <IconButton
-            color="primary"
-            aria-label="open drawer"
-            edge="start"
-            onClick={handleDrawerToggle}
-            sx={{ mr: 2, display: { sm: "none" } }}
-          >
-            <MenuIcon />
-          </IconButton>
-
-          <StyledImage
-            src={ logo_blue }
-            //src={!darkModeOn ? logo_blue : logoLight}
-            alt="files-ui-main-logo"
-          />
-
-          <Typography
-            variant="h6"
-            noWrap
-            component="div"
-            color="primary"
-            sx={{ display: { sm: "none" } }}
-          >
-            Files ui
-          </Typography>
-          <Box style={{ flexGrow: 1 }} />
-          <Stack direction="row" spacing={1}>
-            <AnchorToTab href="https://github.com/files-ui">
-              <Tooltip title="Go to Files-ui GitHub repo">
-                <IconButton
-                  style={{ borderRadius: "8px", border: "0.5px solid #eaeef3" }}
-                  //onClick={handleGoGitRepo}
-                  color="secondary"
-                  aria-label="upload picture"
-                  component="label"
-                >
-                  <GitHubIcon /* htmlColor="white" */ />
-                </IconButton>
-              </Tooltip>
-            </AnchorToTab>
-            <DarkModeLightModeButton
-              darkModeOn={darkModeOn}
-              onChangeDarkMode={handleDarkMode}
-            />
-          </Stack>
-        </Toolbar>
-      </AppBar>
-      <Box
-        component="nav"
-        sx={{ width: { sm: drawerWidth }, flexShrink: { sm: 0 } }}
-        aria-label="mailbox folders"
-      >
-        {/* The implementation can be swapped with js to avoid SEO duplication of links. */}
-        <Drawer
-          container={container}
-          variant="temporary"
-          open={mobileOpen}
-          onClose={handleDrawerToggle}
-          ModalProps={{
-            keepMounted: true, // Better open performance on mobile.
-          }}
-          sx={{
-            display: { xs: "block", sm: "none" },
-            "& .MuiDrawer-paper": {
-              boxSizing: "border-box",
-              width: drawerWidth,
-            },
-          }}
-        >
-          {drawer}
-        </Drawer>
-        <Drawer
-          variant="permanent"
-          sx={{
-            display: { xs: "none", sm: "block" },
-            "& .MuiDrawer-paper": {
-              boxSizing: "border-box",
-              width: drawerWidth,
-            },
-          }}
-          open
-        >
-          {drawer}
-        </Drawer>
-      </Box>
-      <Box
-        component="main"
-        sx={{
-          flexGrow: 1,
-          p: { xs: 1, sm: 3 },
-          width: {
-            sm: `calc(100% - ${drawerWidth}px)`,
-            //md: `calc(100% - ${240}px)`,
-          },
-        }}
-      >
-        <Toolbar />
-
-        {children}
-      </Box>
-    </Box>
-  );
-}
-
-export default NavBarTemplate;
diff --git a/src/templates/TableTemplate.jsx b/src/templates/TableTemplate.jsx
deleted file mode 100644
index c1cc183a6c061821c5564ab57dc47bb3be3dc7f6..0000000000000000000000000000000000000000
--- a/src/templates/TableTemplate.jsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import * as React from "react";
-import Table from "@mui/material/Table";
-import TableBody from "@mui/material/TableBody";
-import TableCell from "@mui/material/TableCell";
-import TableContainer from "@mui/material/TableContainer";
-import TableHead from "@mui/material/TableHead";
-import TableRow from "@mui/material/TableRow";
-import Paper from "@mui/material/Paper";
-
-function createData(name, calories, fat, carbs, protein) {
-  return { name, calories, fat, carbs, protein };
-}
-
-const rows = [
-  createData("Frozen yoghurt", 159, 6.0, 24, 4.0),
-  createData("Ice cream sandwich", 237, 9.0, 37, 4.3),
-  createData("Eclair", 262, 16.0, 24, 6.0),
-  createData("Cupcake", 305, 3.7, 67, 4.3),
-  createData("Gingerbread", 356, 16.0, 49, 3.9)
-];
-
-export default function TableTemplate() {
-  return (
-    <div style={{ display: "flex", flexDirection: "column" }}>
-      <div style={{ display: "flex", flexDirection: "column" }}>
-        <TableContainer component={Paper}>
-          <Table sx={{ minWidth: 650 }} aria-label="simple table">
-            <TableHead>
-              <TableRow>
-                <TableCell>Dessert (100g serving)</TableCell>
-                <TableCell align="right">Calories</TableCell>
-                <TableCell align="right">Fat&nbsp;(g)</TableCell>
-                <TableCell align="right">Carbs&nbsp;(g)</TableCell>
-                <TableCell align="right">Protein&nbsp;(g)</TableCell>
-              </TableRow>
-            </TableHead>
-            <TableBody>
-              {rows.map((row) => (
-                <TableRow
-                  key={row.name}
-                  sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
-                >
-                  <TableCell component="th" scope="row">
-                    {row.name}
-                  </TableCell>
-                  <TableCell align="right">{row.calories}</TableCell>
-                  <TableCell align="right">{row.fat}</TableCell>
-                  <TableCell align="right">{row.carbs}</TableCell>
-                  <TableCell align="right">{row.protein}</TableCell>
-                </TableRow>
-              ))}
-            </TableBody>
-          </Table>
-        </TableContainer>
-      </div>
-    </div>
-  );
-}
diff --git a/src/tester/AvatarTester.tsx b/src/tester/AvatarTester.tsx
deleted file mode 100644
index fd8b8cdf87815abb668fd738da2dcb1a8b8c64cf..0000000000000000000000000000000000000000
--- a/src/tester/AvatarTester.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import * as React from "react";
-import { Avatar } from "../files-ui";
-import { ServerResponse, uploadFile } from "../files-ui";
-
-export const resultURL: string =
-  "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ1YdE-2sQT4na6RwujeATyMBcCXqg0Gf76TYTplRkMkq0wIi_SewCDq6VeUGxPwpK_Qd8&usqp=CAU";
-export const initURL: string =
-  "https://sm.ign.com/ign_latam/screenshot/default/goku-ssj-blue-3_6qjv.jpg";
-
-const rowStyle: React.CSSProperties = {
-  display: "flex",
-  flexDirection: "row",
-  padding: "20px",
-  border: "1px dotted orange",
-  borderRadius: "8px",
-  boxSizing: "border-box",
-  margin: "25px 0",
-  backgroundColor: "white",
-  gap: "15px",
-};
-
-const REMOTE =
-  "https://files-ui-express-static-file-storage.vercel.app/39d33dff2d41b522c1ea276c4b82507f96b9699493d2e7b3f5c864ba743d9503";
-const LOCAL =
-  "http://localhost/39d33dff2d41b522c1ea276c4b82507f96b9699493d2e7b3f5c864ba743d9503";
-
-interface AvatarTesterProps {}
-const AvatarTester: React.FC<AvatarTesterProps> = (
-  props: AvatarTesterProps
-) => {
-  const [avatarSrc, setAvatarSrc] = React.useState<string | undefined>(
-    undefined
-  );
-
-  /*  const handleChange = async (file: File) => {
-    const endpoint: string = "http://localhost:2800/upload-avatar";
-    const response: UploadPromiseResponse = await uploadPromiseXHR(
-      { id: 0, file: file, xhr: new XMLHttpRequest() },
-      endpoint,
-      "POST",
-      {
-        Authorization: "bearer bJUKYIBVUKIBHUKYIBHVKULIUBHKLÑBJ",
-        "z-header": "HAAAAAAA",
-      }
-    );
-    //  const res: boolean = uploadFile(file, endpoint);
-    const serverResponse: ServerResponse = response.uploadResponse
-      .serverResponse as ServerResponse;
-    const { url } = serverResponse.payload;
-    setAvatarSrc(url);
-    console.log(serverResponse.payload);
-  }; */
-
-  const handleChange2 = async (file: File) => {
-    const endpoint: string = REMOTE + "/file/28048465460";
-    const res: ServerResponse = await uploadFile(file, endpoint);
-    const { url } = res.payload;
-    setAvatarSrc(url);
-  };
-
-  return (
-    <React.Fragment>
-      <div style={rowStyle}>
-        <Avatar
-          src={avatarSrc}
-          variant="circle"
-          style={{ width: "300px", height: "300px" }}
-          onChange={handleChange2}
-        />
-      </div>
-    </React.Fragment>
-  );
-};
-export default AvatarTester;
diff --git a/src/theme/mainTheme.js b/src/theme/mainTheme.js
deleted file mode 100644
index abf5413b22021680cd4b54145ed9eb924d173f75..0000000000000000000000000000000000000000
--- a/src/theme/mainTheme.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { createTheme } from "@mui/material/styles";
-
-export const MUItheme = (modeLight = "light") =>
-  createTheme({
-    palette: {
-      mode: modeLight,
-      primary: {
-        // light: will be calculated from palette.primary.main,
-        main: modeLight === "light" ? "#042354" : "#55b4f2",
-        // dark: will be calculated from palette.primary.main,
-        // contrastText: will be calculated to contrast with palette.primary.main
-      },
-      secondary: {
-        light: "#0066ff",
-        main: "#55b4f2",
-        // dark: will be calculated from palette.secondary.main,
-        //contrastText: '#ffcc00',
-      },
-    },
-    typography: {
-      fontFamily: ['"Poppins", sans-serif'],
-    },
-  });
diff --git a/src/files-ui/tooltip/Tooltip.scss b/src/tooltip/Tooltip.scss
similarity index 100%
rename from src/files-ui/tooltip/Tooltip.scss
rename to src/tooltip/Tooltip.scss
diff --git a/src/files-ui/tooltip/Tooltip.tsx b/src/tooltip/Tooltip.tsx
similarity index 100%
rename from src/files-ui/tooltip/Tooltip.tsx
rename to src/tooltip/Tooltip.tsx
diff --git a/src/files-ui/tooltip/TooltipProps.ts b/src/tooltip/TooltipProps.ts
similarity index 100%
rename from src/files-ui/tooltip/TooltipProps.ts
rename to src/tooltip/TooltipProps.ts
diff --git a/src/files-ui/tooltip/index.ts b/src/tooltip/index.ts
similarity index 100%
rename from src/files-ui/tooltip/index.ts
rename to src/tooltip/index.ts
diff --git a/src/types/PageProps.ts b/src/types/PageProps.ts
deleted file mode 100644
index 8fac0f2eaed7d43f2efa6ad80c1557266bcf625d..0000000000000000000000000000000000000000
--- a/src/types/PageProps.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-export type PageList =
-    "Getting Started" |
-    "Usage" |
-    "Dropzone Demo" |
-    "FileMosaic Demo" |
-    "FileCard Demo" |
-    "FileInputButton Demo" |
-    "FullScreen Demo" |
-    "Avatar Demo" |
-    "Dropzone Api" |
-    "FileMosaic Api" |
-    "FileCard Api" |
-    "FileInputButton Api" |
-    "FullScreen Api" |
-    "Avatar Api" |
-    "ImagePreview Api" |
-    "VideoPreview Api" |
-    "File Icons" |
-    "Localization" |
-    "Server Side" |
-    "Types" |
-    "File Reders" |
-    "File Upload" |
-    "File Download"
-    ;
-
-export type PageProps = {
-    pageBefore: PageProps;
-    pageAfter: PageProps;
-    url?: string;
-    key: PageList;
-}
\ No newline at end of file
diff --git a/src/utils.ts b/src/utils.ts
deleted file mode 100644
index 392989b393e90dd8bcae14416e2027a181427d7d..0000000000000000000000000000000000000000
--- a/src/utils.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { ExtFile, ExtFileInstance } from "./files-ui";
-
-export const print_manager = (extFileList: ExtFile[] | ExtFileInstance[] | undefined, message: string = ""): void => {
-    if (extFileList)
-        console.log(`FileManagerLog ${message}`, extFileList?.map(F => F.uploadStatus));
-    else
-        console.log(`FileManagerLog ${message}`);
-
-}
\ No newline at end of file
diff --git a/src/files-ui/utils/click.utils.ts b/src/utils/click.utils.ts
similarity index 100%
rename from src/files-ui/utils/click.utils.ts
rename to src/utils/click.utils.ts
diff --git a/src/files-ui/utils/dragdrop.utils.ts b/src/utils/dragdrop.utils.ts
similarity index 100%
rename from src/files-ui/utils/dragdrop.utils.ts
rename to src/utils/dragdrop.utils.ts
diff --git a/src/files-ui/utils/index.ts b/src/utils/index.ts
similarity index 100%
rename from src/files-ui/utils/index.ts
rename to src/utils/index.ts
diff --git a/src/utils/redirect.js b/src/utils/redirect.js
deleted file mode 100644
index ef57dfaaee9c4ac77e6a3eff3392569a52a4035d..0000000000000000000000000000000000000000
--- a/src/utils/redirect.js
+++ /dev/null
@@ -1,12 +0,0 @@
-export const redirect = (to = "") => {
-  console.log("redirectredirect", to);
-  if (to.length === 0) return;
-  const anchor = document.createElement("a");
-  anchor.href = to;
-  anchor.target = "_blank";
-  anchor.rel = "noopener noreferrer";
-  anchor.style.display = "none";
-  document.body.appendChild(anchor);
-  anchor.click();
-  document.body.removeChild(anchor);
-};
diff --git a/src/files-ui/utils/ripple/index.ts b/src/utils/ripple/index.ts
similarity index 100%
rename from src/files-ui/utils/ripple/index.ts
rename to src/utils/ripple/index.ts
diff --git a/src/files-ui/utils/ripple/ripple.ts b/src/utils/ripple/ripple.ts
similarity index 100%
rename from src/files-ui/utils/ripple/ripple.ts
rename to src/utils/ripple/ripple.ts
diff --git a/src/utils/scrollHandler.ts b/src/utils/scrollHandler.ts
deleted file mode 100644
index 67725274acbd6901899b386eb32e2f3ddb90c634..0000000000000000000000000000000000000000
--- a/src/utils/scrollHandler.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-export type RightMenuItemComplete = {
-  id: number;
-  label: string;
-  referTo: string;
-  element?: HTMLElement;
-}
-
-export const scrollHandler = (rightMenuItems: RightMenuItemComplete[],
-  setSelectedItem: React.Dispatch<React.SetStateAction<number>>) => {
-
-  if (rightMenuItems.length === 0) return;
-  let menu: HTMLElement | null = document.querySelector(".section-container");
-  if (menu === null) return;
-
-  const rightMenuItemsWithIdSec = rightMenuItems.map((x) => {
-    return {
-      ...x,
-      idSec: x.referTo.split("#")[1],
-    };
-  });
-
-  const arrElements = rightMenuItemsWithIdSec.map((x) => {
-    return { ...x, element: document.getElementById(x.idSec) };
-  });
-
-  let pos_menu = window.pageYOffset + menu.offsetHeight;
-
-  const arrElementsEnhanced = arrElements.map((x) => {
-    const element = x.element;
-    const postElement = element ? element.offsetTop + element.offsetHeight : Infinity;
-    const distance = Math.round(postElement - pos_menu);
-    return { ...x, distance };
-  });
-
-  let min = Math.min(
-    ...arrElementsEnhanced
-      .map((x) => Math.round(x.distance))
-      .filter((x) => x > 0)
-  );
-
-  arrElementsEnhanced.forEach((x) => {
-    if (x.distance === min) {
-      setSelectedItem((_id) => {
-        return x.id;
-      });
-    }
-  });
-};
diff --git a/tsconfig.json b/tsconfig.json
index f1ef334c6e6d98983da8e8c074dd3a454b605f77..302e0326da537e9d4625b582fe111e21920ed706 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,26 +1,17 @@
 {
   "compilerOptions": {
-    "target": "es5",
-    "lib": [
-      "dom",
-      "dom.iterable",
-      "esnext"
-    ],
-    "allowJs": true,
-    "skipLibCheck": true,
-    "esModuleInterop": true,
-    "allowSyntheticDefaultImports": true,
-    "strict": true,
-    "forceConsistentCasingInFileNames": true,
-    "noFallthroughCasesInSwitch": true,
+    "declaration": true,
+    "declarationDir": "build",
     "module": "esnext",
+    "target": "es5",
+    "lib": ["es6", "dom", "es2016", "es2017"],
+    "sourceMap": true,
+    "jsx": "react",
     "moduleResolution": "node",
-    "resolveJsonModule": true,
-    "isolatedModules": true,
-    "noEmit": true,
-    "jsx": "react-jsx"
+    "allowSyntheticDefaultImports": true,
+    "esModuleInterop": true
   },
-  "include": [
-    "src"
-, "tests", "jest.config.js"  ]
-}
+  "include": ["src/**/*"],
+  "exclude": ["node_modules", "build"],
+  "baseUrl": "./",
+}
\ No newline at end of file
diff --git a/use-cases.md b/use-cases.md
deleted file mode 100644
index 8cc66f90d2dd1b2da13235ef7678d1b32841dab0..0000000000000000000000000000000000000000
--- a/use-cases.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Files -ui Use Cases
-- set the thumbnail, after loads the hd image show loader
\ No newline at end of file