From 0eca88bfd7735aa6ab5648a31d45f53cbf25cbc1 Mon Sep 17 00:00:00 2001 From: ugyballoons Date: Tue, 27 Jun 2023 15:46:23 +0100 Subject: [PATCH 01/64] Start afresh --- Dockerfile | 67 - MANIFEST.in | 1 - Makefile | 20 - README.rst | 8 - manifests/base/configmap.yaml | 12 - manifests/base/deployment.yaml | 46 - manifests/base/kustomization.yaml | 11 - manifests/base/service.yaml | 14 - package-lock.json | 8041 ----------------- package.json | 31 - pyproject.toml | 105 - requirements/dev.in | 19 - requirements/dev.txt | 712 -- requirements/main.in | 17 - requirements/main.txt | 860 -- scripts/docker-tag.sh | 14 - scripts/install-base-packages.sh | 34 - scripts/install-dependency-packages.sh | 34 - scripts/uploader.py | 43 - setup.cfg | 59 - setup.py | 3 - src/images/copy-to-clipboard.svg | 8 - src/images/heartbeat_active.svg | 11 - src/images/heartbeat_channel_stopped.svg | 6 - src/images/heartbeat_stopped.svg | 6 - src/images/heartbeat_unknown.svg | 6 - src/images/image-viewer-link.svg | 21 - src/js/heartbeats.js | 78 - src/js/modules/calendar-controls.js | 19 - src/js/modules/draw-grouped-table.js | 100 - src/js/modules/draw-simple-table.js | 65 - src/js/modules/historical-reset.js | 19 - src/js/modules/table-control-grouped.js | 203 - src/js/modules/table-control.js | 182 - src/js/modules/table-refresher.js | 21 - src/js/modules/utils.js | 276 - src/js/night-report/tabs-ui.js | 78 - src/js/pages/admin.js | 5 - src/js/pages/allsky.js | 40 - src/js/pages/allsky_historical.js | 5 - src/js/pages/auxtel.js | 37 - src/js/pages/auxtel_historical.js | 17 - src/js/pages/night_report.js | 120 - src/js/pages/night_report_historical.js | 6 - src/js/pages/startracker.js | 25 - src/js/pages/startracker_historical.js | 12 - src/rubintv/__init__.py | 14 - src/rubintv/app.py | 176 - src/rubintv/background/__init__.py | 0 src/rubintv/background/heartbeats.py | 130 - src/rubintv/cli.py | 55 - src/rubintv/config.py | 41 - src/rubintv/handlers/__init__.py | 44 - src/rubintv/handlers/external/__init__.py | 27 - .../handlers/external/endpoints_helpers.py | 747 -- src/rubintv/handlers/internal/__init__.py | 10 - src/rubintv/handlers/internal/index.py | 23 - src/rubintv/models/__init__.py | 0 src/rubintv/models/models_helpers.py | 43 - src/rubintv/models/models_init.py | 205 - .../static/images/allsky-cardinals.svg | 11 - src/rubintv/static/images/crescent-moon.svg | 5 - src/rubintv/static/images/favicon.png | Bin 696 -> 0 bytes src/rubintv/static/images/flowers.svg | 230 - src/rubintv/static/images/history-line.svg | 5 - src/rubintv/static/images/logos/AURA_Logo.svg | 12 - .../static/images/logos/Rubin_Logo.png | Bin 84074 -> 0 bytes .../static/images/logos/Rubin_Logo_grey.jpg | Bin 37421 -> 0 bytes src/rubintv/static/images/logos/SLAC_Logo.svg | 19 - src/rubintv/static/images/logos/Summit.jpg | Bin 39319 -> 0 bytes src/rubintv/static/images/logos/cactus.svg | 50 - .../static/images/logos/slac_lsstcam.png | Bin 295901 -> 0 bytes src/rubintv/static/images/logos/ts8.png | Bin 147594 -> 0 bytes src/rubintv/static/images/movie.svg | 1 - src/rubintv/static/images/pending.gif | Bin 37049 -> 0 bytes src/rubintv/static/images/to-top.svg | 5 - src/rubintv/static/images/tri-pointer.svg | 7 - src/rubintv/templates/admin.jinja | 72 - .../templates/cameras/allsky-historical.jinja | 28 - .../templates/cameras/allsky-image.jinja | 7 - src/rubintv/templates/cameras/allsky.jinja | 46 - src/rubintv/templates/cameras/calendar.jinja | 62 - src/rubintv/templates/cameras/camera.jinja | 68 - .../templates/cameras/data-table-header.jinja | 32 - .../templates/cameras/data-table.jinja | 22 - .../templates/cameras/historical.jinja | 40 - src/rubintv/templates/cameras/layout.jinja | 8 - .../cameras/night-report-events.jinja | 42 - .../cameras/night-report-historical.jinja | 1 - .../cameras/night-report-layout.jinja | 25 - .../templates/cameras/night-report-link.jinja | 20 - .../templates/cameras/night-report-text.jinja | 25 - .../templates/cameras/night-report.jinja | 4 - .../templates/cameras/not_online.jinja | 5 - .../templates/cameras/per-day-channels.jinja | 19 - .../templates/cameras/per-day-refresh.jinja | 2 - src/rubintv/templates/current.jinja | 9 - src/rubintv/templates/home.jinja | 25 - src/rubintv/templates/layout.jinja | 85 - src/rubintv/templates/location_home.jinja | 48 - src/rubintv/timer.py | 23 - src/sass/buttons.sass | 65 - src/sass/calendar.sass | 76 - src/sass/reset.sass | 37 - tests/__init__.py | 0 tests/handlers/__init__.py | 0 tests/handlers/external/__init__.py | 0 tests/handlers/external/endpoints_test.py | 262 - tests/handlers/internal/__init__.py | 0 tests/handlers/internal/index_test.py | 26 - tests/test_app.py | 43 - 111 files changed, 14604 deletions(-) delete mode 100644 Dockerfile delete mode 100644 MANIFEST.in delete mode 100644 Makefile delete mode 100644 README.rst delete mode 100644 manifests/base/configmap.yaml delete mode 100644 manifests/base/deployment.yaml delete mode 100644 manifests/base/kustomization.yaml delete mode 100644 manifests/base/service.yaml delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 pyproject.toml delete mode 100644 requirements/dev.in delete mode 100644 requirements/dev.txt delete mode 100644 requirements/main.in delete mode 100644 requirements/main.txt delete mode 100755 scripts/docker-tag.sh delete mode 100755 scripts/install-base-packages.sh delete mode 100755 scripts/install-dependency-packages.sh delete mode 100644 scripts/uploader.py delete mode 100644 setup.cfg delete mode 100644 setup.py delete mode 100644 src/images/copy-to-clipboard.svg delete mode 100644 src/images/heartbeat_active.svg delete mode 100644 src/images/heartbeat_channel_stopped.svg delete mode 100644 src/images/heartbeat_stopped.svg delete mode 100644 src/images/heartbeat_unknown.svg delete mode 100644 src/images/image-viewer-link.svg delete mode 100644 src/js/heartbeats.js delete mode 100644 src/js/modules/calendar-controls.js delete mode 100644 src/js/modules/draw-grouped-table.js delete mode 100644 src/js/modules/draw-simple-table.js delete mode 100644 src/js/modules/historical-reset.js delete mode 100644 src/js/modules/table-control-grouped.js delete mode 100644 src/js/modules/table-control.js delete mode 100644 src/js/modules/table-refresher.js delete mode 100644 src/js/modules/utils.js delete mode 100644 src/js/night-report/tabs-ui.js delete mode 100644 src/js/pages/admin.js delete mode 100644 src/js/pages/allsky.js delete mode 100644 src/js/pages/allsky_historical.js delete mode 100644 src/js/pages/auxtel.js delete mode 100644 src/js/pages/auxtel_historical.js delete mode 100644 src/js/pages/night_report.js delete mode 100644 src/js/pages/night_report_historical.js delete mode 100644 src/js/pages/startracker.js delete mode 100644 src/js/pages/startracker_historical.js delete mode 100644 src/rubintv/__init__.py delete mode 100644 src/rubintv/app.py delete mode 100644 src/rubintv/background/__init__.py delete mode 100644 src/rubintv/background/heartbeats.py delete mode 100644 src/rubintv/cli.py delete mode 100644 src/rubintv/config.py delete mode 100644 src/rubintv/handlers/__init__.py delete mode 100644 src/rubintv/handlers/external/__init__.py delete mode 100644 src/rubintv/handlers/external/endpoints_helpers.py delete mode 100644 src/rubintv/handlers/internal/__init__.py delete mode 100644 src/rubintv/handlers/internal/index.py delete mode 100644 src/rubintv/models/__init__.py delete mode 100644 src/rubintv/models/models_helpers.py delete mode 100644 src/rubintv/models/models_init.py delete mode 100644 src/rubintv/static/images/allsky-cardinals.svg delete mode 100644 src/rubintv/static/images/crescent-moon.svg delete mode 100644 src/rubintv/static/images/favicon.png delete mode 100644 src/rubintv/static/images/flowers.svg delete mode 100644 src/rubintv/static/images/history-line.svg delete mode 100644 src/rubintv/static/images/logos/AURA_Logo.svg delete mode 100644 src/rubintv/static/images/logos/Rubin_Logo.png delete mode 100644 src/rubintv/static/images/logos/Rubin_Logo_grey.jpg delete mode 100644 src/rubintv/static/images/logos/SLAC_Logo.svg delete mode 100644 src/rubintv/static/images/logos/Summit.jpg delete mode 100644 src/rubintv/static/images/logos/cactus.svg delete mode 100644 src/rubintv/static/images/logos/slac_lsstcam.png delete mode 100644 src/rubintv/static/images/logos/ts8.png delete mode 100644 src/rubintv/static/images/movie.svg delete mode 100644 src/rubintv/static/images/pending.gif delete mode 100644 src/rubintv/static/images/to-top.svg delete mode 100644 src/rubintv/static/images/tri-pointer.svg delete mode 100644 src/rubintv/templates/admin.jinja delete mode 100644 src/rubintv/templates/cameras/allsky-historical.jinja delete mode 100644 src/rubintv/templates/cameras/allsky-image.jinja delete mode 100644 src/rubintv/templates/cameras/allsky.jinja delete mode 100644 src/rubintv/templates/cameras/calendar.jinja delete mode 100644 src/rubintv/templates/cameras/camera.jinja delete mode 100644 src/rubintv/templates/cameras/data-table-header.jinja delete mode 100644 src/rubintv/templates/cameras/data-table.jinja delete mode 100644 src/rubintv/templates/cameras/historical.jinja delete mode 100644 src/rubintv/templates/cameras/layout.jinja delete mode 100644 src/rubintv/templates/cameras/night-report-events.jinja delete mode 100644 src/rubintv/templates/cameras/night-report-historical.jinja delete mode 100644 src/rubintv/templates/cameras/night-report-layout.jinja delete mode 100644 src/rubintv/templates/cameras/night-report-link.jinja delete mode 100644 src/rubintv/templates/cameras/night-report-text.jinja delete mode 100644 src/rubintv/templates/cameras/night-report.jinja delete mode 100644 src/rubintv/templates/cameras/not_online.jinja delete mode 100644 src/rubintv/templates/cameras/per-day-channels.jinja delete mode 100644 src/rubintv/templates/cameras/per-day-refresh.jinja delete mode 100644 src/rubintv/templates/current.jinja delete mode 100644 src/rubintv/templates/home.jinja delete mode 100644 src/rubintv/templates/layout.jinja delete mode 100644 src/rubintv/templates/location_home.jinja delete mode 100644 src/rubintv/timer.py delete mode 100644 src/sass/buttons.sass delete mode 100644 src/sass/calendar.sass delete mode 100644 src/sass/reset.sass delete mode 100644 tests/__init__.py delete mode 100644 tests/handlers/__init__.py delete mode 100644 tests/handlers/external/__init__.py delete mode 100644 tests/handlers/external/endpoints_test.py delete mode 100644 tests/handlers/internal/__init__.py delete mode 100644 tests/handlers/internal/index_test.py delete mode 100644 tests/test_app.py diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1cbded83..00000000 --- a/Dockerfile +++ /dev/null @@ -1,67 +0,0 @@ -# This Dockerfile has four stages: -# -# base-image -# Updates the base Python image with security patches and common system -# packages. This image becomes the base of all other images. -# dependencies-image -# Installs third-party dependencies (requirements/main.txt) into a virtual -# environment. This virtual environment is ideal for copying across build -# stages. -# install-image -# Installs the app into the virtual environment. -# runtime-image -# - Copies the virtual environment into place. -# - Runs a non-root user. -# - Sets up the entrypoint and port. - -FROM python:3.10.7-slim-buster AS base-image - -# Update system packages -COPY scripts/install-base-packages.sh . -RUN ./install-base-packages.sh && rm ./install-base-packages.sh - -FROM base-image AS dependencies-image - -# Install system packages only needed for building dependencies. -COPY scripts/install-dependency-packages.sh . -RUN ./install-dependency-packages.sh - -# Create a Python virtual environment -ENV VIRTUAL_ENV=/opt/venv -RUN python -m venv $VIRTUAL_ENV -# Make sure we use the virtualenv -ENV PATH="$VIRTUAL_ENV/bin:$PATH" -# Put the latest pip and setuptools in the virtualenv -RUN pip install --upgrade --no-cache-dir pip setuptools wheel - -# Install the app's Python runtime dependencies -COPY requirements/main.txt ./requirements.txt -RUN pip install --quiet --no-cache-dir -r requirements.txt - -FROM base-image AS install-image - -# Use the virtualenv -COPY --from=dependencies-image /opt/venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" - -COPY . /app -WORKDIR /app -RUN pip install --no-cache-dir . - -FROM base-image AS runtime-image - -# Create a non-root user -RUN useradd --create-home appuser -WORKDIR /home/appuser - -# Make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -COPY --from=install-image /opt/venv /opt/venv - -# Switch to non-root user -USER appuser - -EXPOSE 8080 - -ENTRYPOINT ["rubintv", "run", "--port", "8080"] diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 2525a4d0..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -graft src/rubintv/static/assets diff --git a/Makefile b/Makefile deleted file mode 100644 index 47e4a4f6..00000000 --- a/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -.PHONY: update-deps -update-deps: - pip install --upgrade pip-tools pip setuptools - pip-compile --upgrade --build-isolation --generate-hashes --output-file requirements/main.txt requirements/main.in - pip-compile --upgrade --build-isolation --generate-hashes --output-file requirements/dev.txt requirements/dev.in - -.PHONY: init -init: - pip install --editable . - pip install --upgrade -r requirements/main.txt -r requirements/dev.txt - rm -rf .tox - pip install --upgrade tox - pre-commit install - -.PHONY: update -update: update-deps init - -.PHONY: run -run: - adev runserver --app-factory create_app src/rubintv/app.py diff --git a/README.rst b/README.rst deleted file mode 100644 index 70933b0a..00000000 --- a/README.rst +++ /dev/null @@ -1,8 +0,0 @@ -######## -rubin-tv -######## - -Service to show streaming view of butler datasets - -rubin-tv is developed with the `Safir `__ framework. -`Get started with development with the tutorial `__. diff --git a/manifests/base/configmap.yaml b/manifests/base/configmap.yaml deleted file mode 100644 index 8a351c9c..00000000 --- a/manifests/base/configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: rubintv -data: - # These configurations are injected as environment variables into the - # app container. - SAFIR_NAME: "rubintv" - SAFIR_PROFILE: "production" - SAFIR_LOGGER: "rubintv" - SAFIR_LOG_LEVEL: "INFO" - GOOGLE_APPLICATION_CREDENTIALS: "/etc/rubintv/google_creds" diff --git a/manifests/base/deployment.yaml b/manifests/base/deployment.yaml deleted file mode 100644 index 00614316..00000000 --- a/manifests/base/deployment.yaml +++ /dev/null @@ -1,46 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: rubintv - labels: - app: rubintv -spec: - replicas: 5 - selector: - matchLabels: - name: rubintv - template: - metadata: - labels: - name: rubintv - spec: - automountServiceAccountToken: false - containers: - - name: app - imagePullPolicy: "Always" - # Use images field in a Kustomization to regularly set/update image tag - image: "lsstsqre/rubintv" - ports: - - containerPort: 8080 - name: app - envFrom: - - configMapRef: - name: rubintv - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - readOnlyRootFilesystem: true - volumeMounts: - - name: creds - mountPath: "/etc/rubintv" - readOnly: true - securityContext: - runAsNonRoot: true - runAsUser: 1000 - runAsGroup: 1000 - volumes: - - name: creds - secret: - secretName: rubintv diff --git a/manifests/base/kustomization.yaml b/manifests/base/kustomization.yaml deleted file mode 100644 index 086add5f..00000000 --- a/manifests/base/kustomization.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -images: - - name: lsstsqre/rubintv - newTag: 0.0.12 - -resources: - - configmap.yaml - - deployment.yaml - - service.yaml diff --git a/manifests/base/service.yaml b/manifests/base/service.yaml deleted file mode 100644 index e0a27653..00000000 --- a/manifests/base/service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: rubintv - labels: - app: rubintv -spec: - ports: - - name: rubintv-http - protocol: TCP - port: 8080 - targetPort: app - selector: - name: rubintv diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index c88702f3..00000000 --- a/package-lock.json +++ /dev/null @@ -1,8041 +0,0 @@ -{ - "name": "rubintv", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "rubintv", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "reconnecting-websocket": "^4.4.0" - }, - "devDependencies": { - "css-loader": "^6.7.3", - "css-minimizer-webpack-plugin": "^4.2.2", - "eslint": "^8.20.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.2.4", - "eslint-plugin-promise": "^6.0.0", - "mini-css-extract-plugin": "^2.7.5", - "postcss-loader": "^7.1.0", - "sass": "^1.59.3", - "sass-loader": "^13.2.1", - "webpack": "^5.75.0", - "webpack-cli": "^5.0.1" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@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, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "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", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "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" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@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": { - "@sinclair/typebox": "^0.25.16" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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": { - "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.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.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "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": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "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/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": 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==", - "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/@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": { - "@types/istanbul-lib-report": "*" - } - }, - "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==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "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": { - "@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/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", - "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", - "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", - "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "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" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001443", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001443.tgz", - "integrity": "sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/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/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "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==", - "dev": true - }, - "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/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/cosmiconfig": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", - "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", - "dev": true, - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "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" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", - "dev": true, - "dependencies": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "lightningcss": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/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": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "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/css-minimizer-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==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "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==", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "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.4", - "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.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/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==", - "dev": true - }, - "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "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.1", - "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.4", - "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.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", - "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.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", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", - "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" - } - ], - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.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==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.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==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "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" - } - }, - "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==", - "dev": true, - "dependencies": { - "ms": "2.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==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.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==", - "dev": true - }, - "node_modules/eslint-plugin-n": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.4.tgz", - "integrity": "sha512-tjnVMv2fiXYMnuiIFI8QMtyUFI42SckEEWvi8h68SWGWshfqO6SSCASy24dGMGAiy7NUk6DZt90DM0iNUsmQ5w==", - "dev": true, - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.9.0", - "minimatch": "^3.1.2", - "resolve": "^1.10.1", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", - "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "dependencies": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.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==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "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/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "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/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "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-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.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/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.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": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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": { - "@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/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/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/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", - "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", - "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/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==", - "dev": true, - "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==", - "dev": true - }, - "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==", - "dev": true, - "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/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/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/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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "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-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "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==", - "dev": true, - "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-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.1.0.tgz", - "integrity": "sha512-vTD2DJ8vJD0Vr1WzMQkRZWRjcynGh3t7NeoLg+Sb1TeuK7etiZfL/ZwHbaVa3M+Qni7Lj/29voV9IggnIUjlIw==", - "dev": true, - "dependencies": { - "cosmiconfig": "^8.0.0", - "klona": "^2.0.6", - "semver": "^7.3.8" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-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==", - "dev": true, - "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.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/reconnecting-websocket": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", - "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" - }, - "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": { - "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==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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": { - "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==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/sass": { - "version": "1.59.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.3.tgz", - "integrity": "sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/sass-loader": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.1.tgz", - "integrity": "sha512-VQUrgUa5/waIzMrzyuko3sj5WD9NMsYph91cNICx+OaODbRtLl6To2fswLx8MH2qNxXFqRtpvdPQIa7mE93YOA==", - "dev": true, - "dependencies": { - "klona": "^2.0.6", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "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/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "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", - "dev": true - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", - "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", - "dev": true, - "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==", - "dev": true, - "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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "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/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": { - "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==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.76.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", - "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", - "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.1", - "@webpack-cli/info": "^2.0.1", - "@webpack-cli/serve": "^2.0.1", - "colorette": "^2.0.14", - "commander": "^9.4.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - } - }, - "dependencies": { - "@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" - } - }, - "@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/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" - }, - "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" - } - } - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "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" - } - }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@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" - } - }, - "@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" - } - }, - "@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" - } - }, - "@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 - }, - "@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 - }, - "@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" - } - }, - "@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 - }, - "@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" - } - }, - "@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 - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "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==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@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": "*" - } - }, - "@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": "*" - } - }, - "@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==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "dev": true - }, - "@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": "*" - } - }, - "@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 - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "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==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "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==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", - "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", - "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", - "dev": true, - "requires": {} - }, - "@webpack-cli/serve": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", - "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "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==", - "dev": true, - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "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==", - "dev": true - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.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" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, - "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "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 - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001443", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001443.tgz", - "integrity": "sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.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==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "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 - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cosmiconfig": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", - "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", - "dev": true, - "requires": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", - "dev": true, - "requires": {} - }, - "css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "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": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", - "dev": true, - "requires": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "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==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "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": { - "@types/node": "*", - "jest-util": "^29.5.0", - "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==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "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==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "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.4", - "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.2", - "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==", - "dev": true, - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "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==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "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==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "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==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "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.1", - "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.4", - "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.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", - "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.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", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", - "dev": true, - "requires": {} - }, - "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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - } - } - }, - "eslint-plugin-n": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.4.tgz", - "integrity": "sha512-tjnVMv2fiXYMnuiIFI8QMtyUFI42SckEEWvi8h68SWGWshfqO6SSCASy24dGMGAiy7NUk6DZt90DM0iNUsmQ5w==", - "dev": true, - "requires": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.9.0", - "minimatch": "^3.1.2", - "resolve": "^1.10.1", - "semver": "^7.3.7" - } - }, - "eslint-plugin-promise": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", - "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dev": true, - "requires": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "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 - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "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 - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.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" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "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": { - "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==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "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": { - "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==", - "dev": true - }, - "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" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true - }, - "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 - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.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": { - "call-bind": "^1.0.2" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "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" - } - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "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==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "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 - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "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" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "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 - }, - "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 - }, - "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": { - "mime-db": "1.52.0" - } - }, - "mini-css-extract-plugin": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", - "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.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" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "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 - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "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": { - "find-up": "^4.0.0" - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "requires": { - "p-limit": "^2.2.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==", - "dev": true - }, - "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 - } - } - }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.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==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - } - }, - "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==", - "dev": true, - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} - }, - "postcss-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.1.0.tgz", - "integrity": "sha512-vTD2DJ8vJD0Vr1WzMQkRZWRjcynGh3t7NeoLg+Sb1TeuK7etiZfL/ZwHbaVa3M+Qni7Lj/29voV9IggnIUjlIw==", - "dev": true, - "requires": { - "cosmiconfig": "^8.0.0", - "klona": "^2.0.6", - "semver": "^7.3.8" - } - }, - "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==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - } - }, - "postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "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==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "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==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "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==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.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==", - "dev": true, - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "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==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "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==", - "dev": true, - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "requires": { - "resolve": "^1.20.0" - } - }, - "reconnecting-websocket": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", - "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" - }, - "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==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "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", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "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, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "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 - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "sass": { - "version": "1.59.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.3.tgz", - "integrity": "sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.1.tgz", - "integrity": "sha512-VQUrgUa5/waIzMrzyuko3sj5WD9NMsYph91cNICx+OaODbRtLl6To2fswLx8MH2qNxXFqRtpvdPQIa7mE93YOA==", - "dev": true, - "requires": { - "klona": "^2.0.6", - "neo-async": "^2.6.2" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.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" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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 - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "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==", - "dev": true - } - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", - "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "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==", - "dev": true, - "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" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "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" - } - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "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==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.76.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", - "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", - "dev": true, - "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": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "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==", - "dev": true - } - } - }, - "webpack-cli": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", - "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.1", - "@webpack-cli/info": "^2.0.1", - "@webpack-cli/serve": "^2.0.1", - "colorette": "^2.0.14", - "commander": "^9.4.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index a42005ed..00000000 --- a/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "rubintv", - "version": "1.0.0", - "description": "Client Side scripts for RubinTV", - "scripts": { - "build": "webpack --progress --no-devtool", - "dev-build": "webpack --progress --mode development", - "watch": "webpack --watch --progress --mode development", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "rubintv", - "license": "ISC", - "devDependencies": { - "css-loader": "^6.7.3", - "css-minimizer-webpack-plugin": "^4.2.2", - "eslint": "^8.20.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.2.4", - "eslint-plugin-promise": "^6.0.0", - "mini-css-extract-plugin": "^2.7.5", - "postcss-loader": "^7.1.0", - "sass": "^1.59.3", - "sass-loader": "^13.2.1", - "webpack": "^5.75.0", - "webpack-cli": "^5.0.1" - }, - "dependencies": { - "reconnecting-websocket": "^4.4.0" - } -} diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index d0fbc422..00000000 --- a/pyproject.toml +++ /dev/null @@ -1,105 +0,0 @@ -[build-system] -requires = [ - "setuptools>=42", - "wheel", - "setuptools_scm[toml]>=3.4" -] -build-backend = 'setuptools.build_meta' - -[tool.setuptools_scm] - -[tool.tox] -legacy_tox_ini = """ -[tox] -envlist = py,coverage-report,typing,lint -isolated_build = True - -[testenv] -description = Run pytest against {envname}. -deps = - -r{toxinidir}/requirements/main.txt - -r{toxinidir}/requirements/dev.txt -commands = - coverage run -m pytest {posargs} -passenv = GOOGLE_APPLICATION_CREDENTIALS - -[testenv:coverage-report] -description = Compile coverage from each test run. -skip_install = true -deps = coverage[toml]>=5.0.2 -depends = - py -commands = - coverage combine - coverage report - -[testenv:typing] -description = Run mypy. -commands = - mypy src/rubintv tests setup.py - -[testenv:lint] -description = Lint codebase by running pre-commit (Black, isort, Flake8). -skip_install = true -deps = - pre-commit -commands = pre-commit run --all-files - -[testenv:run-app] -description = Run the development server with auto-reload for code changes. -usedevelop = true -commands = adev runserver -vvvvv --app-factory create_app src/rubintv/app.py -passenv = GOOGLE_APPLICATION_CREDENTIALS - -[testenv:run-light] -description = Run the development server with auto-reload for code changes and minimal data load. -usedevelop = true -commands = adev runserver -vvvvv --app-factory create_app_light src/rubintv/app.py -passenv = GOOGLE_APPLICATION_CREDENTIALS -""" - -[tool.coverage.run] -parallel = true -branch = true -source = ["rubintv"] - -[tool.coverage.paths] -source = ["src", ".tox/*/site-packages"] - -[tool.coverage.report] -show_missing = true -exclude_lines = [ - "pragma: no cover", - "def __repr__", - "if self.debug:", - "if settings.DEBUG", - "raise AssertionError", - "raise NotImplementedError", - "if 0:", - "if __name__ == .__main__.:", - "if TYPE_CHECKING:" -] - -[tool.black] -line-length = 79 -target-version = ['py38'] -exclude = ''' -/( - \.eggs - | \.git - | \.mypy_cache - | \.tox - | \.venv - | _build - | build - | dist -)/ -''' -# Use single-quoted strings so TOML treats the string like a Python r-string -# Multi-line strings are implicitly treated by black as regular expressions - -[tool.isort] -include_trailing_comma = true -multi_line_output = 3 -known_first_party = ["rubintv", "tests"] -skip = ["docs/conf.py"] diff --git a/requirements/dev.in b/requirements/dev.in deleted file mode 100644 index c209d076..00000000 --- a/requirements/dev.in +++ /dev/null @@ -1,19 +0,0 @@ -# Editable development dependencies -# Add direct development, test, and documentation dependencies here, as well -# as implicit dev dependencies with constrained versions. -# -# After editing, update requirements/dev.txt by running: -# make update - --c main.txt - -aiohttp-devtools -coverage[toml] -mypy -pre-commit -pytest -pytest-aiohttp -python-dateutil -types-python-dateutil -types-PyYAML -beautifulsoup4 diff --git a/requirements/dev.txt b/requirements/dev.txt deleted file mode 100644 index 95ec23a7..00000000 --- a/requirements/dev.txt +++ /dev/null @@ -1,712 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --generate-hashes --output-file=requirements/dev.txt requirements/dev.in -# -aiohttp==3.8.4 \ - --hash=sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14 \ - --hash=sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391 \ - --hash=sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2 \ - --hash=sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e \ - --hash=sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9 \ - --hash=sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd \ - --hash=sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4 \ - --hash=sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b \ - --hash=sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41 \ - --hash=sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567 \ - --hash=sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275 \ - --hash=sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54 \ - --hash=sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a \ - --hash=sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef \ - --hash=sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99 \ - --hash=sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da \ - --hash=sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4 \ - --hash=sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e \ - --hash=sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699 \ - --hash=sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04 \ - --hash=sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719 \ - --hash=sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131 \ - --hash=sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e \ - --hash=sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f \ - --hash=sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd \ - --hash=sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f \ - --hash=sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e \ - --hash=sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1 \ - --hash=sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed \ - --hash=sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4 \ - --hash=sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1 \ - --hash=sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777 \ - --hash=sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531 \ - --hash=sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b \ - --hash=sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab \ - --hash=sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8 \ - --hash=sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074 \ - --hash=sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc \ - --hash=sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643 \ - --hash=sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01 \ - --hash=sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36 \ - --hash=sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24 \ - --hash=sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654 \ - --hash=sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d \ - --hash=sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241 \ - --hash=sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51 \ - --hash=sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f \ - --hash=sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2 \ - --hash=sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15 \ - --hash=sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf \ - --hash=sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b \ - --hash=sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71 \ - --hash=sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05 \ - --hash=sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52 \ - --hash=sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3 \ - --hash=sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6 \ - --hash=sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a \ - --hash=sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519 \ - --hash=sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a \ - --hash=sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333 \ - --hash=sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6 \ - --hash=sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d \ - --hash=sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57 \ - --hash=sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c \ - --hash=sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9 \ - --hash=sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea \ - --hash=sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332 \ - --hash=sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5 \ - --hash=sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622 \ - --hash=sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71 \ - --hash=sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb \ - --hash=sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a \ - --hash=sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff \ - --hash=sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945 \ - --hash=sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480 \ - --hash=sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6 \ - --hash=sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9 \ - --hash=sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd \ - --hash=sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f \ - --hash=sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a \ - --hash=sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a \ - --hash=sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949 \ - --hash=sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc \ - --hash=sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75 \ - --hash=sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f \ - --hash=sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10 \ - --hash=sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f - # via - # -c requirements/main.txt - # aiohttp-devtools - # pytest-aiohttp -aiohttp-devtools==1.0.post0 \ - --hash=sha256:1847ce92e6e8ca1ed5dc603864f4faecdfa40b6b5aeb5193f05cafd28d3ce3e3 \ - --hash=sha256:f46a87b250a84bf8edca21c8b6991dc2b6145cdf0af8a08b73f5c92d48d85f01 - # via -r requirements/dev.in -aiosignal==1.3.1 \ - --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \ - --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17 - # via - # -c requirements/main.txt - # aiohttp -anyio==3.6.2 \ - --hash=sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421 \ - --hash=sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3 - # via watchgod -asttokens==2.2.1 \ - --hash=sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3 \ - --hash=sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c - # via devtools -async-timeout==4.0.2 \ - --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ - --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c - # via - # -c requirements/main.txt - # aiohttp -attrs==23.1.0 \ - --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ - --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 - # via - # -c requirements/main.txt - # aiohttp -beautifulsoup4==4.12.2 \ - --hash=sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da \ - --hash=sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a - # via -r requirements/dev.in -cfgv==3.3.1 \ - --hash=sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426 \ - --hash=sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736 - # via pre-commit -charset-normalizer==3.1.0 \ - --hash=sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6 \ - --hash=sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1 \ - --hash=sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e \ - --hash=sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373 \ - --hash=sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62 \ - --hash=sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230 \ - --hash=sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be \ - --hash=sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c \ - --hash=sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0 \ - --hash=sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448 \ - --hash=sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f \ - --hash=sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649 \ - --hash=sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d \ - --hash=sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0 \ - --hash=sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706 \ - --hash=sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a \ - --hash=sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59 \ - --hash=sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23 \ - --hash=sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5 \ - --hash=sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb \ - --hash=sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e \ - --hash=sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e \ - --hash=sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c \ - --hash=sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28 \ - --hash=sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d \ - --hash=sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41 \ - --hash=sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974 \ - --hash=sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce \ - --hash=sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f \ - --hash=sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1 \ - --hash=sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d \ - --hash=sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8 \ - --hash=sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017 \ - --hash=sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31 \ - --hash=sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7 \ - --hash=sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8 \ - --hash=sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e \ - --hash=sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14 \ - --hash=sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd \ - --hash=sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d \ - --hash=sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795 \ - --hash=sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b \ - --hash=sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b \ - --hash=sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b \ - --hash=sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203 \ - --hash=sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f \ - --hash=sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19 \ - --hash=sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1 \ - --hash=sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a \ - --hash=sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac \ - --hash=sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9 \ - --hash=sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0 \ - --hash=sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137 \ - --hash=sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f \ - --hash=sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6 \ - --hash=sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5 \ - --hash=sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909 \ - --hash=sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f \ - --hash=sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0 \ - --hash=sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324 \ - --hash=sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755 \ - --hash=sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb \ - --hash=sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854 \ - --hash=sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c \ - --hash=sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60 \ - --hash=sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84 \ - --hash=sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0 \ - --hash=sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b \ - --hash=sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1 \ - --hash=sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531 \ - --hash=sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1 \ - --hash=sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11 \ - --hash=sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326 \ - --hash=sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df \ - --hash=sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab - # via - # -c requirements/main.txt - # aiohttp -click==8.1.3 \ - --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ - --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 - # via - # -c requirements/main.txt - # aiohttp-devtools -coverage[toml]==7.2.5 \ - --hash=sha256:0342a28617e63ad15d96dca0f7ae9479a37b7d8a295f749c14f3436ea59fdcb3 \ - --hash=sha256:066b44897c493e0dcbc9e6a6d9f8bbb6607ef82367cf6810d387c09f0cd4fe9a \ - --hash=sha256:10b15394c13544fce02382360cab54e51a9e0fd1bd61ae9ce012c0d1e103c813 \ - --hash=sha256:12580845917b1e59f8a1c2ffa6af6d0908cb39220f3019e36c110c943dc875b0 \ - --hash=sha256:156192e5fd3dbbcb11cd777cc469cf010a294f4c736a2b2c891c77618cb1379a \ - --hash=sha256:1637253b11a18f453e34013c665d8bf15904c9e3c44fbda34c643fbdc9d452cd \ - --hash=sha256:292300f76440651529b8ceec283a9370532f4ecba9ad67d120617021bb5ef139 \ - --hash=sha256:30dcaf05adfa69c2a7b9f7dfd9f60bc8e36b282d7ed25c308ef9e114de7fc23b \ - --hash=sha256:338aa9d9883aaaad53695cb14ccdeb36d4060485bb9388446330bef9c361c252 \ - --hash=sha256:373ea34dca98f2fdb3e5cb33d83b6d801007a8074f992b80311fc589d3e6b790 \ - --hash=sha256:38c0a497a000d50491055805313ed83ddba069353d102ece8aef5d11b5faf045 \ - --hash=sha256:40cc0f91c6cde033da493227797be2826cbf8f388eaa36a0271a97a332bfd7ce \ - --hash=sha256:4436cc9ba5414c2c998eaedee5343f49c02ca93b21769c5fdfa4f9d799e84200 \ - --hash=sha256:509ecd8334c380000d259dc66feb191dd0a93b21f2453faa75f7f9cdcefc0718 \ - --hash=sha256:5c587f52c81211d4530fa6857884d37f514bcf9453bdeee0ff93eaaf906a5c1b \ - --hash=sha256:5f3671662dc4b422b15776cdca89c041a6349b4864a43aa2350b6b0b03bbcc7f \ - --hash=sha256:6599bf92f33ab041e36e06d25890afbdf12078aacfe1f1d08c713906e49a3fe5 \ - --hash=sha256:6e8a95f243d01ba572341c52f89f3acb98a3b6d1d5d830efba86033dd3687ade \ - --hash=sha256:706ec567267c96717ab9363904d846ec009a48d5f832140b6ad08aad3791b1f5 \ - --hash=sha256:780551e47d62095e088f251f5db428473c26db7829884323e56d9c0c3118791a \ - --hash=sha256:7ff8f3fb38233035028dbc93715551d81eadc110199e14bbbfa01c5c4a43f8d8 \ - --hash=sha256:828189fcdda99aae0d6bf718ea766b2e715eabc1868670a0a07bf8404bf58c33 \ - --hash=sha256:857abe2fa6a4973f8663e039ead8d22215d31db613ace76e4a98f52ec919068e \ - --hash=sha256:883123d0bbe1c136f76b56276074b0c79b5817dd4238097ffa64ac67257f4b6c \ - --hash=sha256:8877d9b437b35a85c18e3c6499b23674684bf690f5d96c1006a1ef61f9fdf0f3 \ - --hash=sha256:8e575a59315a91ccd00c7757127f6b2488c2f914096077c745c2f1ba5b8c0969 \ - --hash=sha256:97072cc90f1009386c8a5b7de9d4fc1a9f91ba5ef2146c55c1f005e7b5c5e068 \ - --hash=sha256:9a22cbb5ede6fade0482111fa7f01115ff04039795d7092ed0db43522431b4f2 \ - --hash=sha256:a063aad9f7b4c9f9da7b2550eae0a582ffc7623dca1c925e50c3fbde7a579771 \ - --hash=sha256:a08c7401d0b24e8c2982f4e307124b671c6736d40d1c39e09d7a8687bddf83ed \ - --hash=sha256:a0b273fe6dc655b110e8dc89b8ec7f1a778d78c9fd9b4bda7c384c8906072212 \ - --hash=sha256:a2b3b05e22a77bb0ae1a3125126a4e08535961c946b62f30985535ed40e26614 \ - --hash=sha256:a66e055254a26c82aead7ff420d9fa8dc2da10c82679ea850d8feebf11074d88 \ - --hash=sha256:aa387bd7489f3e1787ff82068b295bcaafbf6f79c3dad3cbc82ef88ce3f48ad3 \ - --hash=sha256:ae453f655640157d76209f42c62c64c4d4f2c7f97256d3567e3b439bd5c9b06c \ - --hash=sha256:b5016e331b75310610c2cf955d9f58a9749943ed5f7b8cfc0bb89c6134ab0a84 \ - --hash=sha256:b9a4ee55174b04f6af539218f9f8083140f61a46eabcaa4234f3c2a452c4ed11 \ - --hash=sha256:bd3b4b8175c1db502adf209d06136c000df4d245105c8839e9d0be71c94aefe1 \ - --hash=sha256:bebea5f5ed41f618797ce3ffb4606c64a5de92e9c3f26d26c2e0aae292f015c1 \ - --hash=sha256:c10fbc8a64aa0f3ed136b0b086b6b577bc64d67d5581acd7cc129af52654384e \ - --hash=sha256:c2c41c1b1866b670573657d584de413df701f482574bad7e28214a2362cb1fd1 \ - --hash=sha256:cf97ed82ca986e5c637ea286ba2793c85325b30f869bf64d3009ccc1a31ae3fd \ - --hash=sha256:d1f25ee9de21a39b3a8516f2c5feb8de248f17da7eead089c2e04aa097936b47 \ - --hash=sha256:d2fbc2a127e857d2f8898aaabcc34c37771bf78a4d5e17d3e1f5c30cd0cbc62a \ - --hash=sha256:dc945064a8783b86fcce9a0a705abd7db2117d95e340df8a4333f00be5efb64c \ - --hash=sha256:ddc5a54edb653e9e215f75de377354e2455376f416c4378e1d43b08ec50acc31 \ - --hash=sha256:e8834e5f17d89e05697c3c043d3e58a8b19682bf365048837383abfe39adaed5 \ - --hash=sha256:ef9659d1cda9ce9ac9585c045aaa1e59223b143f2407db0eaee0b61a4f266fb6 \ - --hash=sha256:f6f5cab2d7f0c12f8187a376cc6582c477d2df91d63f75341307fcdcb5d60303 \ - --hash=sha256:f81c9b4bd8aa747d417407a7f6f0b1469a43b36a85748145e144ac4e8d303cb5 \ - --hash=sha256:f99ef080288f09ffc687423b8d60978cf3a465d3f404a18d1a05474bd8575a47 - # via -r requirements/dev.in -devtools==0.11.0 \ - --hash=sha256:22a3b65b58713ccd7e8586feffdefaad57bbdbc6ff76bd68ecf3150a00cf41e3 \ - --hash=sha256:4a6d987dfab0c7513a514e7faf0a71296d220423470204e76e0752d146dfad62 - # via aiohttp-devtools -distlib==0.3.6 \ - --hash=sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46 \ - --hash=sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e - # via virtualenv -exceptiongroup==1.1.1 \ - --hash=sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e \ - --hash=sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785 - # via pytest -executing==1.2.0 \ - --hash=sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc \ - --hash=sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107 - # via devtools -filelock==3.12.0 \ - --hash=sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9 \ - --hash=sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718 - # via virtualenv -frozenlist==1.3.3 \ - --hash=sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c \ - --hash=sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f \ - --hash=sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a \ - --hash=sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784 \ - --hash=sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27 \ - --hash=sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d \ - --hash=sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3 \ - --hash=sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678 \ - --hash=sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a \ - --hash=sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483 \ - --hash=sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8 \ - --hash=sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf \ - --hash=sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99 \ - --hash=sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c \ - --hash=sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48 \ - --hash=sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5 \ - --hash=sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56 \ - --hash=sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e \ - --hash=sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1 \ - --hash=sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401 \ - --hash=sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4 \ - --hash=sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e \ - --hash=sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649 \ - --hash=sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a \ - --hash=sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d \ - --hash=sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0 \ - --hash=sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6 \ - --hash=sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d \ - --hash=sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b \ - --hash=sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6 \ - --hash=sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf \ - --hash=sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef \ - --hash=sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7 \ - --hash=sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842 \ - --hash=sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba \ - --hash=sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420 \ - --hash=sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b \ - --hash=sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d \ - --hash=sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332 \ - --hash=sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936 \ - --hash=sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816 \ - --hash=sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91 \ - --hash=sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420 \ - --hash=sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448 \ - --hash=sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411 \ - --hash=sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4 \ - --hash=sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32 \ - --hash=sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b \ - --hash=sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0 \ - --hash=sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530 \ - --hash=sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669 \ - --hash=sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7 \ - --hash=sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1 \ - --hash=sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5 \ - --hash=sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce \ - --hash=sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4 \ - --hash=sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e \ - --hash=sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2 \ - --hash=sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d \ - --hash=sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9 \ - --hash=sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642 \ - --hash=sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0 \ - --hash=sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703 \ - --hash=sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb \ - --hash=sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1 \ - --hash=sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13 \ - --hash=sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab \ - --hash=sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38 \ - --hash=sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb \ - --hash=sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb \ - --hash=sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81 \ - --hash=sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8 \ - --hash=sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd \ - --hash=sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4 - # via - # -c requirements/main.txt - # aiohttp - # aiosignal -identify==2.5.23 \ - --hash=sha256:17d9351c028a781456965e781ed2a435755cac655df1ebd930f7186b54399312 \ - --hash=sha256:50b01b9d5f73c6b53e5fa2caf9f543d3e657a9d0bbdeb203ebb8d45960ba7433 - # via pre-commit -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via - # -c requirements/main.txt - # anyio - # yarl -iniconfig==2.0.0 \ - --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ - --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 - # via pytest -multidict==6.0.4 \ - --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \ - --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \ - --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \ - --hash=sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710 \ - --hash=sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161 \ - --hash=sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664 \ - --hash=sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569 \ - --hash=sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067 \ - --hash=sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313 \ - --hash=sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706 \ - --hash=sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2 \ - --hash=sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636 \ - --hash=sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49 \ - --hash=sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93 \ - --hash=sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603 \ - --hash=sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0 \ - --hash=sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60 \ - --hash=sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4 \ - --hash=sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e \ - --hash=sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1 \ - --hash=sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60 \ - --hash=sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951 \ - --hash=sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc \ - --hash=sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe \ - --hash=sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95 \ - --hash=sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d \ - --hash=sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8 \ - --hash=sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed \ - --hash=sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2 \ - --hash=sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775 \ - --hash=sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87 \ - --hash=sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c \ - --hash=sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2 \ - --hash=sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98 \ - --hash=sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3 \ - --hash=sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe \ - --hash=sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78 \ - --hash=sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660 \ - --hash=sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176 \ - --hash=sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e \ - --hash=sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988 \ - --hash=sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c \ - --hash=sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c \ - --hash=sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0 \ - --hash=sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449 \ - --hash=sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f \ - --hash=sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde \ - --hash=sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5 \ - --hash=sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d \ - --hash=sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac \ - --hash=sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a \ - --hash=sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9 \ - --hash=sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca \ - --hash=sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11 \ - --hash=sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35 \ - --hash=sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063 \ - --hash=sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b \ - --hash=sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982 \ - --hash=sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258 \ - --hash=sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1 \ - --hash=sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52 \ - --hash=sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480 \ - --hash=sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7 \ - --hash=sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461 \ - --hash=sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d \ - --hash=sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc \ - --hash=sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779 \ - --hash=sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a \ - --hash=sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547 \ - --hash=sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0 \ - --hash=sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171 \ - --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \ - --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \ - --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba - # via - # -c requirements/main.txt - # aiohttp - # yarl -mypy==1.2.0 \ - --hash=sha256:023fe9e618182ca6317ae89833ba422c411469156b690fde6a315ad10695a521 \ - --hash=sha256:031fc69c9a7e12bcc5660b74122ed84b3f1c505e762cc4296884096c6d8ee140 \ - --hash=sha256:2de7babe398cb7a85ac7f1fd5c42f396c215ab3eff731b4d761d68d0f6a80f48 \ - --hash=sha256:2e93a8a553e0394b26c4ca683923b85a69f7ccdc0139e6acd1354cc884fe0128 \ - --hash=sha256:390bc685ec209ada4e9d35068ac6988c60160b2b703072d2850457b62499e336 \ - --hash=sha256:3a2d219775a120581a0ae8ca392b31f238d452729adbcb6892fa89688cb8306a \ - --hash=sha256:3efde4af6f2d3ccf58ae825495dbb8d74abd6d176ee686ce2ab19bd025273f41 \ - --hash=sha256:4a99fe1768925e4a139aace8f3fb66db3576ee1c30b9c0f70f744ead7e329c9f \ - --hash=sha256:4b41412df69ec06ab141808d12e0bf2823717b1c363bd77b4c0820feaa37249e \ - --hash=sha256:4c8d8c6b80aa4a1689f2a179d31d86ae1367ea4a12855cc13aa3ba24bb36b2d8 \ - --hash=sha256:4d19f1a239d59f10fdc31263d48b7937c585810288376671eaf75380b074f238 \ - --hash=sha256:4e4a682b3f2489d218751981639cffc4e281d548f9d517addfd5a2917ac78119 \ - --hash=sha256:695c45cea7e8abb6f088a34a6034b1d273122e5530aeebb9c09626cea6dca4cb \ - --hash=sha256:701189408b460a2ff42b984e6bd45c3f41f0ac9f5f58b8873bbedc511900086d \ - --hash=sha256:70894c5345bea98321a2fe84df35f43ee7bb0feec117a71420c60459fc3e1eed \ - --hash=sha256:8293a216e902ac12779eb7a08f2bc39ec6c878d7c6025aa59464e0c4c16f7eb9 \ - --hash=sha256:8d26b513225ffd3eacece727f4387bdce6469192ef029ca9dd469940158bc89e \ - --hash=sha256:a197ad3a774f8e74f21e428f0de7f60ad26a8d23437b69638aac2764d1e06a6a \ - --hash=sha256:bea55fc25b96c53affab852ad94bf111a3083bc1d8b0c76a61dd101d8a388cf5 \ - --hash=sha256:c9a084bce1061e55cdc0493a2ad890375af359c766b8ac311ac8120d3a472950 \ - --hash=sha256:d0e9464a0af6715852267bf29c9553e4555b61f5904a4fc538547a4d67617937 \ - --hash=sha256:d8e9187bfcd5ffedbe87403195e1fc340189a68463903c39e2b63307c9fa0394 \ - --hash=sha256:eaeaa0888b7f3ccb7bcd40b50497ca30923dba14f385bde4af78fac713d6d6f6 \ - --hash=sha256:f46af8d162f3d470d8ffc997aaf7a269996d205f9d746124a179d3abe05ac602 \ - --hash=sha256:f70a40410d774ae23fcb4afbbeca652905a04de7948eaf0b1789c8d1426b72d1 \ - --hash=sha256:fe91be1c51c90e2afe6827601ca14353bbf3953f343c2129fa1e247d55fd95ba - # via -r requirements/dev.in -mypy-extensions==1.0.0 \ - --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ - --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 - # via mypy -nodeenv==1.7.0 \ - --hash=sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e \ - --hash=sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b - # via pre-commit -packaging==23.1 \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f - # via pytest -platformdirs==3.5.0 \ - --hash=sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4 \ - --hash=sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335 - # via virtualenv -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 - # via pytest -pre-commit==3.2.2 \ - --hash=sha256:0b4210aea813fe81144e87c5a291f09ea66f199f367fa1df41b55e1d26e1e2b4 \ - --hash=sha256:5b808fcbda4afbccf6d6633a56663fed35b6c2bc08096fd3d47ce197ac351d9d - # via -r requirements/dev.in -pygments==2.15.1 \ - --hash=sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c \ - --hash=sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1 - # via aiohttp-devtools -pytest==7.3.1 \ - --hash=sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362 \ - --hash=sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3 - # via - # -r requirements/dev.in - # pytest-aiohttp - # pytest-asyncio -pytest-aiohttp==1.0.4 \ - --hash=sha256:1d2dc3a304c2be1fd496c0c2fb6b31ab60cd9fc33984f761f951f8ea1eb4ca95 \ - --hash=sha256:39ff3a0d15484c01d1436cbedad575c6eafbf0f57cdf76fb94994c97b5b8c5a4 - # via -r requirements/dev.in -pytest-asyncio==0.21.0 \ - --hash=sha256:2b38a496aef56f56b0e87557ec313e11e1ab9276fc3863f6a7be0f1d0e415e1b \ - --hash=sha256:f2b3366b7cd501a4056858bd39349d5af19742aed2d81660b7998b6341c7eb9c - # via pytest-aiohttp -python-dateutil==2.8.2 \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 - # via - # -c requirements/main.txt - # -r requirements/dev.in -pyyaml==6.0 \ - --hash=sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf \ - --hash=sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293 \ - --hash=sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b \ - --hash=sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57 \ - --hash=sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b \ - --hash=sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4 \ - --hash=sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07 \ - --hash=sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba \ - --hash=sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9 \ - --hash=sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287 \ - --hash=sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513 \ - --hash=sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0 \ - --hash=sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782 \ - --hash=sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0 \ - --hash=sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92 \ - --hash=sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f \ - --hash=sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2 \ - --hash=sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc \ - --hash=sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1 \ - --hash=sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c \ - --hash=sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86 \ - --hash=sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4 \ - --hash=sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c \ - --hash=sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34 \ - --hash=sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b \ - --hash=sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d \ - --hash=sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c \ - --hash=sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb \ - --hash=sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7 \ - --hash=sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737 \ - --hash=sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3 \ - --hash=sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d \ - --hash=sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358 \ - --hash=sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53 \ - --hash=sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78 \ - --hash=sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803 \ - --hash=sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a \ - --hash=sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f \ - --hash=sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174 \ - --hash=sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 - # via - # -c requirements/main.txt - # pre-commit -six==1.16.0 \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # -c requirements/main.txt - # asttokens - # python-dateutil -sniffio==1.3.0 \ - --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ - --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 - # via anyio -soupsieve==2.4.1 \ - --hash=sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8 \ - --hash=sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea - # via beautifulsoup4 -tomli==2.0.1 \ - --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ - --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f - # via - # coverage - # mypy - # pytest -types-python-dateutil==2.8.19.12 \ - --hash=sha256:355b2cb82b31e556fd18e7b074de7c350c680ab80608f0cc55ba6770d986d67d \ - --hash=sha256:fe5b545e678ec13e3ddc83a0eee1545c1b5e2fba4cfc39b276ab6f4e7604a923 - # via -r requirements/dev.in -types-pyyaml==6.0.12.9 \ - --hash=sha256:5aed5aa66bd2d2e158f75dda22b059570ede988559f030cf294871d3b647e3e8 \ - --hash=sha256:c51b1bd6d99ddf0aa2884a7a328810ebf70a4262c292195d3f4f9a0005f9eeb6 - # via -r requirements/dev.in -typing-extensions==4.5.0 \ - --hash=sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb \ - --hash=sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4 - # via mypy -virtualenv==20.23.0 \ - --hash=sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e \ - --hash=sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924 - # via pre-commit -watchgod==0.8.2 \ - --hash=sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce \ - --hash=sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450 - # via aiohttp-devtools -yarl==1.9.2 \ - --hash=sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571 \ - --hash=sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3 \ - --hash=sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3 \ - --hash=sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c \ - --hash=sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7 \ - --hash=sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04 \ - --hash=sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191 \ - --hash=sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea \ - --hash=sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4 \ - --hash=sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4 \ - --hash=sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095 \ - --hash=sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e \ - --hash=sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74 \ - --hash=sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef \ - --hash=sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33 \ - --hash=sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde \ - --hash=sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45 \ - --hash=sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf \ - --hash=sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b \ - --hash=sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac \ - --hash=sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0 \ - --hash=sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528 \ - --hash=sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716 \ - --hash=sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb \ - --hash=sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18 \ - --hash=sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72 \ - --hash=sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6 \ - --hash=sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582 \ - --hash=sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5 \ - --hash=sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368 \ - --hash=sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc \ - --hash=sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9 \ - --hash=sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be \ - --hash=sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a \ - --hash=sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80 \ - --hash=sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8 \ - --hash=sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6 \ - --hash=sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417 \ - --hash=sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574 \ - --hash=sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59 \ - --hash=sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608 \ - --hash=sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82 \ - --hash=sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1 \ - --hash=sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3 \ - --hash=sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d \ - --hash=sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8 \ - --hash=sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc \ - --hash=sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac \ - --hash=sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8 \ - --hash=sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955 \ - --hash=sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0 \ - --hash=sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367 \ - --hash=sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb \ - --hash=sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a \ - --hash=sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623 \ - --hash=sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2 \ - --hash=sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6 \ - --hash=sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7 \ - --hash=sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4 \ - --hash=sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051 \ - --hash=sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938 \ - --hash=sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8 \ - --hash=sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9 \ - --hash=sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3 \ - --hash=sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5 \ - --hash=sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9 \ - --hash=sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333 \ - --hash=sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185 \ - --hash=sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3 \ - --hash=sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560 \ - --hash=sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b \ - --hash=sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7 \ - --hash=sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78 \ - --hash=sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7 - # via - # -c requirements/main.txt - # aiohttp - -# WARNING: The following packages were not pinned, but pip requires them to be -# pinned when the requirements file includes hashes. Consider using the --allow-unsafe flag. -# setuptools diff --git a/requirements/main.in b/requirements/main.in deleted file mode 100644 index fb991712..00000000 --- a/requirements/main.in +++ /dev/null @@ -1,17 +0,0 @@ -# Editable runtime dependencies (equivalent to install_requires) -# Add direct runtime dependencies here, as well as implicit dependencies -# with constrained versions. -# -# After editing, update requirements/main.txt by running: -# make update - -aiodns -aiohttp -aiohttp-jinja2 -cchardet -click -google-cloud-storage -jinja2 -safir<2 -python-dateutil -PyYAML diff --git a/requirements/main.txt b/requirements/main.txt deleted file mode 100644 index 73c8372c..00000000 --- a/requirements/main.txt +++ /dev/null @@ -1,860 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --generate-hashes --output-file=requirements/main.txt requirements/main.in -# -aiodns==3.0.0 \ - --hash=sha256:2b19bc5f97e5c936638d28e665923c093d8af2bf3aa88d35c43417fa25d136a2 \ - --hash=sha256:946bdfabe743fceeeb093c8a010f5d1645f708a241be849e17edfb0e49e08cd6 - # via -r requirements/main.in -aiohttp==3.8.4 \ - --hash=sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14 \ - --hash=sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391 \ - --hash=sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2 \ - --hash=sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e \ - --hash=sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9 \ - --hash=sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd \ - --hash=sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4 \ - --hash=sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b \ - --hash=sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41 \ - --hash=sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567 \ - --hash=sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275 \ - --hash=sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54 \ - --hash=sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a \ - --hash=sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef \ - --hash=sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99 \ - --hash=sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da \ - --hash=sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4 \ - --hash=sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e \ - --hash=sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699 \ - --hash=sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04 \ - --hash=sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719 \ - --hash=sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131 \ - --hash=sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e \ - --hash=sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f \ - --hash=sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd \ - --hash=sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f \ - --hash=sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e \ - --hash=sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1 \ - --hash=sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed \ - --hash=sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4 \ - --hash=sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1 \ - --hash=sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777 \ - --hash=sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531 \ - --hash=sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b \ - --hash=sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab \ - --hash=sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8 \ - --hash=sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074 \ - --hash=sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc \ - --hash=sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643 \ - --hash=sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01 \ - --hash=sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36 \ - --hash=sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24 \ - --hash=sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654 \ - --hash=sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d \ - --hash=sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241 \ - --hash=sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51 \ - --hash=sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f \ - --hash=sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2 \ - --hash=sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15 \ - --hash=sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf \ - --hash=sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b \ - --hash=sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71 \ - --hash=sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05 \ - --hash=sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52 \ - --hash=sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3 \ - --hash=sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6 \ - --hash=sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a \ - --hash=sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519 \ - --hash=sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a \ - --hash=sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333 \ - --hash=sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6 \ - --hash=sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d \ - --hash=sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57 \ - --hash=sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c \ - --hash=sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9 \ - --hash=sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea \ - --hash=sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332 \ - --hash=sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5 \ - --hash=sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622 \ - --hash=sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71 \ - --hash=sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb \ - --hash=sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a \ - --hash=sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff \ - --hash=sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945 \ - --hash=sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480 \ - --hash=sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6 \ - --hash=sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9 \ - --hash=sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd \ - --hash=sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f \ - --hash=sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a \ - --hash=sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a \ - --hash=sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949 \ - --hash=sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc \ - --hash=sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75 \ - --hash=sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f \ - --hash=sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10 \ - --hash=sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f - # via - # -r requirements/main.in - # aiohttp-jinja2 - # safir -aiohttp-jinja2==1.5.1 \ - --hash=sha256:45cf00b80ab4dcc19515df13a929826eeb9698e76a3bcfd99112418751f5a061 \ - --hash=sha256:8d149b2a57d91f794b33a394ea5bc66b567f38c74a5a6a9477afc2450f105c01 - # via -r requirements/main.in -aiosignal==1.3.1 \ - --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \ - --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17 - # via aiohttp -async-timeout==4.0.2 \ - --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ - --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c - # via aiohttp -attrs==23.1.0 \ - --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ - --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 - # via aiohttp -cachetools==5.3.0 \ - --hash=sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14 \ - --hash=sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4 - # via google-auth -cchardet==2.1.7 \ - --hash=sha256:0b859069bbb9d27c78a2c9eb997e6f4b738db2d7039a03f8792b4058d61d1109 \ - --hash=sha256:228d2533987c450f39acf7548f474dd6814c446e9d6bd228e8f1d9a2d210f10b \ - --hash=sha256:2309ff8fc652b0fc3c0cff5dbb172530c7abb92fe9ba2417c9c0bcf688463c1c \ - --hash=sha256:24974b3e40fee9e7557bb352be625c39ec6f50bc2053f44a3d1191db70b51675 \ - --hash=sha256:273699c4e5cd75377776501b72a7b291a988c6eec259c29505094553ee505597 \ - --hash=sha256:27a9ba87c9f99e0618e1d3081189b1217a7d110e5c5597b0b7b7c3fedd1c340a \ - --hash=sha256:302aa443ae2526755d412c9631136bdcd1374acd08e34f527447f06f3c2ddb98 \ - --hash=sha256:45456c59ec349b29628a3c6bfb86d818ec3a6fbb7eb72de4ff3bd4713681c0e3 \ - --hash=sha256:48ba829badef61441e08805cfa474ccd2774be2ff44b34898f5854168c596d4d \ - --hash=sha256:50ad671e8d6c886496db62c3bd68b8d55060688c655873aa4ce25ca6105409a1 \ - --hash=sha256:54341e7e1ba9dc0add4c9d23b48d3a94e2733065c13920e85895f944596f6150 \ - --hash=sha256:54d0b26fd0cd4099f08fb9c167600f3e83619abefeaa68ad823cc8ac1f7bcc0c \ - --hash=sha256:5a25f9577e9bebe1a085eec2d6fdd72b7a9dd680811bba652ea6090fb2ff472f \ - --hash=sha256:6b6397d8a32b976a333bdae060febd39ad5479817fabf489e5596a588ad05133 \ - --hash=sha256:70eeae8aaf61192e9b247cf28969faef00578becd2602526ecd8ae7600d25e0e \ - --hash=sha256:80e6faae75ecb9be04a7b258dc4750d459529debb6b8dee024745b7b5a949a34 \ - --hash=sha256:90086e5645f8a1801350f4cc6cb5d5bf12d3fa943811bb08667744ec1ecc9ccd \ - --hash=sha256:a39526c1c526843965cec589a6f6b7c2ab07e3e56dc09a7f77a2be6a6afa4636 \ - --hash=sha256:b154effa12886e9c18555dfc41a110f601f08d69a71809c8d908be4b1ab7314f \ - --hash=sha256:b59ddc615883835e03c26f81d5fc3671fab2d32035c87f50862de0da7d7db535 \ - --hash=sha256:bd7f262f41fd9caf5a5f09207a55861a67af6ad5c66612043ed0f81c58cdf376 \ - --hash=sha256:c428b6336545053c2589f6caf24ea32276c6664cb86db817e03a94c60afa0eaf \ - --hash=sha256:c6f70139aaf47ffb94d89db603af849b82efdf756f187cdd3e566e30976c519f \ - --hash=sha256:c96aee9ebd1147400e608a3eff97c44f49811f8904e5a43069d55603ac4d8c97 \ - --hash=sha256:ec3eb5a9c475208cf52423524dcaf713c394393e18902e861f983c38eeb77f18 \ - --hash=sha256:eee4f5403dc3a37a1ca9ab87db32b48dc7e190ef84601068f45397144427cc5e \ - --hash=sha256:f16517f3697569822c6d09671217fdeab61dfebc7acb5068634d6b0728b86c0b \ - --hash=sha256:f86e0566cb61dc4397297696a4a1b30f6391b50bc52b4f073507a48466b6255a \ - --hash=sha256:fdac1e4366d0579fff056d1280b8dc6348be964fda8ebb627c0269e097ab37fa - # via -r requirements/main.in -certifi==2022.12.7 \ - --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ - --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 - # via requests -cffi==1.15.1 \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 - # via pycares -charset-normalizer==3.1.0 \ - --hash=sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6 \ - --hash=sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1 \ - --hash=sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e \ - --hash=sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373 \ - --hash=sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62 \ - --hash=sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230 \ - --hash=sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be \ - --hash=sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c \ - --hash=sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0 \ - --hash=sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448 \ - --hash=sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f \ - --hash=sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649 \ - --hash=sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d \ - --hash=sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0 \ - --hash=sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706 \ - --hash=sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a \ - --hash=sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59 \ - --hash=sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23 \ - --hash=sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5 \ - --hash=sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb \ - --hash=sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e \ - --hash=sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e \ - --hash=sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c \ - --hash=sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28 \ - --hash=sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d \ - --hash=sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41 \ - --hash=sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974 \ - --hash=sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce \ - --hash=sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f \ - --hash=sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1 \ - --hash=sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d \ - --hash=sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8 \ - --hash=sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017 \ - --hash=sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31 \ - --hash=sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7 \ - --hash=sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8 \ - --hash=sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e \ - --hash=sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14 \ - --hash=sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd \ - --hash=sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d \ - --hash=sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795 \ - --hash=sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b \ - --hash=sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b \ - --hash=sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b \ - --hash=sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203 \ - --hash=sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f \ - --hash=sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19 \ - --hash=sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1 \ - --hash=sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a \ - --hash=sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac \ - --hash=sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9 \ - --hash=sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0 \ - --hash=sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137 \ - --hash=sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f \ - --hash=sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6 \ - --hash=sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5 \ - --hash=sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909 \ - --hash=sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f \ - --hash=sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0 \ - --hash=sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324 \ - --hash=sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755 \ - --hash=sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb \ - --hash=sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854 \ - --hash=sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c \ - --hash=sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60 \ - --hash=sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84 \ - --hash=sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0 \ - --hash=sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b \ - --hash=sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1 \ - --hash=sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531 \ - --hash=sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1 \ - --hash=sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11 \ - --hash=sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326 \ - --hash=sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df \ - --hash=sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab - # via - # aiohttp - # requests -click==8.1.3 \ - --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ - --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 - # via -r requirements/main.in -frozenlist==1.3.3 \ - --hash=sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c \ - --hash=sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f \ - --hash=sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a \ - --hash=sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784 \ - --hash=sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27 \ - --hash=sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d \ - --hash=sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3 \ - --hash=sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678 \ - --hash=sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a \ - --hash=sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483 \ - --hash=sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8 \ - --hash=sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf \ - --hash=sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99 \ - --hash=sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c \ - --hash=sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48 \ - --hash=sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5 \ - --hash=sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56 \ - --hash=sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e \ - --hash=sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1 \ - --hash=sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401 \ - --hash=sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4 \ - --hash=sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e \ - --hash=sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649 \ - --hash=sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a \ - --hash=sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d \ - --hash=sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0 \ - --hash=sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6 \ - --hash=sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d \ - --hash=sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b \ - --hash=sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6 \ - --hash=sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf \ - --hash=sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef \ - --hash=sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7 \ - --hash=sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842 \ - --hash=sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba \ - --hash=sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420 \ - --hash=sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b \ - --hash=sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d \ - --hash=sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332 \ - --hash=sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936 \ - --hash=sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816 \ - --hash=sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91 \ - --hash=sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420 \ - --hash=sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448 \ - --hash=sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411 \ - --hash=sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4 \ - --hash=sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32 \ - --hash=sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b \ - --hash=sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0 \ - --hash=sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530 \ - --hash=sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669 \ - --hash=sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7 \ - --hash=sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1 \ - --hash=sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5 \ - --hash=sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce \ - --hash=sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4 \ - --hash=sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e \ - --hash=sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2 \ - --hash=sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d \ - --hash=sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9 \ - --hash=sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642 \ - --hash=sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0 \ - --hash=sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703 \ - --hash=sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb \ - --hash=sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1 \ - --hash=sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13 \ - --hash=sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab \ - --hash=sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38 \ - --hash=sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb \ - --hash=sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb \ - --hash=sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81 \ - --hash=sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8 \ - --hash=sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd \ - --hash=sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4 - # via - # aiohttp - # aiosignal -google-api-core==2.11.0 \ - --hash=sha256:4b9bb5d5a380a0befa0573b302651b8a9a89262c1730e37bf423cec511804c22 \ - --hash=sha256:ce222e27b0de0d7bc63eb043b956996d6dccab14cc3b690aaea91c9cc99dc16e - # via - # google-cloud-core - # google-cloud-storage -google-auth==2.17.3 \ - --hash=sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc \ - --hash=sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f - # via - # google-api-core - # google-cloud-core - # google-cloud-storage -google-cloud-core==2.3.2 \ - --hash=sha256:8417acf6466be2fa85123441696c4badda48db314c607cf1e5d543fa8bdc22fe \ - --hash=sha256:b9529ee7047fd8d4bf4a2182de619154240df17fbe60ead399078c1ae152af9a - # via google-cloud-storage -google-cloud-storage==2.8.0 \ - --hash=sha256:248e210c13bc109909160248af546a91cb2dabaf3d7ebbf04def9dd49f02dbb6 \ - --hash=sha256:4388da1ff5bda6d729f26dbcaf1bfa020a2a52a7b91f0a8123edbda51660802c - # via -r requirements/main.in -google-crc32c==1.5.0 \ - --hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \ - --hash=sha256:02c65b9817512edc6a4ae7c7e987fea799d2e0ee40c53ec573a692bee24de876 \ - --hash=sha256:02ebb8bf46c13e36998aeaad1de9b48f4caf545e91d14041270d9dca767b780c \ - --hash=sha256:07eb3c611ce363c51a933bf6bd7f8e3878a51d124acfc89452a75120bc436289 \ - --hash=sha256:1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298 \ - --hash=sha256:116a7c3c616dd14a3de8c64a965828b197e5f2d121fedd2f8c5585c547e87b02 \ - --hash=sha256:19e0a019d2c4dcc5e598cd4a4bc7b008546b0358bd322537c74ad47a5386884f \ - --hash=sha256:1c7abdac90433b09bad6c43a43af253e688c9cfc1c86d332aed13f9a7c7f65e2 \ - --hash=sha256:1e986b206dae4476f41bcec1faa057851f3889503a70e1bdb2378d406223994a \ - --hash=sha256:272d3892a1e1a2dbc39cc5cde96834c236d5327e2122d3aaa19f6614531bb6eb \ - --hash=sha256:278d2ed7c16cfc075c91378c4f47924c0625f5fc84b2d50d921b18b7975bd210 \ - --hash=sha256:2ad40e31093a4af319dadf503b2467ccdc8f67c72e4bcba97f8c10cb078207b5 \ - --hash=sha256:2e920d506ec85eb4ba50cd4228c2bec05642894d4c73c59b3a2fe20346bd00ee \ - --hash=sha256:3359fc442a743e870f4588fcf5dcbc1bf929df1fad8fb9905cd94e5edb02e84c \ - --hash=sha256:37933ec6e693e51a5b07505bd05de57eee12f3e8c32b07da7e73669398e6630a \ - --hash=sha256:398af5e3ba9cf768787eef45c803ff9614cc3e22a5b2f7d7ae116df8b11e3314 \ - --hash=sha256:3b747a674c20a67343cb61d43fdd9207ce5da6a99f629c6e2541aa0e89215bcd \ - --hash=sha256:461665ff58895f508e2866824a47bdee72497b091c730071f2b7575d5762ab65 \ - --hash=sha256:4c6fdd4fccbec90cc8a01fc00773fcd5fa28db683c116ee3cb35cd5da9ef6c37 \ - --hash=sha256:5829b792bf5822fd0a6f6eb34c5f81dd074f01d570ed7f36aa101d6fc7a0a6e4 \ - --hash=sha256:596d1f98fc70232fcb6590c439f43b350cb762fb5d61ce7b0e9db4539654cc13 \ - --hash=sha256:5ae44e10a8e3407dbe138984f21e536583f2bba1be9491239f942c2464ac0894 \ - --hash=sha256:635f5d4dd18758a1fbd1049a8e8d2fee4ffed124462d837d1a02a0e009c3ab31 \ - --hash=sha256:64e52e2b3970bd891309c113b54cf0e4384762c934d5ae56e283f9a0afcd953e \ - --hash=sha256:66741ef4ee08ea0b2cc3c86916ab66b6aef03768525627fd6a1b34968b4e3709 \ - --hash=sha256:67b741654b851abafb7bc625b6d1cdd520a379074e64b6a128e3b688c3c04740 \ - --hash=sha256:6ac08d24c1f16bd2bf5eca8eaf8304812f44af5cfe5062006ec676e7e1d50afc \ - --hash=sha256:6f998db4e71b645350b9ac28a2167e6632c239963ca9da411523bb439c5c514d \ - --hash=sha256:72218785ce41b9cfd2fc1d6a017dc1ff7acfc4c17d01053265c41a2c0cc39b8c \ - --hash=sha256:74dea7751d98034887dbd821b7aae3e1d36eda111d6ca36c206c44478035709c \ - --hash=sha256:759ce4851a4bb15ecabae28f4d2e18983c244eddd767f560165563bf9aefbc8d \ - --hash=sha256:77e2fd3057c9d78e225fa0a2160f96b64a824de17840351b26825b0848022906 \ - --hash=sha256:7c074fece789b5034b9b1404a1f8208fc2d4c6ce9decdd16e8220c5a793e6f61 \ - --hash=sha256:7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57 \ - --hash=sha256:7f57f14606cd1dd0f0de396e1e53824c371e9544a822648cd76c034d209b559c \ - --hash=sha256:83c681c526a3439b5cf94f7420471705bbf96262f49a6fe546a6db5f687a3d4a \ - --hash=sha256:8485b340a6a9e76c62a7dce3c98e5f102c9219f4cfbf896a00cf48caf078d438 \ - --hash=sha256:84e6e8cd997930fc66d5bb4fde61e2b62ba19d62b7abd7a69920406f9ecca946 \ - --hash=sha256:89284716bc6a5a415d4eaa11b1726d2d60a0cd12aadf5439828353662ede9dd7 \ - --hash=sha256:8b87e1a59c38f275c0e3676fc2ab6d59eccecfd460be267ac360cc31f7bcde96 \ - --hash=sha256:8f24ed114432de109aa9fd317278518a5af2d31ac2ea6b952b2f7782b43da091 \ - --hash=sha256:98cb4d057f285bd80d8778ebc4fde6b4d509ac3f331758fb1528b733215443ae \ - --hash=sha256:998679bf62b7fb599d2878aa3ed06b9ce688b8974893e7223c60db155f26bd8d \ - --hash=sha256:9ba053c5f50430a3fcfd36f75aff9caeba0440b2d076afdb79a318d6ca245f88 \ - --hash=sha256:9c99616c853bb585301df6de07ca2cadad344fd1ada6d62bb30aec05219c45d2 \ - --hash=sha256:a1fd716e7a01f8e717490fbe2e431d2905ab8aa598b9b12f8d10abebb36b04dd \ - --hash=sha256:a2355cba1f4ad8b6988a4ca3feed5bff33f6af2d7f134852cf279c2aebfde541 \ - --hash=sha256:b1f8133c9a275df5613a451e73f36c2aea4fe13c5c8997e22cf355ebd7bd0728 \ - --hash=sha256:b8667b48e7a7ef66afba2c81e1094ef526388d35b873966d8a9a447974ed9178 \ - --hash=sha256:ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968 \ - --hash=sha256:be82c3c8cfb15b30f36768797a640e800513793d6ae1724aaaafe5bf86f8f346 \ - --hash=sha256:c02ec1c5856179f171e032a31d6f8bf84e5a75c45c33b2e20a3de353b266ebd8 \ - --hash=sha256:c672d99a345849301784604bfeaeba4db0c7aae50b95be04dd651fd2a7310b93 \ - --hash=sha256:c6c777a480337ac14f38564ac88ae82d4cd238bf293f0a22295b66eb89ffced7 \ - --hash=sha256:cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273 \ - --hash=sha256:cd67cf24a553339d5062eff51013780a00d6f97a39ca062781d06b3a73b15462 \ - --hash=sha256:d3515f198eaa2f0ed49f8819d5732d70698c3fa37384146079b3799b97667a94 \ - --hash=sha256:d5280312b9af0976231f9e317c20e4a61cd2f9629b7bfea6a693d1878a264ebd \ - --hash=sha256:de06adc872bcd8c2a4e0dc51250e9e65ef2ca91be023b9d13ebd67c2ba552e1e \ - --hash=sha256:e1674e4307fa3024fc897ca774e9c7562c957af85df55efe2988ed9056dc4e57 \ - --hash=sha256:e2096eddb4e7c7bdae4bd69ad364e55e07b8316653234a56552d9c988bd2d61b \ - --hash=sha256:e560628513ed34759456a416bf86b54b2476c59144a9138165c9a1575801d0d9 \ - --hash=sha256:edfedb64740750e1a3b16152620220f51d58ff1b4abceb339ca92e934775c27a \ - --hash=sha256:f13cae8cc389a440def0c8c52057f37359014ccbc9dc1f0827936bcd367c6100 \ - --hash=sha256:f314013e7dcd5cf45ab1945d92e713eec788166262ae8deb2cfacd53def27325 \ - --hash=sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183 \ - --hash=sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556 \ - --hash=sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4 - # via google-resumable-media -google-resumable-media==2.5.0 \ - --hash=sha256:218931e8e2b2a73a58eb354a288e03a0fd5fb1c4583261ac6e4c078666468c93 \ - --hash=sha256:da1bd943e2e114a56d85d6848497ebf9be6a14d3db23e9fc57581e7c3e8170ec - # via google-cloud-storage -googleapis-common-protos==1.59.0 \ - --hash=sha256:4168fcb568a826a52f23510412da405abd93f4d23ba544bb68d943b14ba3cb44 \ - --hash=sha256:b287dc48449d1d41af0c69f4ea26242b5ae4c3d7249a38b0984c86a4caffff1f - # via google-api-core -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via - # requests - # yarl -jinja2==3.1.2 \ - --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ - --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 - # via - # -r requirements/main.in - # aiohttp-jinja2 -markupsafe==2.1.2 \ - --hash=sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed \ - --hash=sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc \ - --hash=sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2 \ - --hash=sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460 \ - --hash=sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7 \ - --hash=sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0 \ - --hash=sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1 \ - --hash=sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa \ - --hash=sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03 \ - --hash=sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323 \ - --hash=sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65 \ - --hash=sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013 \ - --hash=sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036 \ - --hash=sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f \ - --hash=sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4 \ - --hash=sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419 \ - --hash=sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2 \ - --hash=sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619 \ - --hash=sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a \ - --hash=sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a \ - --hash=sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd \ - --hash=sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7 \ - --hash=sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666 \ - --hash=sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65 \ - --hash=sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859 \ - --hash=sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625 \ - --hash=sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff \ - --hash=sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156 \ - --hash=sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd \ - --hash=sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba \ - --hash=sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f \ - --hash=sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1 \ - --hash=sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094 \ - --hash=sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a \ - --hash=sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513 \ - --hash=sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed \ - --hash=sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d \ - --hash=sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3 \ - --hash=sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147 \ - --hash=sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c \ - --hash=sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603 \ - --hash=sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601 \ - --hash=sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a \ - --hash=sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1 \ - --hash=sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d \ - --hash=sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3 \ - --hash=sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54 \ - --hash=sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2 \ - --hash=sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6 \ - --hash=sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58 - # via jinja2 -multidict==6.0.4 \ - --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \ - --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \ - --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \ - --hash=sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710 \ - --hash=sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161 \ - --hash=sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664 \ - --hash=sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569 \ - --hash=sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067 \ - --hash=sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313 \ - --hash=sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706 \ - --hash=sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2 \ - --hash=sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636 \ - --hash=sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49 \ - --hash=sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93 \ - --hash=sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603 \ - --hash=sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0 \ - --hash=sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60 \ - --hash=sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4 \ - --hash=sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e \ - --hash=sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1 \ - --hash=sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60 \ - --hash=sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951 \ - --hash=sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc \ - --hash=sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe \ - --hash=sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95 \ - --hash=sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d \ - --hash=sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8 \ - --hash=sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed \ - --hash=sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2 \ - --hash=sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775 \ - --hash=sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87 \ - --hash=sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c \ - --hash=sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2 \ - --hash=sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98 \ - --hash=sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3 \ - --hash=sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe \ - --hash=sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78 \ - --hash=sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660 \ - --hash=sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176 \ - --hash=sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e \ - --hash=sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988 \ - --hash=sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c \ - --hash=sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c \ - --hash=sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0 \ - --hash=sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449 \ - --hash=sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f \ - --hash=sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde \ - --hash=sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5 \ - --hash=sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d \ - --hash=sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac \ - --hash=sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a \ - --hash=sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9 \ - --hash=sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca \ - --hash=sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11 \ - --hash=sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35 \ - --hash=sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063 \ - --hash=sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b \ - --hash=sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982 \ - --hash=sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258 \ - --hash=sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1 \ - --hash=sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52 \ - --hash=sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480 \ - --hash=sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7 \ - --hash=sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461 \ - --hash=sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d \ - --hash=sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc \ - --hash=sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779 \ - --hash=sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a \ - --hash=sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547 \ - --hash=sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0 \ - --hash=sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171 \ - --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \ - --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \ - --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba - # via - # aiohttp - # yarl -protobuf==4.22.3 \ - --hash=sha256:13233ee2b9d3bd9a5f216c1fa2c321cd564b93d8f2e4f521a85b585447747997 \ - --hash=sha256:23452f2fdea754a8251d0fc88c0317735ae47217e0d27bf330a30eec2848811a \ - --hash=sha256:52f0a78141078077cfe15fe333ac3e3a077420b9a3f5d1bf9b5fe9d286b4d881 \ - --hash=sha256:70659847ee57a5262a65954538088a1d72dfc3e9882695cab9f0c54ffe71663b \ - --hash=sha256:7760730063329d42a9d4c4573b804289b738d4931e363ffbe684716b796bde51 \ - --hash=sha256:7cf56e31907c532e460bb62010a513408e6cdf5b03fb2611e4b67ed398ad046d \ - --hash=sha256:8b54f56d13ae4a3ec140076c9d937221f887c8f64954673d46f63751209e839a \ - --hash=sha256:d14fc1a41d1a1909998e8aff7e80d2a7ae14772c4a70e4bf7db8a36690b54425 \ - --hash=sha256:d4b66266965598ff4c291416be429cef7989d8fae88b55b62095a2331511b3fa \ - --hash=sha256:e0e630d8e6a79f48c557cd1835865b593d0547dce221c66ed1b827de59c66c97 \ - --hash=sha256:ecae944c6c2ce50dda6bf76ef5496196aeb1b85acb95df5843cd812615ec4b61 \ - --hash=sha256:f08aa300b67f1c012100d8eb62d47129e53d1150f4469fd78a29fa3cb68c66f2 \ - --hash=sha256:f2f4710543abec186aee332d6852ef5ae7ce2e9e807a3da570f36de5a732d88e - # via - # google-api-core - # googleapis-common-protos -pyasn1==0.5.0 \ - --hash=sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57 \ - --hash=sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.3.0 \ - --hash=sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c \ - --hash=sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d - # via google-auth -pycares==4.3.0 \ - --hash=sha256:008531733f9c7a976b59c7760a3672b191159fd69ae76c01ca051f20b5e44164 \ - --hash=sha256:1730ef93e33e4682fbbf0e7fb19df2ed9822779d17de8ea6e20d5b0d71c1d2be \ - --hash=sha256:19c9cdd3322d422931982939773e453e491dfc5c0b2e23d7266959315c7a0824 \ - --hash=sha256:1b6cd3161851499b6894d1e23bfd633e7b775472f5af35ae35409c4a47a2d45e \ - --hash=sha256:1c75a6241c79b935048272cb77df498da64b8defc8c4b29fdf9870e43ba4cbb4 \ - --hash=sha256:231962bb46274c52632469a1e686fab065dbd106dbef586de4f7fb101e297587 \ - --hash=sha256:24d8654fac3742791b8bef59d1fbb3e19ae6a5c48876a6d98659f7c66ee546c4 \ - --hash=sha256:257953ae6d400a934fd9193aeb20990ac84a78648bdf5978e998bd007a4045cd \ - --hash=sha256:2aae02d97d77dcff840ab55f86cb8b99bf644acbca17e1edb7048408b9782088 \ - --hash=sha256:2c9335175af0c64a1e0ba67bdd349eb62d4eea0ad02c235ccdf0d535fd20f323 \ - --hash=sha256:3215445396c74103e2054e6b349d9e85883ceda2006d0039fc2d58c9b11818a2 \ - --hash=sha256:326c5b9d7fe52eb3d243f5ead58d5c0011884226d961df8360a34618c38c7515 \ - --hash=sha256:35886dba7aa5b73affca8729aeb5a1f5e94d3d9a764adb1b7e75bafca44eeca5 \ - --hash=sha256:3692179ce5fb96908ba342e1e5303608d0c976f0d5d4619fa9d3d6d9d5a9a1b4 \ - --hash=sha256:36f2251ad0f99a5ce13df45c94c3161d9734c9e9fa2b9b4cc163b853ca170dc5 \ - --hash=sha256:3a9fd2665b053afb39226ac6f8137a60910ca7729358456df2fb94866f4297de \ - --hash=sha256:40aaa12081495f879f11f4cfc95edfec1ea14711188563102f9e33fe98728fac \ - --hash=sha256:4972cac24b66c5997f3a3e2cb608e408066d80103d443e36d626a88a287b9ae7 \ - --hash=sha256:4c9187be72449c975c11daa1d94d7ddcc494f8a4c37a6c18f977cd7024a531d9 \ - --hash=sha256:4e7a24ecef0b1933f2a3fdbf328d1b529a76cda113f8364fa0742e5b3bd76566 \ - --hash=sha256:531fed46c5ed798a914c3207be4ae7b297c4d09e4183d3cf8fd9ee59a55d5080 \ - --hash=sha256:5a26b3f1684557025da26ce65d076619890c82b95e38cc7284ce51c3539a1ce8 \ - --hash=sha256:5c4cb6cc7fe8e0606d30b60367f59fe26d1472e88555d61e202db70dea5c8edb \ - --hash=sha256:5cea6e1f3be016f155d60f27f16c1074d58b4d6e123228fdbc3326d076016af8 \ - --hash=sha256:61019151130557c1788cae52e4f2f388a7520c9d92574f3a0d61c974c6740db0 \ - --hash=sha256:655cf0df862ce3847a60e1a106dafa2ba2c14e6636bac49e874347acdc7312dc \ - --hash=sha256:674486ecf2afb25ee219171b07cdaba481a1aaa2dabb155779c7be9ded03eaa9 \ - --hash=sha256:6a0c0c3a0adf490bba9dbb37dbd07ec81e4a6584f095036ac34f06a633710ffe \ - --hash=sha256:6c979512fa51c7ccef5204fe10ed4e5c44c2bce5f335fe98a3e423f1672bd7d4 \ - --hash=sha256:710120c97b9afdba443564350c3f5f72fd9aae74d95b73dc062ca8ac3d7f36d7 \ - --hash=sha256:7106dc683db30e1d851283b7b9df7a5ea4964d6bdd000d918d91d4b1f9bed329 \ - --hash=sha256:84daf560962763c0359fd79c750ef480f0fda40c08b57765088dbe362e8dc452 \ - --hash=sha256:86112cce01655b9f63c5e53b74722084e88e784a7a8ad138d373440337c591c9 \ - --hash=sha256:9103649bd29d84bc6bcfaf09def9c0592bbc766018fad19d76d09989608b915d \ - --hash=sha256:976249b39037dbfb709ccf7e1c40d2785905a0065536385d501b94570cfed96d \ - --hash=sha256:978d10da7ee74b9979c494afa8b646411119ad0186a29c7f13c72bb4295630c6 \ - --hash=sha256:98568c30cfab6b327d94ae1acdf85bbba4cffd415980804985d34ca07e6f4791 \ - --hash=sha256:995cb37cc39bd40ca87bb16555a0f7724f3be30d9f9059a4caab2fde45b1b903 \ - --hash=sha256:9e56e9cdf46a092970dc4b75bbabddea9f480be5eeadc3fcae3eb5c6807c4136 \ - --hash=sha256:a2f3c4f49f43162f7e684419d9834c2c8ec165e54cb8dc47aa9dc0c2132701c0 \ - --hash=sha256:aa36b8ea91eae20b5c7205f3e6654423f066af24a1df02b274770a96cbcafaa7 \ - --hash=sha256:c01465a191dc78e923884bb45cd63c7e012623e520cf7ed67e542413ee334804 \ - --hash=sha256:c072dbaf73cb5434279578dc35322867d8d5df053e14fdcdcc589994ba4804ae \ - --hash=sha256:c28d481efae26936ec08cb6beea305f4b145503b152cf2c4dc68cc4ad9644f0e \ - --hash=sha256:c542696f6dac978e9d99192384745a65f80a7d9450501151e4a7563e06010d45 \ - --hash=sha256:c5f0e95535027d2dcd51e780410632b0d3ed7e9e5ceb25dc0fe937f2c2960079 \ - --hash=sha256:c9fd5d6012f3ee8c8038cbfe16e988bbd17b2f21eea86650874bf63757ee6161 \ - --hash=sha256:d7405ba10a2903a58b8b0faedcb54994c9ee002ad01963587fabf93e7e479783 \ - --hash=sha256:da7c7089ae617317d2cbe38baefd3821387b3bfef7b3ee5b797b871cb1257974 \ - --hash=sha256:e7abccc2aa4771c06994e4d9ed596453061e2b8846f887d9c98a64ccdaf4790a \ - --hash=sha256:e8e9195f869120e44e0aa0a6098bb5c19947f4753054365891f592e6f9eab3ef \ - --hash=sha256:ebf50b049a245880f1aa16a6f72c4408e0a65b49ea1d3bf13383a44a2cabd2bf - # via aiodns -pycparser==2.21 \ - --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ - --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 - # via cffi -python-dateutil==2.8.2 \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 - # via -r requirements/main.in -pyyaml==6.0 \ - --hash=sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf \ - --hash=sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293 \ - --hash=sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b \ - --hash=sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57 \ - --hash=sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b \ - --hash=sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4 \ - --hash=sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07 \ - --hash=sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba \ - --hash=sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9 \ - --hash=sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287 \ - --hash=sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513 \ - --hash=sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0 \ - --hash=sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782 \ - --hash=sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0 \ - --hash=sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92 \ - --hash=sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f \ - --hash=sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2 \ - --hash=sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc \ - --hash=sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1 \ - --hash=sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c \ - --hash=sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86 \ - --hash=sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4 \ - --hash=sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c \ - --hash=sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34 \ - --hash=sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b \ - --hash=sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d \ - --hash=sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c \ - --hash=sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb \ - --hash=sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7 \ - --hash=sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737 \ - --hash=sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3 \ - --hash=sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d \ - --hash=sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358 \ - --hash=sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53 \ - --hash=sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78 \ - --hash=sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803 \ - --hash=sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a \ - --hash=sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f \ - --hash=sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174 \ - --hash=sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 - # via -r requirements/main.in -requests==2.29.0 \ - --hash=sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b \ - --hash=sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059 - # via - # google-api-core - # google-cloud-storage -rsa==4.9 \ - --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ - --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 - # via google-auth -safir==1.0.0 \ - --hash=sha256:43df32e3bd076a5a59e5e69d138e3220304881908669ea3ce4da9a22bf0b9df3 \ - --hash=sha256:6086fc32c4a95a294ef4fc5520e9bf566585d88e638029509040d2d7a2d4bbb8 - # via -r requirements/main.in -six==1.16.0 \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # google-auth - # python-dateutil -structlog==23.1.0 \ - --hash=sha256:270d681dd7d163c11ba500bc914b2472d2b50a8ef00faa999ded5ff83a2f906b \ - --hash=sha256:79b9e68e48b54e373441e130fa447944e6f87a05b35de23138e475c05d0f7e0e - # via safir -urllib3==1.26.15 \ - --hash=sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305 \ - --hash=sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42 - # via requests -yarl==1.9.2 \ - --hash=sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571 \ - --hash=sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3 \ - --hash=sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3 \ - --hash=sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c \ - --hash=sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7 \ - --hash=sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04 \ - --hash=sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191 \ - --hash=sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea \ - --hash=sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4 \ - --hash=sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4 \ - --hash=sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095 \ - --hash=sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e \ - --hash=sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74 \ - --hash=sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef \ - --hash=sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33 \ - --hash=sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde \ - --hash=sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45 \ - --hash=sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf \ - --hash=sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b \ - --hash=sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac \ - --hash=sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0 \ - --hash=sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528 \ - --hash=sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716 \ - --hash=sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb \ - --hash=sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18 \ - --hash=sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72 \ - --hash=sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6 \ - --hash=sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582 \ - --hash=sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5 \ - --hash=sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368 \ - --hash=sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc \ - --hash=sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9 \ - --hash=sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be \ - --hash=sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a \ - --hash=sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80 \ - --hash=sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8 \ - --hash=sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6 \ - --hash=sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417 \ - --hash=sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574 \ - --hash=sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59 \ - --hash=sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608 \ - --hash=sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82 \ - --hash=sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1 \ - --hash=sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3 \ - --hash=sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d \ - --hash=sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8 \ - --hash=sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc \ - --hash=sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac \ - --hash=sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8 \ - --hash=sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955 \ - --hash=sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0 \ - --hash=sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367 \ - --hash=sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb \ - --hash=sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a \ - --hash=sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623 \ - --hash=sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2 \ - --hash=sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6 \ - --hash=sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7 \ - --hash=sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4 \ - --hash=sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051 \ - --hash=sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938 \ - --hash=sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8 \ - --hash=sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9 \ - --hash=sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3 \ - --hash=sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5 \ - --hash=sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9 \ - --hash=sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333 \ - --hash=sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185 \ - --hash=sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3 \ - --hash=sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560 \ - --hash=sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b \ - --hash=sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7 \ - --hash=sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78 \ - --hash=sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7 - # via aiohttp diff --git a/scripts/docker-tag.sh b/scripts/docker-tag.sh deleted file mode 100755 index 080a9c9b..00000000 --- a/scripts/docker-tag.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -# Determine the tag for Docker images based on GitHub Actions environment -# variables. - -set -eo pipefail - -if [ -n "$GITHUB_HEAD_REF" ]; then - # For pull requests - echo ${GITHUB_HEAD_REF} | sed -E 's,/,-,g' -else - # For push events - echo ${GITHUB_REF} | sed -E 's,refs/(heads|tags)/,,' | sed -E 's,/,-,g' -fi diff --git a/scripts/install-base-packages.sh b/scripts/install-base-packages.sh deleted file mode 100755 index 620781c1..00000000 --- a/scripts/install-base-packages.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# This script updates packages in the base Docker image that's used by both the -# build and runtime images, and gives us a place to install additional -# system-level packages with apt-get. -# -# Based on the blog post: -# https://pythonspeed.com/articles/system-packages-docker/ - -# Bash "strict mode", to help catch problems and bugs in the shell -# script. Every bash script you write should include this. See -# http://redsymbol.net/articles/unofficial-bash-strict-mode/ for -# details. -set -euo pipefail - -# Display each command as it's run. -set -x - -# Tell apt-get we're never going to be able to give manual -# feedback: -export DEBIAN_FRONTEND=noninteractive - -# Update the package listing, so we know what packages exist: -apt-get update - -# Install security updates: -apt-get -y upgrade - -# Example of installing a new package, without unnecessary packages: -apt-get -y install --no-install-recommends git - -# Delete cached files we don't need anymore: -apt-get clean -rm -rf /var/lib/apt/lists/* diff --git a/scripts/install-dependency-packages.sh b/scripts/install-dependency-packages.sh deleted file mode 100755 index f63ef751..00000000 --- a/scripts/install-dependency-packages.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# This script installs additional packages used by the dependency image but -# not needed by the runtime image, such as additional packages required to -# build Python dependencies. -# -# Since the base image wipes all the apt caches to clean up the image that -# will be reused by the runtime image, we unfortunately have to do another -# apt-get update here, which wastes some time and network. - -# Bash "strict mode", to help catch problems and bugs in the shell -# script. Every bash script you write should include this. See -# http://redsymbol.net/articles/unofficial-bash-strict-mode/ for -# details. -set -euo pipefail - -# Display each command as it's run. -set -x - -# Tell apt-get we're never going to be able to give manual -# feedback: -export DEBIAN_FRONTEND=noninteractive - -# Update the package listing, so we know what packages exist: -apt-get update - -# Install build-essential because sometimes Python dependencies need to build -# C modules, particularly when upgrading to newer Python versions. libffi-dev -# is sometimes needed to build cffi (a cryptography dependency). -apt-get -y install --no-install-recommends build-essential libffi-dev - -# Delete cached files we don't need anymore: -apt-get clean -rm -rf /var/lib/apt/lists/* diff --git a/scripts/uploader.py b/scripts/uploader.py deleted file mode 100644 index 4d0dd09a..00000000 --- a/scripts/uploader.py +++ /dev/null @@ -1,43 +0,0 @@ -import argparse -from pathlib import Path - -from google.cloud import storage - - -def main() -> None: - parser = argparse.ArgumentParser( - description="Upload images to GCS for use with RubinTV" - ) - parser.add_argument("files", type=str, nargs="+", help="Files to upload") - parser.add_argument( - "--bucket", - type=str, - default="rubintv_data", - help="Bucket to upload to", - ) - group = parser.add_mutually_exclusive_group(required=True) - group.add_argument( - "--image", action="store_true", help="Upload files from imExam" - ) - group.add_argument( - "--spec", action="store_true", help="Upload files from specExam" - ) - args = parser.parse_args() - - client = storage.Client() - bucket = client.get_bucket(args.bucket) - if args.image: - prefix = "summit_imexam" - elif args.spec: - prefix = "summit_specexam" - else: - raise RuntimeError("Somehow neither --image nor --spec was passed") - - for f in args.files: - path = Path(f) - blob = bucket.blob("/".join([prefix, path.name])) - blob.upload_from_filename(f) - - -if __name__ == "__main__": - main() diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 60b0139c..00000000 --- a/setup.cfg +++ /dev/null @@ -1,59 +0,0 @@ -[metadata] -name = rubintv -description = Service to show streaming view of butler datasets. -author = Association of Universities for Research in Astronomy, Inc. (AURA) -author_email = sqre-admin@lists.lsst.org -long_description = file: README.rst, CHANGELOG.rst, LICENSE -long_description_content_type = text/x-rst -url = https://github.com/lsst-sqre/rubin-tv -project_urls = - Change log = https://github.com/lsst-sqre/rubin-tv/master/blob/CHANGELOG.rst - Source code = https://github.com/lsst-sqre/rubin-tv - Issue tracker = https://github.com/lsst-sqre/rubin-tv/issues -classifiers = - Development Status :: 4 - Beta - License :: OSI Approved :: MIT License - Programming Language :: Python - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Natural Language :: English - Operating System :: POSIX -keywords = - lsst - -[options] -zip_safe = False -include_package_data = True -package_dir = - = src -packages=find: -python_requires = >=3.9 -setup_requires = - setuptools_scm -# Use requirements/main.in for runtime dependencies instead of install_requires - -[options.packages.find] -where = src - -[options.entry_points] -console_scripts = - rubintv = rubintv.cli:main - -[flake8] -max-line-length = 110 -# E203: whitespace before :, flake8 disagrees with PEP-8 -# W503: line break after binary operator, flake8 disagrees with PEP-8 -# N802: Allow camelCasing of function names -# N802: Allow camelCasing of variable names -ignore = E203, W503, N802, N806 - -[mypy] -disallow_untyped_defs = True -disallow_incomplete_defs = True -ignore_missing_imports = True -show_error_codes = True -strict_equality = True -warn_redundant_casts = True -warn_unreachable = True -warn_unused_ignores = True diff --git a/setup.py b/setup.py deleted file mode 100644 index d5d43d7c..00000000 --- a/setup.py +++ /dev/null @@ -1,3 +0,0 @@ -from setuptools import setup - -setup(use_scm_version=True) diff --git a/src/images/copy-to-clipboard.svg b/src/images/copy-to-clipboard.svg deleted file mode 100644 index aa54427c..00000000 --- a/src/images/copy-to-clipboard.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/images/heartbeat_active.svg b/src/images/heartbeat_active.svg deleted file mode 100644 index 0d4925f9..00000000 --- a/src/images/heartbeat_active.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/images/heartbeat_channel_stopped.svg b/src/images/heartbeat_channel_stopped.svg deleted file mode 100644 index 3855095d..00000000 --- a/src/images/heartbeat_channel_stopped.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/images/heartbeat_stopped.svg b/src/images/heartbeat_stopped.svg deleted file mode 100644 index 7da6fda7..00000000 --- a/src/images/heartbeat_stopped.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/images/heartbeat_unknown.svg b/src/images/heartbeat_unknown.svg deleted file mode 100644 index 3f9ac7e5..00000000 --- a/src/images/heartbeat_unknown.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/images/image-viewer-link.svg b/src/images/image-viewer-link.svg deleted file mode 100644 index b05688fb..00000000 --- a/src/images/image-viewer-link.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/js/heartbeats.js b/src/js/heartbeats.js deleted file mode 100644 index eae52ff8..00000000 --- a/src/js/heartbeats.js +++ /dev/null @@ -1,78 +0,0 @@ -import { _getById } from './modules/utils.js' -import ReconnectingWebSocket from 'reconnecting-websocket' - -window.addEventListener('pageshow', function (e) { - const location = _getById('location').dataset.location - - // scrape relevent services from page - const serviceEls = Array.from(document.querySelectorAll('.service')) - const services = serviceEls.map((s) => { - let dependentOn = '' - if (s instanceof HTMLElement) { - dependentOn = s.dataset.dependentOn - } - return { id: s.id, el: s, dependentOn } - }) - - // boil down dependency names - const dependenciesNames = Array.from( - new Set( - services.map(service => { return service.dependentOn }) - // filter out any undefined or empty dependencies - .filter(serviceName => { return serviceName }) - ) - ) - - // init websocket listener - const protocol = this.document.location.protocol - const wsProtocol = protocol === 'https:' ? 'wss:' : 'ws:' - // use origin to include port - const hostname = this.document.location.origin.split('//')[1] - const appName = this.document.location.pathname.split('/')[1] - const wsUrl = `${wsProtocol}//${hostname}/${appName}/${location}/heartbeats_ws` - - const rws = new ReconnectingWebSocket(wsUrl) - - rws.onopen = () => { - console.log('Listening for heartbeats...') - } - - rws.onmessage = heartbeatHandler - - /** - * @param {{ data: string; }} event - */ - function heartbeatHandler (event) { - const heartbeats = JSON.parse(event.data) - services.forEach(s => { - const hb = heartbeats[s.id] - if (!hb) return - const hasDependent = s.dependentOn && dependenciesNames.includes(s.dependentOn) - const depActive = hasDependent ? heartbeats[s.dependentOn].active : true - const status = hb.active && depActive ? 'active' : 'stopped' - - let msg = `last heartbeat at: ${timestampToDateUTC(hb.curr)} UTC` - msg = msg.concat(`\nnext check at: ${timestampToDateUTC(hb.next)} UTC`) - if (!depActive) { - msg = msg.concat(`\nDependency: ${s.dependentOn} is stopped`) - } - - s.el.classList.remove('active', 'stopped') - s.el.classList.add(status) - s.el.setAttribute('title', msg) - }) - } - - rws.onclose = () => { - console.log('Heartbeats websocket closed') - } - - /** - * @param {number} timestamp - */ - function timestampToDateUTC (timestamp) { - // Date takes timestamp in milliseconds - const d = new Date(timestamp * 1000).toLocaleString('en-US', { timeZone: 'UTC' }) - return d - } -}) diff --git a/src/js/modules/calendar-controls.js b/src/js/modules/calendar-controls.js deleted file mode 100644 index bcaa5ec5..00000000 --- a/src/js/modules/calendar-controls.js +++ /dev/null @@ -1,19 +0,0 @@ -import { _getById } from './utils.js' - -export function applyYearControls () { - const years = document.querySelectorAll('.year-title') - const yearPanels = document.querySelectorAll('.year') - Array.from(years).forEach(year => { - year.addEventListener('click', function () { - if (!this.classList.contains('current')) { - years.forEach(y => y.classList.remove('current')) - yearPanels.forEach(y => y.classList.remove('current')) - - const id = `year-${this.dataset.year}` - const yearPanel = _getById(id) - this.classList.add('current') - yearPanel.classList.add('current') - } - }) - }) -} diff --git a/src/js/modules/draw-grouped-table.js b/src/js/modules/draw-grouped-table.js deleted file mode 100644 index 22f8419b..00000000 --- a/src/js/modules/draw-grouped-table.js +++ /dev/null @@ -1,100 +0,0 @@ -import { - _escapeName, - _elWithAttrs, - drawTableColumnsAndRows -} from './utils.js' - -// headerGroups is an array of arrays -/** - * @param {{[s: string]: any;} | ArrayLike} metaData - * @param {ArrayLike | { [s: string]: any; }} headerGroups - */ -export function drawTable (metaData, headerGroups) { - // empty object test- there's no data, just go home - if (Object.keys(metaData).length === 0) return - - // remove existing metadata part of table - Array.from(document.querySelectorAll('.meta')).forEach(gridElement => { - gridElement.remove() - }) - - // add metadata group headers to the table - // fill out the headers for the new row with blanks - // one for each existing channel (and seq num) - const tableRow = document.querySelector('.channel-grid tr') - const groupRow = _elWithAttrs('tr', { id: 'grouping', class: 'meta' }) - Array.from(tableRow.querySelectorAll('th')).forEach(() => { - groupRow.append(_elWithAttrs('th', { scope: 'col' })) - }) - - Object.keys(headerGroups).forEach((group) => { - const span = Object.keys(headerGroups[group]).length - if (span > 0) { - const groupID = _escapeName(group) - const tr = _elWithAttrs('th', - { id: groupID, scope: 'colgroup', colspan: span, class: 'meta-group' } - ) - tr.append(_elWithAttrs('p', { class: 'braced-group-title', text: group })) - tr.append(_elWithAttrs('div', { - class: 'brace-placeholder', - id: `brace-${groupID}`, - style: 'height: 40px; width: 100%;' - })) - groupRow.append(tr) - } - }) - - document.querySelector('thead').prepend(groupRow) - - Object.keys(headerGroups).forEach((group) => { - const groupID = _escapeName(group) - Object.keys(headerGroups[group]).forEach((/** @type {string} */ attr) => { - const escapedName = _escapeName(attr) - const lastHeaderCall = Array.from(document.querySelectorAll('.grid-title')).pop() - const el = _elWithAttrs('th', - { class: `grid-title sideways meta ${escapedName}`, headers: groupID } - ) - el.textContent = attr - if (headerGroups[group][attr]) { - el.title = headerGroups[group][attr] - } - lastHeaderCall.after(el) - }) - }) - - // add table entries by row... - const headers = Object.values(headerGroups).map(h => Object.keys(h)).flat() - drawTableColumnsAndRows(metaData, headers) - - replaceBraceImgWithSVG() -} - -function replaceBraceImgWithSVG () { - const groups = document.querySelectorAll('.meta-group') - Array.from(groups).forEach((group) => { - const placeholder = group.querySelector('.brace-placeholder') - placeholder.replaceWith(SVGBracket(placeholder.clientWidth)) - }) -} - -/** - * @param {number} width - */ -function SVGBracket (width) { - // draws a curly brace on it's side the total length of width - // note, if the width less than 84.5px, it will look strange - const half = (width - 84.5) / 2 - const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg') - const path = document.createElementNS('http://www.w3.org/2000/svg', 'path') - svg.setAttribute('viewBox', `0 0 ${width} 38`) - svg.setAttribute('width', '100%') - svg.setAttribute('height', '38') - path.setAttribute('d', - `m1.5,38 c0,-13 8,-18 20,-18 h${half} c20,0 20,-20 20,-20 m1.5 0 c0,0 0,20 20, 20 h${half} c12,0 20,5 20,18` - ) - path.setAttribute('fill', 'none') - path.setAttribute('class', 'svg-brace') - path.setAttribute('style', 'stroke-width: 1.5px') - svg.appendChild(path) - return svg -} diff --git a/src/js/modules/draw-simple-table.js b/src/js/modules/draw-simple-table.js deleted file mode 100644 index edf336e1..00000000 --- a/src/js/modules/draw-simple-table.js +++ /dev/null @@ -1,65 +0,0 @@ -import { - _getById, - _elWithClass, - _escapeName, - _elWithAttrs, - drawTableColumnsAndRows -} from './utils.js' - -/** - * @param {string[]} selection - * @param {{ [s: string]: any; } | ArrayLike} metaData - */ -export function addToTable (metaData, selection, headerDescs) { - // remove existing metadata part of table - Array.from(document.querySelectorAll('.meta')).forEach(gridElement => { - gridElement.remove() - }) - - // add metadata headers to the table - selection.forEach((/** @type {string} */ attr) => { - const escapedName = _escapeName(attr) - const lastHeaderCall = Array.from(document.querySelectorAll('.grid-title')).pop() - const el = _elWithClass('th', `grid-title sideways meta ${escapedName}`) - el.textContent = attr - if (headerDescs[attr]) { - el.title = headerDescs[attr] - } - lastHeaderCall.after(el) - }) - - drawTableColumnsAndRows(metaData, selection) - - // add empty column to table header for 'copy to clipboard' - if (!_getById('ctbEmpty')) { - const ctbColumnHeader = _elWithAttrs('th', { id: 'ctbEmpty' }) - // place it after the first column - document.querySelector('.grid-title').after(ctbColumnHeader) - // add copy to clipboard buttons to grid - Array.from(document.querySelectorAll('tr[id^="seqno-"]')).forEach((row) => { - const seq = row.id.split('-').pop() - const cell = _elWithClass('td', 'grid-cell copy-to-cb') - const button = _elWithClass('button', 'button button-table copy') - button.setAttribute('data-seq', seq) - cell.appendChild(button) - row.querySelector('td').after(cell) - }) - } - - Array.from(document.querySelectorAll('.button.copy')).forEach(button => { - button.addEventListener('click', function () { - const seq = this.dataset.seq - const dateStr = _getById('the-date').dataset.date - const dayObs = dateStr.replaceAll('-', '') - const dataStr = `dataId = {"day_obs": ${dayObs}, "seq_num": ${seq}, "detector": 0}` - navigator.clipboard.writeText(dataStr) - const responseMsg = _elWithAttrs('div', { class: 'copied', text: `DataId for ${seq} copied to clipboard` }) - const pos = this.getBoundingClientRect() - responseMsg.setAttribute('style', `top: ${pos.y - (pos.height / 2)}px; left: ${pos.x + (pos.width + 8)}px`) - responseMsg.addEventListener('animationend', () => { - responseMsg.remove() - }) - document.body.append(responseMsg) - }) - }) -} diff --git a/src/js/modules/historical-reset.js b/src/js/modules/historical-reset.js deleted file mode 100644 index 1a9e82a5..00000000 --- a/src/js/modules/historical-reset.js +++ /dev/null @@ -1,19 +0,0 @@ -import { simplePost, _getById } from './utils.js' - -export function listenForHistoricalReset () { - const form = _getById('historicalReset') - form.addEventListener('click', function (e) { - e.preventDefault() - // hide 'done' in case button is pressed again - form.querySelector('.done').classList.add('hidden') - form.querySelector('.pending').classList.remove('hidden') - - simplePost('reload_historical').then(data => { - console.log(`${data}: reload success`) - form.querySelector('.pending').classList.add('hidden') - form.querySelector('.done').classList.remove('hidden') - }).catch((err) => { - console.log(`Couldn't reload historical date: ${err}`) - }) - }) -} diff --git a/src/js/modules/table-control-grouped.js b/src/js/modules/table-control-grouped.js deleted file mode 100644 index d56b05b9..00000000 --- a/src/js/modules/table-control-grouped.js +++ /dev/null @@ -1,203 +0,0 @@ -import { - _getById, _elWithAttrs, _elWithClass, intersect -} - from './utils.js' - -export class TableControls { - /** - * @param {any[]} defaultAttrs - * @param {JSON} metaData - * @param {string} elementToAppendTo - */ - constructor (defaultAttrs, metaData, elementToAppendTo, drawToTableCallback) { - this.camera = document.querySelector('body').className - - this.groupedAttrs = defaultAttrs - this.defaultAttrs = - Object.values(defaultAttrs).map(h => Object.keys(h)).flat() - - this.metaData = metaData - - const saved = this.retrieveSelected() - if (saved) { - this.selected = intersect(saved, this.defaultAttrs) - } else { - this.selected = this.defaultAttrs - } - this.setGroupedSelected() - - this.elementToAppendTo = elementToAppendTo - this.drawToTableCallback = drawToTableCallback - - this.controlsOpen = false - this.toggleAll = false - this.draw() - } - - orderSelected () { - const fromTheDefaults = - this.defaultAttrs.filter((/** @type {string} */ attr) => - this.selected.includes(attr)) - - const notInDefaults = - this.selected.filter((/** @type {string} */ attr) => - !this.defaultAttrs.includes(attr)) - - this.selected = fromTheDefaults.concat(notInDefaults) - } - - /** - * @param {string | any[]} arrayA - * @param {any} arrayB - */ - union (arrayA, arrayB) { - return Array.from(new Set(arrayA.concat(arrayB))) - } - - retrieveSelected () { - const retrieved = localStorage[this.camera] - return (retrieved && JSON.parse(retrieved)) - } - - /** - * @param {any} selected - */ - storeSelected (selected) { - localStorage[this.camera] = JSON.stringify(selected) - } - - /** - * @param {{ [s: string]: any; }} metaData - */ - getAttributesFrom (metaData) { - // get the set of all data for list of all available attrs - const allAttrs = Object.values(metaData).map(obj => Object.keys(obj)).flat() - const attrsWithIndicators = new Set(this.defaultAttrs.concat(allAttrs)) - // filter out the indicators (first char is '_') - return Array.from(attrsWithIndicators).filter(el => el[0] !== '_') - } - - draw () { - const panel = _elWithClass('div', 'table-panel') - const controls = _elWithClass('div', 'table-controls') - const button = _elWithAttrs('button', { - class: 'table-control-button', text: 'Add/Remove Columns' - }) - panel.appendChild(button) - - this.defaultAttrs.forEach(title => { - const label = _elWithAttrs('label', { for: title, text: title }) - const checkBox = _elWithAttrs('input', { - type: 'checkbox', - id: title, - name: title, - value: 1 - }) - - if (this.selected.includes(title)) { - checkBox.setAttribute('checked', 'true') - } - - const control = _elWithClass('div', 'table-control') - label.prepend(checkBox) - control.append(label) - controls.append(control) - }) - - panel.append(controls) - document.querySelector(this.elementToAppendTo).append(panel) - - if (this.controlsOpen) { - panel.classList.add('open') - } - - const checkBoxes = document.querySelectorAll(".table-control [type='checkbox']") - Array.from(checkBoxes).forEach(cb => { - cb.addEventListener('change', this.handleCheckboxChange.bind(this)) - }) - - document.querySelector('.table-control-button') - .addEventListener('click', () => { - if (this.controlsOpen) { - panel.classList.remove('open') - this.controlsOpen = false - } else { - panel.classList.add('open') - this.controlsOpen = true - } - }) - - this.drawJumpButtonControls() - this.addDownloadMetadataButton() - } - - /** - * @param {{ target: any; }} e - */ - handleCheckboxChange (e) { - const thisEl = e.target - if (this.selected.includes(thisEl.name)) { - this.selected.splice(this.selected.indexOf(thisEl.name), 1) - } else { - this.selected.push(thisEl.name) - } - this.orderSelected() - this.setGroupedSelected() - this.drawToTableCallback(this.metaData, this.groupedSelected) - this.storeSelected(this.selected) - } - - drawJumpButtonControls () { - const icon = _elWithAttrs('img', { src: '/rubintv/static/images/to-top.svg' }) - const toTop = _elWithAttrs('button', { class: 'to-top jump-button', title: 'To top' }) - toTop.append(icon) - const toBottom = _elWithAttrs('button', { class: 'to-bottom jump-button', title: 'To bottom' }) - toBottom.append(icon.cloneNode(true)) - - const buttonsPlace = document.querySelector('.jump-buttons') - buttonsPlace.append(toTop) - buttonsPlace.append(toBottom) - - toTop.addEventListener('click', () => { - _getById('channel-day-data').scrollIntoView() - }) - - toBottom.addEventListener('click', () => { - _getById('channel-day-data').scrollIntoView(false) - }) - } - - addDownloadMetadataButton () { - const button = _elWithAttrs('button', { - class: 'button button-small download-metadata', - text: 'Download Metadata' - }) - _getById('table-controls').after(button) - - const camera = document.body.className - const date = _getById('the-date').dataset.date - button.addEventListener('click', () => { - const a = document.createElement('a') - const blob = new Blob([JSON.stringify(this.metaData)]) - const url = window.URL.createObjectURL(blob) - a.href = url - a.download = `${camera}_${date}.json` - a.click() - URL.revokeObjectURL(blob.name) - }) - } - - setGroupedSelected () { - const selected = this.selected - const grouped = {} - for (const g in this.groupedAttrs) { - grouped[g] = {} - for (const attr in this.groupedAttrs[g]) { - if (selected.includes(attr)) { - grouped[g][attr] = this.groupedAttrs[g][attr] - } - } - } - this.groupedSelected = grouped - } -} diff --git a/src/js/modules/table-control.js b/src/js/modules/table-control.js deleted file mode 100644 index 4c619556..00000000 --- a/src/js/modules/table-control.js +++ /dev/null @@ -1,182 +0,0 @@ -import { - _getById, _elWithAttrs, _elWithClass, intersect -} - from './utils.js' - -export class TableControls { - /** - * @param {JSON} metaData - * @param {string} elementToAppendTo - * @param {string[]} defaultAttrsAndDescs - */ - constructor (defaultAttrsAndDescs, metaData, elementToAppendTo, drawToTableCallback) { - this.camera = document.querySelector('body').className - this.defaultAttrsAndDescs = defaultAttrsAndDescs - this.defaultAttrs = Object.keys(defaultAttrsAndDescs) - this.updateMetadata(metaData) - const saved = this.retrieveSelected() - if (saved) { - this.selected = intersect(saved, this.attributes) - } else { - this.selected = this.defaultAttrs - } - this.elementToAppendTo = elementToAppendTo - this.drawToTableCallback = drawToTableCallback - - this.controlsOpen = false - this.toggleAll = false - this.draw() - } - - orderSelected () { - const fromTheDefaults = - this.defaultAttrs.filter((/** @type {string} */ attr) => - this.selected.includes(attr)) - - const notInDefaults = - this.selected.filter((/** @type {string} */ attr) => - !this.defaultAttrs.includes(attr)) - - this.selected = fromTheDefaults.concat(notInDefaults) - } - - retrieveSelected () { - const retrieved = localStorage[this.camera] - return (retrieved && JSON.parse(retrieved)) - } - - /** - * @param {any} selected - */ - storeSelected (selected) { - localStorage[this.camera] = JSON.stringify(selected) - } - - /** - * @param {JSON} metaData - */ - updateMetadata (metaData) { - this.metaData = metaData - this.attributes = this.getAttributesFrom(metaData) - } - - /** - * @param {{ [s: string]: any; }} metaData - */ - getAttributesFrom (metaData) { - // get the set of all data for list of all available attrs - const allAttrs = Object.values(metaData).map(obj => Object.keys(obj)).flat() - const attrsWithIndicators = new Set(this.defaultAttrs.concat(allAttrs)) - // filter out the indicators (first char is '_') - return Array.from(attrsWithIndicators).filter(el => el[0] !== '_') - } - - draw () { - const panel = _elWithClass('div', 'table-panel') - const controls = _elWithClass('div', 'table-controls') - const button = _elWithAttrs('button', { - class: 'table-control-button', text: 'Add/Remove Columns' - }) - panel.appendChild(button) - - this.attributes.forEach(title => { - const label = _elWithAttrs('label', { for: title, text: title }) - const checkBox = _elWithAttrs('input', { - type: 'checkbox', - id: title, - name: title, - value: 1 - }) - - if (this.selected.includes(title)) { - checkBox.setAttribute('checked', 'true') - } - - const control = _elWithClass('div', 'table-control') - label.prepend(checkBox) - control.append(label) - controls.append(control) - }) - - panel.append(controls) - document.querySelector(this.elementToAppendTo).append(panel) - - if (this.controlsOpen) { - panel.classList.add('open') - } - - const checkBoxes = document.querySelectorAll(".table-control [type='checkbox']") - Array.from(checkBoxes).forEach(cb => { - cb.addEventListener('change', this.handleCheckboxChange.bind(this)) - }) - - document.querySelector('.table-control-button') - .addEventListener('click', () => { - if (this.controlsOpen) { - panel.classList.remove('open') - this.controlsOpen = false - } else { - panel.classList.add('open') - this.controlsOpen = true - } - }) - - this.drawJumpButtonControls() - this.addDownloadMetadataButton() - } - - /** - * @param {{ target: any; }} e - */ - handleCheckboxChange (e) { - const thisEl = e.target - if (this.selected.includes(thisEl.name)) { - this.selected.splice(this.selected.indexOf(thisEl.name), 1) - } else { - this.selected.push(thisEl.name) - } - this.orderSelected() - this.drawToTableCallback(this.metaData, this.selected, this.defaultAttrsAndDescs) - this.storeSelected(this.selected) - } - - drawJumpButtonControls () { - const icon = _elWithAttrs('img', { src: '/rubintv/static/images/to-top.svg' }) - const toTop = _elWithAttrs('button', { class: 'to-top jump-button', title: 'To top' }) - toTop.append(icon) - const toBottom = _elWithAttrs('button', { class: 'to-bottom jump-button', title: 'To bottom' }) - toBottom.append(icon.cloneNode(true)) - - const buttonsPlace = document.querySelector('.jump-buttons') - buttonsPlace.append(toTop) - buttonsPlace.append(toBottom) - - toTop.addEventListener('click', () => { - _getById('channel-day-data').scrollIntoView() - }) - - toBottom.addEventListener('click', () => { - _getById('channel-day-data').scrollIntoView(false) - }) - } - - addDownloadMetadataButton () { - const button = _elWithAttrs('button', { - class: 'button button-small download-metadata', - text: 'Download Metadata' - }) - _getById('table-controls').after(button) - - const camera = document.body.className - const date = _getById('the-date').dataset.date - button.addEventListener('click', () => { - const a = document.createElement('a') - const blob = new Blob([JSON.stringify(this.metaData)]) - const url = window.URL.createObjectURL(blob) - a.href = url - a.download = `${camera}_${date}.json` - a.click() - URL.revokeObjectURL(blob.name) - }) - } -} diff --git a/src/js/modules/table-refresher.js b/src/js/modules/table-refresher.js deleted file mode 100644 index 72f79d31..00000000 --- a/src/js/modules/table-refresher.js +++ /dev/null @@ -1,21 +0,0 @@ -import { getJson, parseJsonFromDOM } from './utils.js' - -/** - * @param {{ (htmlParts: any): void; }} injectHTMLCallback - * @param {{ (meta: any): void; }} doUpdatingCallback - * @param {number} periodInSecs - */ -export function refreshTableLoop (injectHTMLCallback, doUpdatingCallback, periodInSecs) { - setInterval(function () { - const urlPath = document.location.pathname - const promise = getJson(urlPath + '/update') - promise.then((htmlParts) => { - injectHTMLCallback(htmlParts) - const meta = parseJsonFromDOM('#table-metadata') - doUpdatingCallback(meta) - }) - promise.catch((e) => { - console.warn("Couldn't reach server: Unable to refresh table") - }) - }, periodInSecs * 1000) -} diff --git a/src/js/modules/utils.js b/src/js/modules/utils.js deleted file mode 100644 index 1c66762d..00000000 --- a/src/js/modules/utils.js +++ /dev/null @@ -1,276 +0,0 @@ -/** -* @param {string | any[]} arrayA -* @param {any} arrayB -*/ -export function intersect (arrayA, arrayB) { - return arrayA.filter(el => arrayB.includes(el)) -} - -/** - * @param {RequestInfo | URL} url - */ -export async function getJson (url) { - const data = getDataFromURL(url) - return data -} - -/** - * @param {RequestInfo | URL} url - */ -export async function getHtml (url) { - const data = getDataFromURL(url, 'text') - return data -} - -/** - * @param {RequestInfo | URL} url - */ -async function getDataFromURL (url, dataType = 'json') { - const res = await fetch(url) - const data = await res[dataType]() - return data -} - -/** - * @param {RequestInfo | URL} url - */ -export async function simplePost (url) { - const res = await fetch(url, { - method: 'POST', - body: '' - }) - const data = await res.text() - return data -} - -/** - * @param {string} tagName - * @param {string} className - */ -export function _elWithClass (tagName, className) { - return _elWithAttrs(tagName, { class: className }) -} - -/** - * @param {string} tagName - */ -export function _elWithAttrs (tagName, attrsObj = {}) { - const el = document.createElement(tagName) - Object.entries(attrsObj).forEach(([attr, value]) => { - switch (attr) { - case 'text': { - const tNode = document.createTextNode(value) - el.appendChild(tNode) - break - } - default: - el.setAttribute(attr, value) - } - }) - return el -} - -/** - * @param {string} idStr - */ -export function _getById (idStr) { - return document.getElementById(idStr) -} - -const cyrb53 = (/** @type {string} */ str, seed = 0) => { - let h1 = 0xdeadbeef ^ seed - let h2 = 0x41c6ce57 ^ seed - for (let i = 0, ch; i < str.length; i++) { - ch = str.charCodeAt(i) - h1 = Math.imul(h1 ^ ch, 2654435761) - h2 = Math.imul(h2 ^ ch, 1597334677) - } - - h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909) - h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909) - - return 4294967296 * (2097151 & h2) + (h1 >>> 0) -} - -/** - * @param {string} [_attrName] - */ -function hashCacher (_attrName) { - const cache = {} - return function (/** @type {string} */ attrName) { - if (cache[attrName]) { - return cache[attrName] - } - const result = cyrb53(attrName) - cache[attrName] = result - return result - } -} - -const cachedHash = hashCacher() -/** - * @param {string} attrName - */ -export function _escapeName (attrName) { - return 'c_' + cachedHash(attrName) -} - -/** - * @param {string} element - */ -export function parseJsonFromDOM (element) { - const metaInDOM = document.querySelector(element) - if (!metaInDOM) return {} - const metaText = document.querySelector(element).textContent - return JSON.parse(metaText) -} - -/** - * @param {string} seq - * @param {{[x: string]: string | number | object}} attributes - * @param {string} attr - * @param {string[]} classes - */ -export function createTableCell (seq, attributes, attr, ...classes) { - const classString = classes.join(' ') - const el = _elWithClass('td', `meta grid-cell ${classString}`) - let val = attributes[attr] - if (val || val === 0) { - switch (typeof val) { - case 'number': - val = (+val.toFixed(3)).toString() - break - case 'object': - el.appendChild(_createFoldoutCellButton(seq, attr, val)) - val = null - break - } - } else { - val = '' - } - if (val) { - el.textContent = val - } - return el -} - -function _createFoldoutCellButton (seq, attr, obj) { - const button = _elWithAttrs('button', { class: 'button button-table' }) - button.dataset.seq = seq - button.dataset.column = attr - // eslint-disable-next-line dot-notation - let displayValue = obj['DISPLAY_VALUE'] - if (!displayValue) { - displayValue = '❓' - } else { - // eslint-disable-next-line dot-notation - delete obj['DISPLAY_VALUE'] - } - button.textContent = displayValue - button.dataset.dict = JSON.stringify(obj) - button.addEventListener('click', _foldoutCell) - return button -} - -/** - * - * @param {Event} ev - */ - -function _foldoutCell (ev) { - const el = ev.target - const column = el.dataset.column - const seq = el.dataset.seq - const dict = JSON.parse(el.dataset.dict) - - const overlay = _elWithClass('div', 'full-overlay') - overlay.id = 'overlay' - const modal = _elWithClass('div', 'cell-dict-modal') - const closeButton = _elWithClass('div', 'close-button') - closeButton.textContent = 'x' - closeButton.id = 'modal-close' - const heading = _elWithAttrs('h3') - heading.textContent = `Seq Num: ${seq} - ${column}` - modal.appendChild(closeButton) - modal.appendChild(heading) - - const table = _elWithClass('table', 'cell-dict') - for (const [k, v] of Object.entries(dict)) { - const tRow = _elWithAttrs('tr') - const head = _elWithAttrs('th', { class: 'key', text: k }) - const datum = _elWithAttrs('td', { class: 'value', text: v }) - tRow.appendChild(head) - tRow.appendChild(datum) - table.appendChild(tRow) - } - modal.appendChild(table) - overlay.appendChild(modal) - document.querySelector('main').appendChild(overlay) - document.activeElement.blur() - overlay.addEventListener('click', (e) => { - if (e.target.id === 'overlay' || e.target.id === 'modal-close') { - modal.remove() - overlay.remove() - } - }) - document.body.addEventListener('keydown', (e) => { - if (e.key === 'Escape') { - modal.remove() - overlay.remove() - } - }) -} - -/** - * @param {{ [x: string]: string | number }} attributes - * @param {string} attrToCheck - */ -export function indicatorForAttr (attributes, attrToCheck) { - // indicators are in with the attributes. they share the name of the - // attribute they belong to, but begin with an underscore - const indicator = `_${attrToCheck}` - let flag = '' - // is there an indicator for this attribute? - if (Object.keys(attributes).includes(indicator)) { - // if so, get its value - flag = attributes[indicator] - } - return flag -} - -/** - * @param {string} attributeName - */ -export function removeColumnFromTableFor (attributeName) { - const cells = document.querySelectorAll('table .' + _escapeName(attributeName)) - Array.from(cells).forEach(cell => { cell.remove() }) -} - -export function drawTableColumnsAndRows (metaData, columns) { - Object.entries(metaData).forEach(([seq, attributes]) => { - const seqRow = _getById(`seqno-${seq}`) - if (seqRow) { - // ...and column - columns.forEach(attr => { - const seqRowLastCell = seqRow.querySelectorAll('td:last-child')[0] - const escapedName = _escapeName(attr) - // check for indicator attribute (i.e. starts with '_') - const flag = indicatorForAttr(attributes, attr) - const el = createTableCell(seq, attributes, attr, escapedName, flag) - seqRowLastCell.after(el) - }) - } - }) -} - -function clearLocalStorageOnNewVersion () { - const thisVersion = document.documentElement.dataset.version - if (!thisVersion) return - const storedVersion = window.localStorage.getItem('rubintv_version') - if (thisVersion !== storedVersion) { - localStorage.clear() - localStorage.setItem('rubintv_version', thisVersion) - } -} - -clearLocalStorageOnNewVersion() diff --git a/src/js/night-report/tabs-ui.js b/src/js/night-report/tabs-ui.js deleted file mode 100644 index 481349bd..00000000 --- a/src/js/night-report/tabs-ui.js +++ /dev/null @@ -1,78 +0,0 @@ -import { _getById } from '../modules/utils.js' - -export function addTabsListeners () { - const tabs = Array.from(document.querySelectorAll('.tab-title:not(.disabled)')) - if (tabs.length === 0) return - - const tabsContent = document.querySelectorAll('.tab-content:not(.disabled)') - - let storedSelected = localStorage.getItem('night-report-selected') - if (!storedSelected || tabs.filter((t) => { return t.id.includes(storedSelected) }).length === 0) { - storedSelected = tabs[0].id.split('tabtitle-')[1] - localStorage.setItem('night-report-selected', storedSelected) - } - - const id = storedSelected.toLowerCase() - _getById(`tabtitle-${id}`).classList.add('selected') - _getById(`tabgroup-${id}`).classList.add('showing') - - tabs.forEach((tab) => { - tab.addEventListener('click', (e) => { - tabs.forEach((t) => { t.classList.remove('selected') }) - tabsContent.forEach((contentBox) => { - contentBox.classList.remove('showing') - }) - const clickedTab = e.target - // The following two lines ignore typing as lint complains - // that an EventTarget object doesn't have `classList` and `id` - // properties but the EventTarget returned here will always be - // an HTMLElement, which has both. - // @ts-ignore - clickedTab.classList.add('selected') - // @ts-ignore - const id = clickedTab.id.split('tabtitle-')[1] - _getById(`tabgroup-${id.toLowerCase()}`).classList.add('showing') - localStorage.setItem('night-report-selected', id) - }) - }) -} -addTabsListeners() - -export function listenForKeypresses () { - const keysAndTabs = { efficiency: 'text', elana: 'elana' } - let keyCodes = Object.keys(keysAndTabs) - let typed = '' - - document.body.addEventListener('keypress', keyPress) - - /** - * @param {{ key: string; }} e - */ - function keyPress (e) { - typed = typed.concat(e.key) - // has the whole key been typed out? - if (keyCodes.includes(typed)) { - // reveal the tab - console.log(`added ${typed}`) - const tabToReveal = keysAndTabs[typed] - document.querySelectorAll(`[id$="-${tabToReveal}"]`).forEach((el) => { - el.classList.remove('disabled') - addTabsListeners() - }) - // remove the key from the active array - keyCodes = keyCodes.filter(k => { return k !== typed }) - // remove the listener altogether if no more keys left - if (keyCodes.length === 0) { - document.body.removeEventListener('keypress', keyPress) - } - } - // check to see if any of the keys is being typed out - const isTypingAnyKey = keyCodes.map(k => { - return typed === k.substring(0, typed.length) - }) - if (isTypingAnyKey.reduce( - (acc, curr) => acc || curr, false) === false) { - typed = '' - } - } -} diff --git a/src/js/pages/admin.js b/src/js/pages/admin.js deleted file mode 100644 index 75f3f40b..00000000 --- a/src/js/pages/admin.js +++ /dev/null @@ -1,5 +0,0 @@ -import { listenForHistoricalReset } from '../modules/historical-reset.js' - -window.addEventListener('DOMContentLoaded', () => { - listenForHistoricalReset() -}) diff --git a/src/js/pages/allsky.js b/src/js/pages/allsky.js deleted file mode 100644 index 82821460..00000000 --- a/src/js/pages/allsky.js +++ /dev/null @@ -1,40 +0,0 @@ -import { getJson } from '../modules/utils.js' - -window.addEventListener('load', () => { - const urlPath = document.location.pathname - const currentImage = document.querySelector('.current-still') - const currentMovie = document.querySelector('.current-movie') - - setInterval(function refresh () { - const promise = getJson(urlPath + '/update/image') - promise.then(data => { - if (data.channel === 'image') { - currentImage.querySelector('img').setAttribute('src', data.url) - currentImage.querySelector('a').setAttribute('href', data.url) - currentImage.querySelector('.subheader h3').textContent = `${data.date} : Image ${data.seq}` - currentImage.querySelector('.desc').textContent = data.name - } - }).catch(e => { - console.log('Couldn\'t reach server') - }) - }, 5000) - - const videoCheckLatest = function () { - const video = currentMovie.querySelector('video') - const promise = getJson(urlPath + '/update/movie') - promise.then(data => { - const source = video.querySelector('source') - const currentMovieUrl = source.getAttribute('src') - if (data.channel === 'movie' && data.url !== currentMovieUrl) { - source.setAttribute('src', data.url) - currentMovie.querySelector('.movie-date').textContent = data.date - currentMovie.querySelector('.movie-number').textContent = data.seq - currentMovie.querySelector('.desc').textContent = data.name - video.load() - } - }).catch(e => { - console.log('Couldn\'t reach server') - }) - } - setInterval(videoCheckLatest, 5000) -}) diff --git a/src/js/pages/allsky_historical.js b/src/js/pages/allsky_historical.js deleted file mode 100644 index 5c070654..00000000 --- a/src/js/pages/allsky_historical.js +++ /dev/null @@ -1,5 +0,0 @@ -import { applyYearControls } from '../modules/calendar-controls.js' - -window.addEventListener('DOMContentLoaded', () => { - applyYearControls() -}) diff --git a/src/js/pages/auxtel.js b/src/js/pages/auxtel.js deleted file mode 100644 index f9eee30a..00000000 --- a/src/js/pages/auxtel.js +++ /dev/null @@ -1,37 +0,0 @@ -import { - parseJsonFromDOM, - _getById -} from '../modules/utils.js' -import { addToTable } from '../modules/draw-simple-table.js' -import { TableControls } from '../modules/table-control.js' -import { refreshTableLoop } from '../modules/table-refresher.js' - -window.addEventListener('load', function () { - const defaultHeadersAndDescs = parseJsonFromDOM('#metadata-headers') - const meta = parseJsonFromDOM('#table-metadata') - - const tableControls = new TableControls( - defaultHeadersAndDescs, - meta, - '#table-controls', - addToTable - ) - addToTable(meta, tableControls.selected, defaultHeadersAndDescs) - - refreshTableLoop(injectHTML, updateTableAndControls, 5) - - /** - * @param {{ per_day: string; table: string; }} htmlParts - */ - function injectHTML (htmlParts) { - _getById('per-day-refreshable').innerHTML = htmlParts.per_day - _getById('channel-day-data').innerHTML = htmlParts.table - } - - function updateTableAndControls (meta) { - tableControls.updateMetadata(meta) - tableControls.draw() - const selected = tableControls.selected - addToTable(meta, selected, defaultHeadersAndDescs) - } -}) diff --git a/src/js/pages/auxtel_historical.js b/src/js/pages/auxtel_historical.js deleted file mode 100644 index 5469602f..00000000 --- a/src/js/pages/auxtel_historical.js +++ /dev/null @@ -1,17 +0,0 @@ -import { TableControls } from '../modules/table-control.js' -import { parseJsonFromDOM } from '../modules/utils.js' -import { addToTable } from '../modules/draw-simple-table.js' -import { applyYearControls } from '../modules/calendar-controls.js' - -document.addEventListener('DOMContentLoaded', () => { - const defaultHeadersAndDescs = parseJsonFromDOM('#metadata-headers') - const meta = parseJsonFromDOM('#table-metadata') - const tableUI = new TableControls( - defaultHeadersAndDescs, - meta, - '.channel-grid-heading', - addToTable - ) - addToTable(meta, tableUI.selected, defaultHeadersAndDescs) - applyYearControls() -}) diff --git a/src/js/pages/night_report.js b/src/js/pages/night_report.js deleted file mode 100644 index 27594a9f..00000000 --- a/src/js/pages/night_report.js +++ /dev/null @@ -1,120 +0,0 @@ -import { _getById, getJson, _elWithClass, _elWithAttrs } from '../modules/utils.js' -import { addTabsListeners, listenForKeypresses } from '../night-report/tabs-ui.js' - -window.addEventListener('DOMContentLoaded', function () { - let prevReports = JSON.parse(_getById('reports-json').textContent) - - setInterval(updateEvents, 5000) - function updateEvents () { - const theDate = _getById('the-date').dataset.date - const url = window.location + '/update/' + theDate - getJson(url) - .then(success) - .catch((reason) => { - // suppress network errors - // console.warn(reason) - }) - } - - /** - * @param {{ plots: { [x: string]: any[]; }; text: string; }} newReports - */ - function success (newReports) { - // update plots - plots object will always exist - Object.keys(newReports.plots).forEach(group => { - // add new group to DOM if there's a new one - if (!Object.keys(prevReports.plots).includes(group)) { - addNewGroupGUI(group) - prevReports.plots[group] = {} - } - - // store previous plots for this group by url key - // and hash value - const prevPlots = {} - Object.keys(prevReports.plots[group]).forEach( - pName => { - const p = prevReports.plots[group][pName] - prevPlots[p.url] = p.hash - } - ) - const groupEl = _getById(`tabgroup-${group.toLowerCase()}`) - - Object.keys(newReports.plots[group]).forEach( - plotName => { - const plot = newReports.plots[group][plotName] - // is it a new image? - console.log(Object.keys(prevPlots).includes(plot.url)) - if (!Object.keys(prevPlots).includes(plot.url)) { - const newPlot = createNewPlot(plot) - groupEl.append(newPlot) - } - // is it a different version of a plot? - // prevReports = { url: hash... } - if (plot.hash !== prevPlots[plot.url]) { - const oldImg = document.querySelector(`img[src^="${plot.url}"]`) - const newImg = createNewImg(plot) - newImg.addEventListener('load', (e) => { - oldImg.replaceWith(newImg) - }) - } - } - ) - }) - // update text - if (newReports.text) { - if (!prevReports.text) { - addNewGroupGUI('Text') - } - const textEl = _getById('tabgroup-text') - const textClasses = textEl.classList.value - textEl.outerHTML = newReports.text - textEl.classList.value = textClasses - } - prevReports = newReports - addTabsListeners() - listenForKeypresses() - } - - /** - * @param {string} group - */ - function addNewGroupGUI (group) { - const newTab = _elWithAttrs('div', { - id: `tabtitle-${group.toLowerCase()}`, - class: 'tab-title' - }) - newTab.textContent = group - - const newGroup = _elWithAttrs('div', { - id: `tabgroup-${group.toLowerCase()}`, - class: 'tab-content plots-grid' - }) - - document.querySelector('.tab-titles').append(newTab) - document.querySelector('.plots').append(newGroup) - } - - /** - * @param {{ url: any; name: string; hash: string }} plot - */ - function createNewPlot (plot) { - const newPlot = _elWithClass('figure', 'plot') - const link = (_elWithAttrs('a', { href: plot.url })) - const img = createNewImg(plot) - const title = _elWithAttrs('figcaption') - title.textContent = plot.name - link.append(img) - newPlot.append(link, title) - return newPlot - } - - /** - * @param {{ url: string; hash: string; }} plot - */ - function createNewImg (plot) { - const newImg = document.createElement('img') - newImg.src = plot.url + '?t=' + plot.hash - newImg.classList.add('report-updated') - return newImg - } -}) diff --git a/src/js/pages/night_report_historical.js b/src/js/pages/night_report_historical.js deleted file mode 100644 index 9e810fe7..00000000 --- a/src/js/pages/night_report_historical.js +++ /dev/null @@ -1,6 +0,0 @@ -import { addTabsListeners, listenForKeypresses } from '../night-report/tabs-ui.js' - -window.addEventListener('DOMContentLoaded', () => { - addTabsListeners() - listenForKeypresses() -}) diff --git a/src/js/pages/startracker.js b/src/js/pages/startracker.js deleted file mode 100644 index 5277c0b9..00000000 --- a/src/js/pages/startracker.js +++ /dev/null @@ -1,25 +0,0 @@ -import { - parseJsonFromDOM, - _getById -} from '../modules/utils.js' -import { drawTable } from '../modules/draw-grouped-table.js' -import { refreshTableLoop } from '../modules/table-refresher.js' -import { TableControls } from '../modules/table-control-grouped.js' - -document.addEventListener('DOMContentLoaded', function () { - const headers = parseJsonFromDOM('#metadata-headers') - const meta = parseJsonFromDOM('#table-metadata') - - const tableUI = new TableControls(headers, meta, '#table-controls', drawTable) - drawTable(meta, tableUI.groupedSelected) - refreshTableLoop(starTrackerHtmlInject, updateTable, 5) - - function starTrackerHtmlInject (htmlParts) { - _getById('channel-day-data').innerHTML = htmlParts.table - } - - function updateTable (meta) { - tableUI.draw() - drawTable(meta, tableUI.groupedSelected) - } -}) diff --git a/src/js/pages/startracker_historical.js b/src/js/pages/startracker_historical.js deleted file mode 100644 index cefea296..00000000 --- a/src/js/pages/startracker_historical.js +++ /dev/null @@ -1,12 +0,0 @@ -import { parseJsonFromDOM } from '../modules/utils.js' -import { TableControls } from '../modules/table-control-grouped.js' -import { drawTable } from '../modules/draw-grouped-table.js' -import { applyYearControls } from '../modules/calendar-controls.js' - -window.addEventListener('DOMContentLoaded', () => { - const headers = parseJsonFromDOM('#metadata-headers') - const meta = parseJsonFromDOM('#table-metadata') - const tableControls = new TableControls(headers, meta, '.channel-grid-heading', drawTable) - drawTable(meta, tableControls.groupedSelected) - applyYearControls() -}) diff --git a/src/rubintv/__init__.py b/src/rubintv/__init__.py deleted file mode 100644 index 5dfac2cb..00000000 --- a/src/rubintv/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -"""The rubintv service.""" - -__all__ = ["__version__"] - -from importlib.metadata import PackageNotFoundError, version - -__version__: str -"""The application version string (PEP 440 / SemVer compatible).""" - -try: - __version__ = version(__name__) -except PackageNotFoundError: - # package is not installed - __version__ = "0.0.0" diff --git a/src/rubintv/app.py b/src/rubintv/app.py deleted file mode 100644 index cdb041aa..00000000 --- a/src/rubintv/app.py +++ /dev/null @@ -1,176 +0,0 @@ -"""The main application factory for the rubintv service.""" - -__all__ = ["create_app", "create_app_light"] - -import asyncio -import weakref -from pathlib import Path -from typing import AsyncGenerator - -import aiohttp_jinja2 -import jinja2 -from aiohttp import WSCloseCode, web, web_middlewares -from google.cloud import storage -from safir.http import init_http_session -from safir.logging import configure_logging -from safir.metadata import setup_metadata -from safir.middleware import bind_logger - -from rubintv import __version__ -from rubintv.background.heartbeats import poll_for_heartbeats -from rubintv.config import Configuration -from rubintv.handlers import init_external_routes, init_internal_routes -from rubintv.models.historicaldata import HistoricalData -from rubintv.models.models_init import ModelsInitator - -DATE_FOR_MINIMAL_LOAD = "2022-12-08" - - -def create_app(load_minimal_data: bool = False) -> web.Application: - """Create and configure the aiohttp.web application. - - Run via `tox -e run-app` - - Returns - ------- - `web.Application` - The web app. - """ - config = Configuration() - configure_logging( - profile=config.profile, - log_level=config.log_level, - name=config.logger_name, - ) - root_app = web.Application() - root_app["safir/config"] = config - - models = ModelsInitator() - root_app["rubintv/models"] = models - - client = storage.Client() - bucket_names = {loc.slug: loc.bucket for loc in models.locations.values()} - - for location_name, bucket_name in bucket_names.items(): - bucket = client.bucket(bucket_name) - root_app[f"rubintv/buckets/{location_name}"] = bucket - location = models.locations[location_name] - root_app[f"rubintv/cached_data/{location_name}"] = HistoricalData( - location, - bucket, - models.cameras, - load_minimal_data, - DATE_FOR_MINIMAL_LOAD, - ) - - root_app["rubintv/date_to_load"] = DATE_FOR_MINIMAL_LOAD - root_app["rubintv/site_title"] = "RubinTV Display" - setup_metadata(package_name="rubintv", app=root_app) - setup_middleware(root_app) - root_app.add_routes(init_internal_routes()) - root_app.cleanup_ctx.append(init_http_session) - root_app["rubintv/heartbeats"] = {} - root_app.cleanup_ctx.append(heartbeat_polling_init) - root_app.cleanup_ctx.append(websockets_handler) - - sub_app = web.Application() - aiohttp_jinja2.setup( - sub_app, - loader=jinja2.FileSystemLoader(Path(__file__).parent / "templates"), - ) - # Prevent tojson() filter from re-ordering keys - env = aiohttp_jinja2.get_env(sub_app) - env.policies["json.dumps_kwargs"] = {"sort_keys": False} - env.globals.update(version=__version__) - - setup_middleware(sub_app) - sub_app.add_routes(init_external_routes()) - sub_app.add_routes( - [ - web.static( - "/static", - Path(__file__).parent / "static", - name="static", - append_version=True, - ), - ] - ) - - root_app.add_subapp(f'/{root_app["safir/config"].name}', sub_app) - return root_app - - -def setup_middleware(app: web.Application) -> None: - """Add middleware to the application.""" - app.middlewares.append(bind_logger) - app.middlewares.append( - web_middlewares.normalize_path_middleware( - append_slash=False, remove_slash=True - ) - ) - - -def create_app_light() -> web.Application: - """Create an app that loads historical data for only a single date. - - The date is set in DATE_FOR_MINIMAL_LOAD as ``"YYYY-MM-DD"``. - Used as the app entry via ``tox -e run-light``. - - Returns - ------- - `web.Application` - The web app with only the single date's data to cache. - """ - return create_app(load_minimal_data=True) - - -async def heartbeat_polling_init(app: web.Application) -> AsyncGenerator: - """Initialise a loop for polling the heartbeats in the bucket. - - Uses the aiohttp cleanup contexts pattern. - - Parameters - ---------- - app : `web.Application` - The web app. - - Returns - ------- - `AsyncGenerator` - Set-up and tear down of polling for heartbeats - - See Also - -------- - aiohttp reference on `cleanup contexts`_. - .. _cleanup contexts: https://docs.aiohttp.org/en/stable/web_advanced.html#cleanup-context - """ - app["heartbeats_poller"] = asyncio.create_task(poll_for_heartbeats(app)) - yield - app["heartbeats_poller"].cancel() - await app["heartbeats_poller"] - - -async def websockets_handler(app: web.Application) -> AsyncGenerator: - """Initialise and gracefully close websockets. - - Uses the aiohttp cleanup contexts pattern. - - Parameters - ---------- - app : `web.Application` - The web app. - - Returns - ------- - `AsyncGenerator` - Set-up and tear down of websockets. - - See Also - -------- - aiohttp reference on `cleanup contexts`_. - .. _cleanup contexts: https://docs.aiohttp.org/en/stable/web_advanced.html#cleanup-context - """ - app["websockets"] = weakref.WeakSet() - yield - for ws in set(app["websockets"]): - await ws.close(code=WSCloseCode.GOING_AWAY, message="Server shutdown") diff --git a/src/rubintv/background/__init__.py b/src/rubintv/background/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/rubintv/background/heartbeats.py b/src/rubintv/background/heartbeats.py deleted file mode 100644 index e6db273a..00000000 --- a/src/rubintv/background/heartbeats.py +++ /dev/null @@ -1,130 +0,0 @@ -import asyncio -import json -import time -from typing import Any, Dict, List - -from aiohttp import web -from google.api_core.exceptions import NotFound -from google.cloud.storage.client import Bucket - -__all__ = [ - "poll_for_heartbeats", - "process_heartbeats", - "download_heartbeat_objects", -] - -HEARTBEATS_PREFIX = "heartbeats" - - -async def poll_for_heartbeats(app: web.Application) -> None: - """Asynchronous loop that polls the buckets for heartbeat files. - - Called from within a set-up/tear-down function during the app's - initialisation. - - Parameters - ---------- - app : `web.Application` - The web app. - """ - try: - while True: - for location in app["rubintv/models"].locations: - # just use summit bucket to start - bucket = app[f"rubintv/buckets/{location}"] - heartbeats_json_arr = download_heartbeat_objects( - bucket, HEARTBEATS_PREFIX - ) - heartbeats = process_heartbeats(heartbeats_json_arr) - app["rubintv/heartbeats"][location] = heartbeats - await asyncio.sleep(30) - except asyncio.exceptions.CancelledError: - print("Polling for heartbeats cancelled") - - -def download_heartbeat_objects(bucket: Bucket, prefix: str) -> List[Dict]: - """Attempts to download heartbeat objects. - - Parameters - ---------- - bucket : `Bucket` - The given bucket - prefix : `str` - The prefix for a particular heartbeat file. - - Returns - ------- - raw_heartbeats : `List` [`Dict`] - A list of heartbeat dicts. - - See Also - -------- - `process_heartbeats()` for details - """ - hb_blobs = list(bucket.list_blobs(prefix=prefix)) - heartbeat_objs = [] - for hb_blob in hb_blobs: - try: - the_blob = bucket.blob(hb_blob.name) - blob_content = the_blob.download_as_bytes() - except NotFound: - blob_content = None - print(f"Error: {hb_blob.name} not found.") - if not blob_content: - continue - else: - hb = json.loads(blob_content) - hb["url"] = hb_blob.name - heartbeat_objs.append(hb) - return heartbeat_objs - - -def process_heartbeats( - heartbeat_objs: List[Dict[str, Any]] -) -> Dict[str, Dict[str, Any]]: - """Takes a list of heartbeat dicts and returns a dict of simplified - dicts keyed by channel/service name that include a boolean for the - current status of the heartbeat. - - Parameters - ---------- - heartbeats_json_list : `List` [`Dict` [`str`, `Any`]] - A list of heartbeat dicts as they are as json files in the bucket - - Returns - ------- - heartbeats : `Dict` [`str`, `Dict` [`str`, `Any`]] - A dictionary of simplified heartbeat dicts keyed by channel/service name - - Examples - -------- - input: - `` - { - 'channel': 'allsky', - 'currTime': 1675779822, - 'nextExpected': 1675780422, - 'errors': {}, - 'url': 'heartbeats/allsky.json' - } - `` - outputs: - `` - { - 'allsky': { - 'active': True, - 'next': 1675780422, - 'curr': 1675779822 - } - } - `` - """ - heartbeats = {} - t = time.time() - for hb in heartbeat_objs: - channel = hb["channel"] - next = hb["nextExpected"] - curr = hb["currTime"] - active = next > t - heartbeats[channel] = {"active": active, "next": next, "curr": curr} - return heartbeats diff --git a/src/rubintv/cli.py b/src/rubintv/cli.py deleted file mode 100644 index 92999f27..00000000 --- a/src/rubintv/cli.py +++ /dev/null @@ -1,55 +0,0 @@ -"""Administrative command-line interface.""" - -__all__ = ["main", "help", "run"] - -from typing import Any, Union - -import click -from aiohttp.web import run_app - -from rubintv.app import create_app - -# Add -h as a help shortcut option -CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) - - -@click.group(context_settings=CONTEXT_SETTINGS) -@click.version_option(message="%(version)s") -@click.pass_context -def main(ctx: click.Context) -> None: - """rubintv - - Administrative command-line interface for rubintv. - """ - # Subcommands should use the click.pass_obj decorator to get this - # ctx object as the first argument. - ctx.obj = {} - - -@main.command() -@click.argument("topic", default=None, required=False, nargs=1) -@click.pass_context -def help(ctx: click.Context, topic: Union[None, str], **kw: Any) -> None: - """Show help for any command.""" - # The help command implementation is taken from - # https://www.burgundywall.com/post/having-click-help-subcommand - if topic: - if topic in main.commands: - ctx.info_name = topic - click.echo(main.commands[topic].get_help(ctx)) - else: - raise click.UsageError(f"Unknown help topic {topic}", ctx) - else: - assert ctx.parent - click.echo(ctx.parent.get_help()) - - -@main.command() -@click.option( - "--port", default=8080, type=int, help="Port to run the application on." -) -@click.pass_context -def run(ctx: click.Context, port: int) -> None: - """Run the application (for production).""" - app = create_app() - run_app(app, port=port) diff --git a/src/rubintv/config.py b/src/rubintv/config.py deleted file mode 100644 index 9daae298..00000000 --- a/src/rubintv/config.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Configuration definition.""" - -__all__ = ["Configuration"] - -import os -from dataclasses import dataclass - - -@dataclass -class Configuration: - """Configuration for rubintv.""" - - name: str = os.getenv("SAFIR_NAME", "rubintv") - """The application's name, which doubles as the root HTTP endpoint path. - - Set with the ``SAFIR_NAME`` environment variable. - """ - - profile: str = os.getenv("SAFIR_PROFILE", "development") - """Application run profile: "development" or "production". - - Set with the ``SAFIR_PROFILE`` environment variable. - """ - - logger_name: str = os.getenv("SAFIR_LOGGER", "rubintv") - """The root name of the application's logger. - - Set with the ``SAFIR_LOGGER`` environment variable. - """ - - log_level: str = os.getenv("SAFIR_LOG_LEVEL", "INFO") - """The log level of the application's logger. - - Set with the ``SAFIR_LOG_LEVEL`` environment variable. - """ - - bucket_name: str = os.getenv("RUBINTV_BUCKET_NAME", "rubintv_data") - """The bucket name from which to retrieve data. - - Set with the ``RUBINTV_BUCKET_NAME`` environment variable. - """ diff --git a/src/rubintv/handlers/__init__.py b/src/rubintv/handlers/__init__.py deleted file mode 100644 index f16fe007..00000000 --- a/src/rubintv/handlers/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -"""HTTP API route tables.""" - -__all__ = [ - "internal_routes", - "routes", - "init_internal_routes", - "init_external_routes", -] - -from aiohttp import web - -internal_routes = web.RouteTableDef() -"""Routes for the root application that serves from ``/`` - -Application-specific routes don't get attached here. In practice, only routes -for metrics and health checks get attached to this table. Attach public APIs -to `routes` instead since those are accessible from the public API gateway and -are prefixed with the application name. -""" - -routes = web.RouteTableDef() -"""Routes for the public API that serves from ``//``.""" - - -def init_external_routes() -> web.RouteTableDef: - """Initialize the route table and handlers from the application APIs, - served at ``//``. - """ - # Import handlers so that they are registered with the routes table via - # decorators. This isn't a global import to avoid circular dependencies. - import rubintv.handlers.external # noqa: F401 - - return routes - - -def init_internal_routes() -> web.RouteTableDef: - """Initialize the route table and handlers for the root APIs (not the - ones publicly available). - """ - # Import handlers so that they are registered with the routes table via - # decorators. This isn't a global import to avoid circular dependencies. - import rubintv.handlers.internal # noqa: F401 - - return internal_routes diff --git a/src/rubintv/handlers/external/__init__.py b/src/rubintv/handlers/external/__init__.py deleted file mode 100644 index 530fd9b9..00000000 --- a/src/rubintv/handlers/external/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -"""Externally-accessible endpoint handlers that serve relative to -``//``. -""" - -__all__ = [ - "get_page", - "get_admin_page", - "reload_historical", - "request_heartbeat_for_channel", - "request_all_heartbeats", - "get_all_sky_current", - "get_all_sky_current_update", - "get_allsky_historical", - "get_allsky_historical_movie", - "get_recent_table", - "update_todays_table", - "get_historical", - "get_historical_day_data", - "events", - "current", -] - -from rubintv.handlers.external.endpoints import ( - current, - events, - get_recent_table, -) diff --git a/src/rubintv/handlers/external/endpoints_helpers.py b/src/rubintv/handlers/external/endpoints_helpers.py deleted file mode 100644 index 787ee6ed..00000000 --- a/src/rubintv/handlers/external/endpoints_helpers.py +++ /dev/null @@ -1,747 +0,0 @@ -import json -import re -from calendar import Calendar -from datetime import date -from typing import Any, Dict, List, Optional, Tuple - -from aiohttp import web -from google.api_core.exceptions import NotFound -from google.cloud.storage.client import Blob, Bucket - -from rubintv.models.historicaldata import HistoricalData, get_current_day_obs -from rubintv.models.models import ( - Camera, - Channel, - Event, - Location, - Night_Report_Event, -) -from rubintv.models.models_helpers import get_prefix_from_date - -__all__ = [ - "get_image_viewer_link", - "get_event_page_link", - "date_from_url_part", - "find_location", - "get_per_day_channels", - "get_channel_resource_url", - "get_metadata_json", - "month_names", - "calendar_factory", - "make_table_rows_from_columns_by_seq", - "get_most_recent_day_events", - "get_sorted_events_from_blobs", - "get_events_for_prefix_and_date", - "get_current_event", - "get_heartbeats", - "build_title", - "get_nights_report_link_type", - "get_night_report_events", - "download_sort_night_report_events", -] - - -def _list_blobs(bucket: Bucket, prefix: str) -> List[Blob]: - blobs = list(bucket.list_blobs(prefix=prefix)) - return blobs - - -def date_from_hyphenated_string(date_str: str) -> date: - """Return a date from a date string. - - Parameters - ---------- - date_str : str - A string in the form ``"YYYY-MM-DD"``. - - Returns - ------- - date - A date object. - """ - year, month, day = [int(s) for s in date_str.split("-")] - the_date = date(year, month, day) - return the_date - - -def date_from_url_part(url_part: str) -> date: - """Return a date from a given string url segment. - - The url part must be a valid date in the form ``"YYYY-MM-DD"`` or an - HTTPNotFound error will be thrown. - - Parameters - ---------- - url_part : `str` - A valid date in the form ``"YYYY-MM-DD"``. - - Returns - ------- - the_date : `date` - A date object. - - Raises - ------ - web.HTTPNotFound - The error 404 as the app response. - """ - try: - the_date = date_from_hyphenated_string(url_part) - except ValueError: - raise web.HTTPNotFound() - return the_date - - -def find_location(location_name: str, request: web.Request) -> Location: - """Either returns a `Location` matching the given name or throws a 404 Not - Found. - - - Parameters - ---------- - location_name : `str` - The slug of the `Location`. - request : `web.Request` - The app's web request for looking up the location. - - Returns - ------- - Location - The location information object relating the the given name. - - Raises - ------ - web.HTTPNotFound - 404 Error to be caught by the app. - """ - location_name = request.match_info["location"] - locations = request.config_dict["rubintv/models"].locations - try: - location: Location = locations[location_name] - except KeyError: - raise web.HTTPNotFound() - return location - - -def get_per_day_channels( - bucket: Bucket, camera: Camera, the_date: date -) -> Dict[str, str]: - """Builds a dict of per-day channels to display - - Takes a bucket, camera and a given date and returns a dict of per-day - channels to be iterated over in the view. - If there is nothing available for those channels, an empty dict is returned. - - Parameters - ---------- - bucket : `Bucket` - The app-wide Bucket instance - - camera : `Camera` - The given Camera object - - the_date : `date` - The datetime.date object for the given day - - Returns - ------- - per_day_channels : `dict[str, str]` - The list of events, per channel - - """ - per_day_channels = {} - for channel in camera.per_day_channels.keys(): - if resource_url := get_channel_resource_url( - bucket, camera.per_day_channels[channel], the_date - ): - per_day_channels[channel] = resource_url - return per_day_channels - - -def get_channel_resource_url( - bucket: Bucket, channel: Channel, a_date: date -) -> str: - """Returns the url of a file in the bucket given a channel and date. - - As this returns only the url for the first from a potential list of blobs, - it's only intended to be used when one blob is expected for the given - channel and date, like a day's movie. - - Parameters - ---------- - bucket : `Bucket` - The given GCS bucket. - channel : `Channel` - The given channel. - a_date : `date` - The given date. - - Returns - ------- - url : `str` - The public url of the first blob for the given channel and date. - """ - date_str = a_date.strftime("%Y%m%d") - prefix = f"{channel.prefix}/dayObs_{date_str}" - url = "" - if blobs := _list_blobs(bucket, prefix): - url = blobs[0].public_url - return url - - -def get_metadata_json(bucket: Bucket, camera: Camera, a_date: date) -> Dict: - """Returns the metadata json for a given camera and date as a `Dict`. - - Parameters - ---------- - bucket : `Bucket` - The given GCS bucket. - camera : `Camera` - The given camera. - a_date : `date` - The given date. - - Returns - ------- - json_dict : `Dict` - A dict version of the json metadata. - """ - date_str = date_str_without_hyphens(a_date) - blob_name = f"{camera.metadata_slug}_metadata/dayObs_{date_str}.json" - metadata_json = "{}" - if blob := bucket.get_blob(blob_name): - metadata_json = blob.download_as_bytes() - return json.loads(metadata_json) - - -def month_names() -> List[str]: - """Returns a list of month names as words. - - Returns - ------- - List[str] - A list of month names. - """ - return [date(2000, m, 1).strftime("%B") for m in list(range(1, 13))] - - -def calendar_factory() -> Calendar: - # first weekday 0 is Monday - calendar = Calendar(firstweekday=0) - return calendar - - -def make_table_rows_from_columns_by_seq( - events_dict: Dict[str, List[Event]], metadata: Dict[str, Dict[str, str]] -) -> Dict[int, Dict[str, Event]]: - """Returns a dict of dicts of `Events`, keyed outwardly by sequence number - and inwardly by channel name for displaying as a table. - - If a sequence number appears in the given metadata that is not otherwise - in the given `events_dict` it is appended as the key for an empty dict. - This is so that if metadata exists, a row can be drawn on the table without - there needing to be anything in the channels. - - Parameters - ---------- - events_dict : `Dict` [`str`, `List` [`Event`]] - Dictionary of `Lists` of `Event`s keyed by `Channel` name. - - metadata : `Dict` [`str`, `Dict` [`str`, `str`]] - Dictionary of metadata outer keyed by sequence number and the inner by - table column name. - - Returns - ------- - rows_dict : `Dict` [`int`, `Dict` [`str`, `Event`]] - A dict that represents a table of `Event`s, keyed by ``seq`` and with - an inner dict with an entry for each `Channel` for that seq num. - - """ - d: Dict[int, Dict[str, Event]] = {} - for chan in events_dict: - chan_events = events_dict[chan] - for e in chan_events: - if e.seq in d: - d[e.seq].update({chan: e}) - else: - d.update({e.seq: {chan: e}}) - # add an empty row for sequence numbers found only in metadata - for seq_str in metadata: - try: - seq = int(seq_str) - if seq not in d: - d[seq] = {} - except ValueError: - print("Warning: Non-integer seq num ignored") - # d == {seq: {chan1: event, chan2: event, ... }} - # make sure the table is in order - rows_dict = {k: v for k, v in sorted(d.items(), reverse=True)} - return rows_dict - - -def get_most_recent_day_events( - bucket: Bucket, camera: Camera, historical: HistoricalData -) -> tuple[date, dict[int, dict[str, Event]]]: - """Returns a tuple of the date and an dict of `Events` for which there are - entries in the bucket. - - The method looks for events and metadata in the bucket for the current day obs. - If nothing is found, the most recent day is retrieved from the historical store. - The resulting events are packed into a dict that are convenient for displaying - on a table. - - Parameters - ---------- - bucket : `Bucket` - The given GCS bucket. - camera : `Camera` - The given camera. - historical : `HistoricalData` - The in-memory store of all the events in the bucket since the last time - the day rolled over or the store was reloaded. - - Returns - ------- - the_date_and_events : `tuple` [`date`, `Dict` [`int`, `Dict` [`str`, `Event`]]] - A tuple of both the date and the events from that date. - """ - obs_date = get_current_day_obs() - metadata = get_metadata_json(bucket, camera, obs_date) - events = {} - for channel in camera.channels: - prefix = camera.channels[channel].prefix - events_found = get_events_for_prefix_and_date(prefix, obs_date, bucket) - if events_found: - events[channel] = events_found - the_date = obs_date - if not events: - the_date = obs_date - if not metadata: - the_date = historical.get_most_recent_day(camera) - events = historical.get_events_for_date(camera, the_date) - metadata = get_metadata_json(bucket, camera, the_date) - - the_date_events = make_table_rows_from_columns_by_seq(events, metadata) - return (the_date, the_date_events) - - -def get_sorted_events_from_blobs(blobs: List) -> List[Event]: - """Returns a list of events cast and sorted from a given list of blobs. - - Bobs that have filename extensions not included in ``[".png", ".jpg", - ".mp4"]`` are filtered out. - - Parameters - ---------- - blobs : `List` - The given list of blobs. - - Returns - ------- - s_events : `List` [`Event`] - A list of `Event`s sorted by date and then sequence number. - """ - events = [ - Event(el.public_url) - for el in blobs - if el.public_url.endswith(".png") - or el.public_url.endswith(".jpg") - or el.public_url.endswith(".mp4") - ] - s_events = sorted(events, key=lambda x: (x.obs_date, x.seq), reverse=True) - return s_events - - -def get_events_for_prefix_and_date( - prefix: str, - the_date: date, - bucket: Bucket, -) -> List[Event]: - """Returns a sorted list of blobs from the GCS bucket for a given prefix and - date. - - Parameters - ---------- - prefix : `str` - The lookup prefix for the GCS bucket. - the_date : `date` - The given date used in the lookup. - bucket : `Bucket` - The GCS bucket in which to look. - - Returns - ------- - events : `List` [`Event`] - A sorted list of events. - """ - new_prefix = get_prefix_from_date(prefix, the_date) - events = [] - blobs = _list_blobs(bucket, new_prefix) - if blobs: - events = get_sorted_events_from_blobs(blobs) - return events - - -def get_current_event( - camera: Camera, - channel: Channel, - bucket: Bucket, - historical: HistoricalData, -) -> Event: - """Returns the most recent event for a given camera and channel. - - If nothing is found in the bucket for the current day obs then the most - recent event is retrieved from the in-memory store of events. - - Parameters - ---------- - camera : `Camera` - The given camera. - channel : `Channel` - The given channel. - bucket : `Bucket` - The given GCS bucket. - historical : `HistoricalData` - The store of historical data. - - Returns - ------- - latest : `Event` - A single event. - """ - day_obs = get_current_day_obs() - events = get_events_for_prefix_and_date(channel.prefix, day_obs, bucket) - if events: - latest = events[0] - else: - latest = historical.get_most_recent_event(camera, channel) - return latest - - -def get_heartbeats(bucket: Bucket, prefix: str) -> List[Dict]: - """Returns the data from heartbeat files in the bucket located by prefix. - - A heartbeat json file contains status data about a particular `Channel` or - service. - - Parameters - ---------- - bucket : `Bucket` - The given GCS bucket. - prefix : `str` - The prefix used to lookup the metadata file(s). - - Returns - ------- - heartbeats : `List` [`Dict`] - A list of heartbeat dicts. - """ - hb_blobs = _list_blobs(bucket, prefix) - heartbeats = [] - for hb_blob in hb_blobs: - blob_content = None - try: - the_blob = bucket.blob(hb_blob.name) - blob_content = the_blob.download_as_bytes() - except NotFound: - print(f"Error: {hb_blob.name} not found.") - if not blob_content: - continue - else: - hb = json.loads(blob_content) - hb["url"] = hb_blob.name - heartbeats.append(hb) - return heartbeats - - -def build_title(*title_parts: str, request: web.Request) -> str: - """Returns a string for using as page title. - - Parameters - ---------- - *title_parts: `str` - A variable number of strings to be added to the root title. - request : `web.Request` - The request object that allows access to the app's ``"site_title"`` - global. - - Returns - ------- - title : `str` - The page title. - """ - title = request.config_dict["rubintv/site_title"] - to_append = " - ".join(title_parts) - if to_append: - title += " - " + to_append - return title - - -def date_str_without_hyphens(a_date: date) -> str: - return str(a_date).replace("-", "") - - -def get_image_viewer_link(camera: Camera, day_obs: date, seq_num: int) -> str: - """Returns the url for the camera's external image viewer for a given date - and seq num. - - Used in the template. - - Parameters - ---------- - camera : `Camera` - The given camera. - day_obs : `date` - The given date. - seq_num : `int` - The given seq num. - - Returns - ------- - url : `str` - The url for the image viewer for a single image. - """ - date_int_str = date_str_without_hyphens(day_obs) - url = camera.image_viewer_link.format( - day_obs=date_int_str, seq_num=seq_num - ) - return url - - -def get_event_page_link( - location: Location, - camera: Camera, - channel: Channel, - event: Event, -) -> str: - return ( - f"{location.slug}/{camera.slug}/{channel.slug}/event/" - f"{event.clean_date()}/{event.seq}" - ) - - -def get_nights_report_link_type( - camera: Camera, historical: HistoricalData, the_date: date -) -> str: - """Returns a string that indicates, if a given camera has a night report, - whether it should be a current (updating) report or historical one. - - An empty string indicates there should be no link displayed. - Used by the template to provide the correct link to the night report page. - - Parameters - ---------- - camera : `Camera` - The given camera. - historical : `HistoricalData` - The cache of historical data. - the_date : `date` - The given date. - - Returns - ------- - night_report_link : `str` - Either ``"current"``, ``"historic"`` or an empty string for no link. - """ - if not camera.night_report_prefix: - return "" - night_report_link = "" - if the_date == get_current_day_obs(): - night_report_link = "current" - elif historical.get_night_reports_for(camera, the_date): - night_report_link = "historic" - return night_report_link - - -def download_sort_night_report_events( - bucket: Bucket, reports_list: List[Night_Report_Event] -) -> Tuple[Dict[str, List[Night_Report_Event]], Dict[str, Any]]: - """Downloads and returns a tuple of a dict of plots and a dict of sections - of text which together comprise a night report for a given list of - `Night_Report_Event`s. - - Only the text reports (as json files) are downloaded as the image plots are - passed as urls to the browser. - - The dict of plots is keyed by plot group and contains a list of - `Night_Report_Event`s for each group. - The dict of text is keyed by either ``"text"`` or ``"quantities"``, - respectively a list of lists of strings and a dict of strings. (See - `process_night_report_text_data()`) - - Parameters - ---------- - bucket : `Bucket` - The given bucket to download the events from. - reports_list : `List` [`Night_Report_Event`] - A list of `Night_Report_Event`s for a camera and date. - - Returns - ------- - `Tuple` [`Dict` [`str`, `List` [`Night_Report_Event`]], `Dict` [`str`, - `Any`]] - A tuple of plots as `Night_Report_Event`s and a dict of grouped text. - """ - plots: Dict[str, List[Night_Report_Event]] = {} - json_data = {} - for r in reports_list: - if r.file_ext == "json": - blob = bucket.blob(r.blobname) - json_raw_data = json.loads(blob.download_as_bytes()) - json_data = process_night_report_text_data(json_raw_data) - else: - if r.group in plots: - plots[r.group].append(r) - else: - plots[r.group] = [r] - return plots, json_data - - -def get_night_report_events( - bucket: Bucket, camera: Camera, day_obs: date -) -> Optional[Tuple[Dict[str, List[Night_Report_Event]], Dict[str, str]]]: - """Downloads and returns a tuple of a dict of plots and a dict of sections - of text which together comprise a night report for a given camera and - day_obs, or None if there are none found in the bucket. - - See `download_sort_night_report_events()` for details. - - Parameters - ---------- - bucket : `Bucket` - The given GCS bucket to scrape and download from. - camera : `Camera` - The given camera. - day_obs : `date` - The given date - - Returns - ------- - night_report : `Optional` [`Tuple` [`Dict` [`str`, `List`[ - `Night_Report_Event`]], `Dict` [`str`, `str`]]] - Either None if there are no night report events for the date in the - bucket or a tuple of plots as `Night_Report_Event`s and a dict of - grouped text. - """ - prefix = camera.night_report_prefix - blobs = get_night_reports_blobs(bucket, prefix, day_obs) - if not blobs: - return None - reports_list = [ - Night_Report_Event( - blob.public_url, - prefix, - blob.md5_hash, - blobname=blob.name, - ) - for blob in blobs - ] - return download_sort_night_report_events(bucket, reports_list) - - -def get_night_reports_blobs( - bucket: Bucket, prefix: str, day_obs: date -) -> List[Blob]: - """Scrapes and returns the given bucket for night report blobs for the - given date. - - Parameters - ---------- - bucket : `Bucket` - The given GCS bucket. - prefix : `str` - The prefix to search for blobs with. - day_obs : `date` - The given date for the search. - - Returns - ------- - blobs : `List` [`Blob`] - A list of night report blobs. - """ - date_str = date_str_without_hyphens(day_obs) - prefix_with_date = "/".join([prefix, date_str]) - blobs = _list_blobs(bucket, prefix_with_date) - return blobs - - -def _spaces_to_nbsps(match: re.Match) -> str: - """Returns a string comprising an HTML non-breaking space character for the - length of `re.Match`. - - Parameters - ---------- - match : `re.Match` - The regex Match object. - - Returns - ------- - result : `str` - A string comprising an HTML non-breaking space character for the length - of `re.Match` - """ - length = match.end() - match.start() - result = " " * length - return result - - -def _crs_to_brs(match: re.Match) -> str: - """Returns a string with an HTML break (newline) tag for each matched char - in the given `re.Match` object. - - Parameters - ---------- - match : `re.Match` - The regex Match object. - - Returns - ------- - result : `str` - A string with an HTML break (newline) tag for each matched char in the - given `re.Match` object. - """ - length = match.end() - match.start() - result = "
" * length - return result - - -def process_night_report_text_data( - raw_data: Dict, -) -> Dict[str, Any]: - """Returns text processed from json strings to strings of formatted HTML. - - - The ``"multiline"`` part is a list of lists of strings. The inner list - represents lines of text and the outer lists are groups of those lines for - displaying in a single box. Spacing is kept intact to view on the page by - substituting spaces for the HTML non-breaking space character. - Double-spaced lines are replaced with HTML break tags. - - - The ``"quantities"` part is a dict of strings that are displayed ``"{key} - : {value}"``. - - - Parameters - ---------- - raw_data : `Dict` - The json object of keys as loaded into a dict. - - Returns - ------- - text_data : `Dict` [`str`, `Any`] - A dict of the two constiuent text parts to output to the page in the - template. - """ - multiline_part = [ - v for k, v in sorted(raw_data.items()) if k.startswith("text_") - ] - # match for two or more spaces - ptrn = re.compile("[ ]{2,}") - nb_text = [ptrn.sub(_spaces_to_nbsps, line) for line in multiline_part] - # match for two newlines - nb_br_text = [re.sub("\n\n", _crs_to_brs, line) for line in nb_text] - multiline = [line.split("\n") for line in nb_br_text] - - quantities = {k: v for k, v in raw_data.items() if v not in multiline_part} - - return {"multiline": multiline, "quantities": quantities} diff --git a/src/rubintv/handlers/internal/__init__.py b/src/rubintv/handlers/internal/__init__.py deleted file mode 100644 index 875e60e1..00000000 --- a/src/rubintv/handlers/internal/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Internal HTTP handlers that serve relative to the root path, ``/``. - -These handlers aren't externally visible since the app is available at a path, -``/rubintv``. See `rubintv.handlers.external` for -the external endpoint handlers. -""" - -__all__ = ["get_index"] - -from rubintv.handlers.internal.index import get_index diff --git a/src/rubintv/handlers/internal/index.py b/src/rubintv/handlers/internal/index.py deleted file mode 100644 index 55f2afd4..00000000 --- a/src/rubintv/handlers/internal/index.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Handlers for the app's root, ``/``.""" - -__all__ = ["get_index"] - -from aiohttp import web - -from rubintv.handlers import internal_routes - - -@internal_routes.get("/") -async def get_index(request: web.Request) -> web.Response: - """GET / (the app's internal root). - - By convention, this endpoint returns only the application's metadata. - """ - metadata = request.config_dict["safir/metadata"] - - return web.json_response(metadata) - - -@internal_routes.get("/health") -async def get_health(request: web.Request) -> web.Response: - return web.Response(text="OK", content_type="text/plain") diff --git a/src/rubintv/models/__init__.py b/src/rubintv/models/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/rubintv/models/models_helpers.py b/src/rubintv/models/models_helpers.py deleted file mode 100644 index eb12e3c6..00000000 --- a/src/rubintv/models/models_helpers.py +++ /dev/null @@ -1,43 +0,0 @@ -from datetime import date - -__all__ = ["get_prefix_from_date"] - - -def get_prefix_from_date(prefix: str, a_date: date) -> str: - """Returns a string prefix for searching in GCS buckets - for files belonging to a given channel and date. - - Parameters - ---------- - prefix : `str` - The prefix for a particular channel. - a_date : `date` - The given date to use to form the prefix. The date format is - `"YYYY-MM-DD"` as output by `datetime.date` on conversion to a `str`. - - Returns - ------- - new_prefix : `str` - The correctly formed prefix used for bucket lookup. - """ - prefix_dashes = prefix.replace("_", "-") - new_prefix = f"{prefix}/{prefix_dashes}_dayObs_{a_date}_seqNum_" - return new_prefix - - -def string_int_to_date(date_string: str) -> date: - """Returns a date object from a given date string in the - form ``"YYYYMMDD"``. - - Parameters - ---------- - date_string : `str` - A date string in the form ``"YYYYMMDD"``. - - Returns - ------- - `date` - A date. - """ - d = date_string - return date(int(d[0:4]), int(d[4:6]), int(d[6:8])) diff --git a/src/rubintv/models/models_init.py b/src/rubintv/models/models_init.py deleted file mode 100644 index 04bfde90..00000000 --- a/src/rubintv/models/models_init.py +++ /dev/null @@ -1,205 +0,0 @@ -from __future__ import annotations - -import inspect -from pathlib import Path -from typing import Any, Dict - -import yaml - -from .models import Camera, Channel, Location - - -class ModelsInitator: - """Oversee the loading and initialising of the various models used by the - app.""" - - def __init__(self) -> None: - models_file_path = Path(__file__).parent / "models_data.yml" - with open(models_file_path, "r") as file: - data = yaml.safe_load(file) - self._cameras = self._get_cameras(data) - self._locations = self._get_locations(data) - self._services = self._get_services(data) - self._metadata_headings_to_cameras(data) - - @property - def cameras(self) -> Dict[str, Camera]: - """Return a dictionary of `Camera` objects. - (`Dict` [`str`, `Camera`], read-only)""" - return self._cameras - - @property - def locations(self) -> Dict[str, Location]: - """Return a dictionary of `Location` objects. - (`Dict` [`str`, `Location`], read-only)""" - return self._locations - - @property - def services(self) -> Dict[str, Dict[str, str] | Dict[str, Channel]]: - """Return a dictionary of services. - (`Dict` [`str`, `Dict` [`str`, `str`] | `Dict` [`str`, `Channel`]], - read-only) - - See Also - -------- - _get_services() - """ - return self._services - - def _get_cameras(self, data: Dict) -> Dict[str, Camera]: - """Return a dictionary of `Camera` objects from the given yaml file data - dictionary. - - `Camera` objects include a dictionary of associated `Channel` objects. - - Parameters - ---------- - data : `Dict` - Contents of the models yaml file as a dict. - - Returns - ------- - cameras : `Dict` [`str`, `Camera`]` - Dictionary of Camera objects keyed by name. - """ - cameras = {} - d_cameras = data["Cameras"] - for cam_name, cam_dict in d_cameras.items(): - # makes Camera objects from dictionaries - cam = dataclass_from_dict(Camera, cam_dict) - cam.slug = cam_name - - # make dict of camera's channels into channel objects - chans = self._channel_dict_to_channel_objs(cam.channels) - cam.channels = chans - # do the same for the per day channels - per_day_chans = self._channel_dict_to_channel_objs( - cam.per_day_channels - ) - cam.per_day_channels = per_day_chans - - cameras[cam_name] = cam - return cameras - - def _channel_dict_to_channel_objs( - self, channels_dict: Dict - ) -> Dict[str, Channel]: - """Returns a dict of Channel objects keyed by name from a dict of channel. - parameters - - Parameters - ---------- - channels_dict : `Dict` - A dict of channel parameters as given in the model data yaml file. - - Returns - ------- - channels : `Dict` [`str`, `Channel`] - A dict of Channels keyed by name. - """ - channels = {} - for chan_name, chan_dict in channels_dict.items(): - channel = dataclass_from_dict(Channel, chan_dict) - # insert lowercase Channel name as 'slug' - channel.slug = chan_name - channels[chan_name] = channel - return channels - - def _get_locations(self, data: Dict) -> Dict[str, Location]: - """Returns a dictionary of Location objects from the given yaml file data - dictionary. - - Location objects include a dictionary of associated Cameras and Services. - - Parameters - ---------- - data : `Dict` - The contents of the models yaml file as a dict. - - Returns - ------- - locations: `Dict`[`str`, `Location`] - A dictionary of Location objects keyed by name. - """ - locations = {} - d_locations = data["Locations"] - for loc_name, loc in d_locations.items(): - location = dataclass_from_dict(Location, loc) - location.slug = loc_name - locations[loc_name] = location - return locations - - def _get_services( - self, data: Dict - ) -> Dict[str, Dict[str, str] | Dict[str, Channel]]: - """Returns a dictionary of services from the given yaml file data - dictionary. - - Parameters - ---------- - data : `Dict` - The contents of the models yaml file as a dict. - - Returns - ------- - services : `Dict` [`str`, `Dict` [`str`, `str`] | `Dict` [`str`, `Channel`]] - Services dict with keys: - ``"display_name"`` - Title to display for `Camera` or other group of services (`str`). - ``"channels"`` - Dict of `Camera` channels (`Dict` [`str`, `str`]). - ``"services"`` - Dict of services (`Dict` [`str`, `str`]). - The dict describes a heartbeat file and it's display name. - - - The key is a partial prefix used for finding the heartbeat file - in the bucket. - """ - services: Dict[str, Dict] = data["Services"] - for s in services: - if "channels" in services[s]: - # expand name of camera out into camera's channels - cam = services[s]["channels"] - chans: Dict[str, Channel] = self._cameras[cam].channels - services[s]["channels"] = chans - return services - - def _metadata_headings_to_cameras(self, data: Dict) -> None: - """Insert metadata column headings into `Camera`s. - - Parameters - ---------- - data : `Dict` - """ - headings: Dict = data["MetadataHeadings"] - for cam in headings: - if cam in self.cameras: - cam_headings = headings[cam] - self._cameras[cam].metadata_headers = cam_headings - return - - -def dataclass_from_dict(cls: Any, data: Dict) -> Any: - """Make a dataclass from a dict - - Parameters - ---------- - cls : `Any` - The target dataclass - data : `Dict` - The given dict - - Returns - ------- - cls : `Any` - """ - return cls( - **{ - key: ( - data[key] - if val.default == val.empty - else data.get(key, val.default) - ) - for key, val in inspect.signature(cls).parameters.items() - } - ) diff --git a/src/rubintv/static/images/allsky-cardinals.svg b/src/rubintv/static/images/allsky-cardinals.svg deleted file mode 100644 index 0a046d15..00000000 --- a/src/rubintv/static/images/allsky-cardinals.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/rubintv/static/images/crescent-moon.svg b/src/rubintv/static/images/crescent-moon.svg deleted file mode 100644 index 93870e56..00000000 --- a/src/rubintv/static/images/crescent-moon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/rubintv/static/images/favicon.png b/src/rubintv/static/images/favicon.png deleted file mode 100644 index b76aa02653d95e62704d920c2d725e54e3e2a8c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)EPS}K3V>asen)cDIs(aD!^9( z{_PLRR{?t!U^)mDEE@DC8ur$Sa}tCf8EKVhy)*On&CIhC?>#PUuP%<@3c}bGgxY@r z;`K|Ml5SW5kd*?+g2xlr-j{`26z`NyB;6p1RuVAjh6=z}08f&{Bvi`@?$+!*0uV5x zFN!pt`S_uR?|PSy>8AG|;=IWW@`>Hr>cO7AHE z^pW!q0OT^0FN>XAiWhmu65eT!XH1w|eD-CrS&}qhAvFv-mgOfIcrxW$+0rCvdvRC? zlz~oCiaKmCCdo7)x8?UefDgVbYI81ER%{8Z>2&NPbRYH@tTI4v*>HN!88C-wVZtWq zhMc8|mNYDf1o|G9gF)70W}ItKnVz``IA*cwm^dA02aAA`OKr)b#FHkKz8USgm{^Tm zrxIvigo5Q*qBVQuk<(GJ>BaZKm&JM(gnc-ZJY%EX8PT#<@fkQ7j_O$@-5{~QJd3$N zF*DLwX=BOWDM_YZMo@1lQZ;+(52lxZXc**^FN^Kb!}Bpz1~x3;jU8nOh;aSZjPS0k!t8q{=>}nRcPMW}CzLjDylN{l)C?6a zX~27_G0UctqA#k3$&SAG!s%EA(w%c$9XnflqT&BZ8&tYKxJ=H=e3X%-kBb4CD@Vfw z8#a{+*X~>qBXa`y4M#Q)Cu{D@sx}`hDN9nHlU$9Zs*C_GW8!ZZ8BG_L<6qnLlV9x$ eLhbS(0Q>@anT&HuL>Br00000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/rubintv/static/images/history-line.svg b/src/rubintv/static/images/history-line.svg deleted file mode 100644 index 2ba85203..00000000 --- a/src/rubintv/static/images/history-line.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/src/rubintv/static/images/logos/AURA_Logo.svg b/src/rubintv/static/images/logos/AURA_Logo.svg deleted file mode 100644 index e7594c8f..00000000 --- a/src/rubintv/static/images/logos/AURA_Logo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/rubintv/static/images/logos/Rubin_Logo.png b/src/rubintv/static/images/logos/Rubin_Logo.png deleted file mode 100644 index d08676b9c9d0e0d8cd7798331a2f928810f500f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84074 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 z 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

MbVbun^<17 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

Zj0Nv~d19@6#@*e+8pJ j)5699ROY{*(TdHkyM=6Oi$OGYFk+8Oe;5L{ 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

Kz5k|wlyt_yiH)3{H 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 Hu0mjf7^qwz diff --git a/src/rubintv/static/images/logos/Rubin_Logo_grey.jpg b/src/rubintv/static/images/logos/Rubin_Logo_grey.jpg deleted file mode 100644 index 4c9a844def62a580661ed79f747821efc779c36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37421 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 - - - - - - - - - - - - - - - - - - diff --git a/src/rubintv/static/images/logos/Summit.jpg b/src/rubintv/static/images/logos/Summit.jpg deleted file mode 100644 index 9a75263dbafb71da51707de18d13656af39d593b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39319 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 NjJ2`QqT{8{|Jf<3dZYjV diff --git a/src/rubintv/static/images/logos/cactus.svg b/src/rubintv/static/images/logos/cactus.svg deleted file mode 100644 index c729147f..00000000 --- a/src/rubintv/static/images/logos/cactus.svg +++ /dev/null @@ -1,50 +0,0 @@ - -image/svg+xml - - - - - - diff --git a/src/rubintv/static/images/logos/slac_lsstcam.png b/src/rubintv/static/images/logos/slac_lsstcam.png deleted file mode 100644 index 1f96a1279b7359854c30655d40be599e8cc32b0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295901 zcmeFa2|U!@`!GDVhzMCC%UD9P?_07jA+j$?V`eZ6!^|MbRw@#q5=A1~L@7ihArUFc z5|y2@w2+F(b7mOEq`Uj~|3B~ZKJWYayFc>%o@+VRxz2U2bDis)^SxuOb{jJ@@-jjo z5N1;o18WF`DiQpiVps=Cuse?(27hQhbuDxukit_;b1*va4uzXoTR z@C*SJ(S%d65}!H2b2Jq@ga(vTf&U;>ybwZ-;ECou)t2SwY$}N*9KeA}o=B?*aBfg3 z5T7}~^E)a{;xiOHPaaMsK5qq$VLy(7&@S?%RRez^)<_%@hJ||}u{bCU54ADZ)rane z;ZYbr7#gYzha=HQEDVpqLd{|B7~)e16oy4Y{Qwm@1d71;A)&!2ycZPjg@l^h*w{k# zVZMMwidYbg!J-l3I4By1^+e+EPz1^og$In`L>wqG2#JNd2cpn;s0XM5hQnhqei+{n z8K^ZT(9;X>Cve4~4kDo#4=4l^we$neaEz}% z8i_{|Spxz6(J)X7H0e)llRZ!oR3Ef6&>a9R-El~45JAl$Kv^~@UyNS}3ThLG4MK)M zZ9x~{;23`-p`H3(C^T|a`-pJB2R76HS9H$ppca1_!HkHX<`i%s^&fX)V3Kn)nsemovL1^OX?x!?&(!(n`h z3RJTF&VSX6D#eboOmNrmj z1E>X|MpJu&^+P^`UogHF|LP(zpoguzFnA2k3v`q@L4#Nf#uuuOhT(81I8`B^fV3PNy|Kws+=lBr4ZtkX!QT`t#4rduxGl}x`R5Ab5i>zAHc!87AB zj&*Vpkw1;1Dkx80dA>xogb!-FL``Z7RpKR@<>yn`EX#bHvo|h3yJxd5(b7O5IV3(n z@EqzDo;fs2&xG=IWY3HKlo_-|lfa1e;-2f{CvmFUP12*gYgW$TD{ zv@q8Ij!p(f7&tNqeEkWGAzBACz@sk`xRe9FXg{3BfgQp`3=Qy1D3%q55>fCzJA@rA ztf2Y?AEP28CnG1U%?O1;wXg^e4Qm6VC35h#L)Z(C_t%h>4Gs>L309QBU_E8!)z#Hy zLZ3k#OU0T&3I7*1ARMoxAuCa^%z+$CvOF+mCL@BD))r}5e{0o`fG-pI2V&7g13|!L!PMysL?-l>{F*B8M+dIz z^FSPuP(-9hBRph*a{o#3)`S^i6@$g0Krk9oyRk%^HESm{${)D#YnkR`_;vLTMCHJgpb zF0)wG0yJs9{i_&;2UhHMO(_6^EC}Y*q~#Q(71U*yT>=>KT40!KEC#7oSd0gVrwmYp zU`1P5Nkv&sS5Zk`Pgze{UtiZyO-V_?Ku%9dQCD3-Pv1~W_D_^6zJ$o!9_8srh?I1F zF@b(~ZMj84ic$)iRRU=n`nn?#2qa>SDv2I)(Qz%d1d9Q^;s-)!7|PEU;{e0@lWNpo z14L0Rh(mF}Giu8#$tW+0xl}@dXpKbJ5Mnms(tuRK>Ou+%8!s>xf^iC9RwCh(7g1s_ zGuK6U2jcLAVXGSu2wNuo6P$vNJ_e1!8e>7EYXYo^Xi?^Yz9cSxfKu=P1Smfkh~ig7 z(L)C!Nlg9(rsM)v4@(AS=m&F0uh9PnprBlqe3kMjN-1dq$)vT!!u&j!>oZvcL_uwj zat9>vWs>E03OpNsGzxEv@dGp9vN*q+#b2-}c$&a)1Vhy}f}wH9MH?g)QD9mD)AUEe z@nD%@jlsk4KwO!n!Sy@n&$M>_M3+qJPBKywgo1X(YAjF)u)svFX;EY_N_x;dbEL>{wP1fBHwNoqzeQ>#3TiSC1u>ZxY~V0p ztRRkD?2O+a6qIDWtp`JsThSU23R)`|7GwhOSQLEOoN&wivKEYjevP3>Y$A!rAK?^y zRt*tyxAQxIf^ww=OU{i{_3r=*N>e|u5+}Gh7}^#rCrNaa#S~OTTii`ZGyvxt2*v_% z-b)>|7KnnH)c+)s<#!4^vOaet46@%%!I5$vA|o-uU{MD_ZUu%W)w4E`qEg^jkotr~ zhLt^W(pUi#W^F?3Zi5UUt9EG;BmmGTZ8<3@kaFo|6)A}tASoy-OF_XuYa=d}uC8Qp z4E$L%;vBr<0#{~?Rd)DigcV7NoX8aAw6@}%$TUDCS+;Q-Uy#}&B*aKsUjsr>-EW=^ z*gJ`OO&A6JvR-zBVNC2abC9ZmVJWn>45c7n86(70%Nj#}sr-+0i-V5nXh7#KIjm*J zK@O#0LGZzP7(5>1t1Z7sMpi(PDzqR#_SmYk(+-32be_^hO$_ORp4IAYwuJ zt&SJTizu+yGA9d|C&8DH>iH)W3T_~J1i>Q?PadhQDx<(Bvr!N};!$9_Al14Sh=Q7I zQdsOBGLu^qMnP|Y^nx8+Hqxax3Y@hXzd9!R2Mh{cmLR8z1?ggQ4915P!js1;Yr-jb zteQoD-zKT+w{i+Pg6$BOnB+FPSU`dKo90#;NUH3gP$;>r5p0u3z$?sG{2dWa!H0Y< zL;Cs?b`n4;o+Qv8pcFg^I?(m=TnV373Mes`Lw{p5#vO(R?vGT}iZ5FM{gHYpkOPhU zotz9tLGR#&!XrrmkS@sLgC+N(V_5~Epdx5(MVqAhC`u`4mfiY_^2tM%KY=N@toUA1 zn+UPJwlZm|Uv{Faz!XfD{r}>WO)%{h4AQ*2dP4nwZ`NKd9dYh7Jm8N3dnb!i*GinT zs(7VAtEbx)?K^?(2uv`k^VZP+5&{LMRimGLc>NBbpj>pEZ;g<0v6zAi#5-V~2dNDZb%o%F3t+N*#2Qcv`c)%iS_qG z;+ExIDWJdvDJ3|-TTa}8eTb#7cQt^5j5rCc$|sSPP~fg%#;c>JKO<0ZB8vxgiK!cs zvHT98pwt8VV;t}2TN`$sD>62O5pTH}PT%10DXSaa)1;Wq<;CuxJteh|uOFn|{ z{{sdEueGXN9fte^1_iHG{%KX(Vhsod?OL_0o)iB8gM!zp+EzDaEf57YQSg<@NLEf+ zOhKiK2B%>VA-et`_ysOwWi(O%D9BdkAw6(@h;XW9IdEPBL_tg%u|(0<9?aw*3Ti71 z4o_GDk=CNC8TB?WaQbrn?wb!FKlA^(URR|OeR>8UL{#!p zN{ST%J3p|tRahdSD5j*cz#x$5MRB03kBpI|BO*|eIj*n;3LuF`UP?(}2~Ng=lpV1_ zz>tW|Aul7tCm!<906nwfockjj71<$7&;sGC2>F)#;+mhp zjCkZk1Gczt0ZtKutvs;Fy{dFYEJ`v^3t_hi>;h`T7vpts5)+)_^o4>!>WP#+APpy+ z_LGKV6$qyl7Yn`pk)Bde91K)MDD*=HL(v#GQR$?L$@o%MzV=1|NiAs9f2H*}j0c|J z<#Y)NTW#I{_|PFq?A3fIC124t+>5XqjL?=P5t0i2OcLyc^dl}zrRCJ671V6O88$g^ z%u#;vq#B725$n%PP~cDk!CwL^1vV&yLLoE|DoP3p>M(U_IfS~Jv=S1oB<+q=gi9-U z$iwB~NI5xmC3g~cGV(vyv1Cca?j;c}l~EG?Khc%{eMA2LxM3>E$djLkC3V67G1FAH zm6z90meY_^`tO=162yVZDynkQ>Pm26no26}z%*6lq}Ak*YD#h{s_F`GHB$5b$22wm z$7fQ`POE&TqMR-1IQW0pFcst#zYVHcs?uyDVX;n3(8eAUX;i2fR z_zj5B_ZA+#0&28)xu5n;L}?9%@|WB|beI3=oqSP6Cr(+C1gBmZ`+Qjo8j z5tg`vqYD3dNVO=~8l-F0K;|q+)8Kz1KN+7b;6@TS1cF#jkgGZ?>Z-~sDa+_vg9v_6fZwsm7!l6TY7kc| z|JKqLDFXc#ubiqb5VVl7oMmV$y zmZBtWQi3R(V@0_2K+IR&L?yeEX#bV>-+8PXGVyA-L zVPZR16;e{H9%>4zN-98BWp#N)^(E@n2$bZ+)>wfvqe${Bj*7gzii$d5q^O{(0%Gn( zbrbaQ8!9D3;xKh0AHi}YUrGt0Bwdk(JZ1A2S;$fU%y1>~|ToKq&|i!5yD91k*+1SC^6|J&+axmtQo1U3=~jJ|K-i zdcXqFcwy~-bMNz?L|$DXQJ237N01m7=yku|Ber?bi+eP7pg5iphUk7=9}zYbhZDHFVUlMuMx#V7&|Onvzy+rr_lO;riFoGU}hOerHJ70|sj!ILZUu z3n1=nuHcZ|^FJj82wTT%tA<1kuJI7Imj8Z> zd?FumoE24(*w_$K5#YijnBIx$fu+?9sDKjkJ1v1daR~qEm;{*^i+I2D(8C}?Rvi~u zeVSm2!*5u>Ga`Of1*As&y-;v6(O28qpODDd0h`tUOHvr&i!}y>E1-nqvxHsBH8SqM z;ZpF?CwvJ9xr&Q|sx9f09WsPW7=Z;D8U=&Jyq7ju&=K&K-Y9T@W>Fp?t12NAb&-+` zhk}||HwJ49zB=?@+9_U^e~AYf`{hgj8sH?L7Y2(1XNQ2Pf%}9j-GIabUrG9Qz;AeK zG9x6j022przzCeO`O58IeMQ73{w;wSp7U=ITmv3My-HSp@%$i8a!bVEy_qGzzrR4+UF`)e_R*cX#)n54nywH9YooX+2SV}*3321+3a-fxw$ku9;b z&{z%P_to%VBL)q_gWTeOA*JxI7o7h-ukf#y;$+E(f0s}o2>MUURnWo(ME+~YMAX}Vl2=*z-rrw&|C_vn`F|x(vsg1_O5v~eyX@|OL((ATJYi@X;>k5) zphaBhko?iwC`%)2v3|18Oc96CVk!8Dl{O=o<4GUH(q=ruIp70<=s-*jbZrk%jX$8j z#bNad^=R%U-I_;ST%PWFEj<^-f z*U&$2N8OX{`R+ge{lUlfWAKG1&)XJ`2QTQoee&!5=`^?5w#>W-AFen&c5txwk=p-7 z2g)(L13rYkzgNciwd`gF+QS}5ZQ8eAoZMulcChw7qkbGohaJN1*Jiz4c88OxsIdCi zU3-~)TD>fu?Po_$3{B!+P}`t2Q9>6axf(Y;&bClhvVHa@xF>9i?|4b&O!dt1%8zr! zVIMAh+B1`@KrOq#P)a{Iv=coPbC%6tq-s7`%Kz*80LV{4@e@brH@3^la(C-x`Flzr zT!-94c3i8hv}G(h$GFKta5lfEKvtTw^{AIxYoXtfXU)>Dzds!HDF41a!t?R|>QUbF z6Frq<+)}nro#i-+-5Ul(8EOKr?3HwiJvYEyO8xoj4CD>;-3u{cHZNU4r(3~$;=^C< zJcXzTqvrbhZNOo|P4bIR*_n|kEy1f#hx!jlu=4eX?#y}VA~hV^IMk~nVaul-&|iDT zdHy(;iGnD0NBCUn+n{b=VGg#&1#zBv{R!K4JEPuidFnolvB+5!Ns-T%o1>}<;ZJA} zJwmH&dH?aFOo;R2LIuYI4-ous9{jX&k>Ysc$ii_ix_pM#^3XSCVX1B0 z>T9woJ-H~@F4ZEbBQhrTdg_p;jF*r-7LZqwu)z8ly?hfapQ zA{#PPtL%TwPW2Rhh%dw+yrO9(IYC>7(V^*#r$cQ|K4>h#QC&g1Cpuku{rbxHkhJN# zJVyzRU6I#yE)WhMly` zGc&WdJBvMkZ1%E>){HB@O4#{DT!a^cGtD(_DL$6i%@s$Pi>1Y6O6YF!w;bS;urQcU zsVg+H@)NxJdOyto)3dRA(5o)3o*m9v3}HOSbMlLO9{W2!h6?Y?vhp8_6>nzw^^LwK z^yBgHaq)d>xNnm<%%K6F-4S0e3qF{<_`SljZLHHQ;*`LS(de3iC#PBq;U7z7=bdM4 zd7?1S8Gf9qy?3>E*Y;cQ*>q}H``4YC8u?KO@6p+e(VDGGIO-n05#fK$vHlaiM)2XQ z8PpaiHtO9EPEcDUrcLLvj&+#t(sPqbi}2~5-49I0SNWm$bM2o>#vXa`-Ayu?#lz-Z z&gH7z)LUr;77@GMzUs}_Ck5S^6PEGZC{gZpcfw9^x z!W;6X&&DMf*NX4kk|2r~*cXZ(pLTc{hyMCLWa7(kNr2CeA_Ge*5lL z*uq4|&iz+q_Lf|<&>SC$_(h|#Q&o#KR;=0o%vHIe9Xu??nGur>14l-urW?(o`;|EO zZxH;Jn-(=E^$hpMzU}v;Aj7A76ZkcAeCvy-IVy|hdNtn_mZi(`%M48!+uPf-=<>P5 z9mSeolJT9_pLh&cS3K$;$PVNu^8; z!4=<~a$bgs^UH-nCN4(!0%I(zSIm4iY=cv7jM8Q0Dr4MXMD?L_D%G#=hik+?MTrZ9 zkCkd%Owk(XReoQ2aN<3r;%iB1skI+w_qk6MWBIuVi@=ZoA;BMwJAZcj2l>5mFU;|A z8#v+Sd6cVJzrwP5&#B&ui2ep~!OHi=2Pb61uU^h7?xhVJ_9^Ht&X*Jf?&8$RNP(!Q z);v)WlME(}iGuo?haNbMdWH}0EO^dorut0wS>=_zQtzxKISw-HW#odqZENGK&o*hY zW}Djdjknety>Q2}&~zsE=jSeQ*!jv{w-5*tKcP%`2B1>^)PY z&t16p?r3BCDHK{cGqBsvDL&Bga=c56(L}P#_vr}g*wVJ#mnpmKU1%py7{IyW4di2w zN*}J%*NLQwFqYXp@WtHm*GwN%Ky!FfeN)p-i)L9Dxc;%JdZ$3CeF=5$yBlEW%?3PE z)LGCGY3s*2bqBb;vJPD=JgCISpnW@8cE`8zyQijId!C;N!p?iyYA@i7dbyhwF8w%p2s8gf&P0}^yh=e|j(X&3(P{tS?1%a}7=p+VB`U#dk;X219bn<4t%&qJY zsY~ioYE`f7*jP1tsOB!u^RHhY=7dN{R!kSj;*Sn-D|U4W?keC9m9D)q!$Se^vdl zd!bL5$2hdl&IHkAueNYwv?w&z(NN`J*<%~j=5Jd0qx4K;70T?p%OyFmUgFQc)XdLd zzr4eS&(t=Y7C%>!@oerhESd%-cF->6DZ`kLzX#OLsEW6gCChffK>W!Rtjw)}myCnL=p9jw=#L!!@ z01@k=`l+^1&HE8H@!j0Qq}`15xv+NJ(W5t|rKOyL{JPqMOPp+Q)4a~^KL!x)3Z#m-gfK#b~Dk-UNn1VcSGYULs$oCh zUAq_T7Hnp1byBRSoXaY^7^9*&^&$^yz^-%reAVW1<8m`Q1V1%o@8gBOo7S40%bi>Y zbrcY0roWtM`c+UgG2V5|x98$S^U015)%~6cJ3j@!TG*1{80Z_{W}7R`W2W|OtC5b5 z@WtDXS}d;(c06m!$TY|NfW6R_qsi`!*5~#7^<_AHdM}sEx(ypm1qWH_VWVzRDW^q_ zvpgKl+OIZO=6~rkG$}yjS6{Ag_(xnOldhcm&s$q;Bl4d9+#W(JNjtf#a<=Ed$7U54 zCx+w`pJqFs?5ZfT>&V#owFXn2`n6r>+M!zNBm`S;GtIZ7)mXNol zm$CQG`Tnh%q2H9C%+05BJ6?4?9ii?Pla4~jU}N+)B$;gJF?w?tRypv5LFBFG&A|C; zTiYfl`NX2KAAWfliM~b&XU;=KFxMmbFHYf=TbvU!=ek<_-%KV&8;-Wa5>7a?@85{1 z-x*zt*M3a9|6M!G*A7;cu(eSav9*gkK<3GNWUn-S?jC$EDt0YZSy@Fh z9(+su)y@f@PgJk6j>hsd?l#}+a&_aL=F3+~-YFCpCz$sq?%Mmrzl(vt-!KRASG7Yq5UBHAzKhwVJ>^vXJkmFGP`Tjn| znRRaG!f#34YGS*_TEBhjzFS0lf>IH6zr_3EZv*!irrz$HPl=ef`84#W)L|eJFM3%w85(ZO$!atdFHuo^Q0*Up2_EeEVKw7*xst{tfLXDl6Z&v zXN#@BpmD(Y#!pe(BemGlhjkx(eXBUl;K`xIpp2M-x*-i_cW*)!Q-Hz{wZlqy$n|xmWjeEi+x3$<@+E{O{ zvyT0UOV?AggWoDc(Nvy-z#}b>25`t1>>oYtc7;>8Y>F8ZZLpp?wW(|H>tW`m4F?9U zQGMpFGa1|=uZ|pm*Zgue*@|{`-I8B+{TT`)d={GZq`B`?0kz1J(qno*(%*Alk>yrs z;#S%e-fNPzAIekoVr*u98dlxR!WZ6lc|+UPxUxyl7W3KpBm57zgb!8diT%1%q1UsW zc9QYI=Z-Y-No|zG%W@f;V0ww~-}+nMv}i^Q(qEpZng5oe`LO4rS|Ervc5IHRO@7)0 z4c&cb?))*KxfWF_MOo?kvL9kxN6ktOhb@dB#i{I^XNT4HZ)@6vYO+i1X%To+9h&BF zQv+76`l%%FSv^>);UQ-bkZ<1|-i^PyZdH{PVM)12@D=cfI5mN=z>*GOSbZVY0cbqS@lZL`!#Q zLXX2ybSMVC|8~#8P}xm7iMNjpuhTmxAF(y>O{XExCJxq58u`kQq~xURlbqtLXIcaT zG|xU2(rbS|wkKxTODJ_A-(_FmmZVKlmIjxjp1+M)nD0;+`aaRkT{e)QdE$-bJB!c7 z{CS6d3J69qMjblk)_Y5H$5r2Yo@Sa)-NpJQXKv~1Ed-eF!LU5Z=0V`M!`Gc}ZXP-P z;e1sbx9qVSdC5s-0Zj(-hI9`&QY1|Uc=)cDdu=yq-wx^h`t{5+b~a@dZSVYNzKJ?@ z?q^s`MO(duBx#U81fkq1b?12-l}g;%Z`?%$(j;rM8U0``DQ@fPb2S+^X>Bnm&b^V$ zdQ`jdn`OO}2QP#?&z{HuRO6 z{5sSOySJ^SPV(Va5i1eeJJGnxm@xB74wRHIRR)fwRd=9T$)HZK`3x%pTKTo;{H4e5 zjRQ-&Oy_01PZsW}G=1itp=^7+K^KJ=D<3*)7}wWmx^0w^nLg0u%GO!iB4nN6{Ps-# zyEm@iZu7AAlK9FdoqOh-O?aC8UjKyI$Kz*^;sGxA}&20&#li{QeLGJwuP0miw>L`jAF-|~7 zNrb1P$L<}kDU6S~&^#CIlzZvs*x5tsUwgu*9vXX}AN8fH+TQ2C8=|+hNl_sl5-Ovy zi??QQFo&5XzU%#a1{SwSfzz#>U!}g~oQb!z5ZbfJRa9PkCnke`EWa`!1L^H8z0b9= zM47Al$|>e`R&|z9J;LJF*Wx;_@OSgq)5&!+#GI9rV0CCV4ljmWyPSX9^7*l8dk33% zuG`U*2Bxfs6ls~dCACxd*tLZoCw6BueYdkclU*}u@`WjSP6lz+ckIfA@mE``&r+v8 z>l~ResN(GpEO`LmR7;oD_cV2L`kmNH?Jb#`Z*%Zk7L>g_c%C=^%|2hl$*PgM5j5iV z^WiC`NCnvaNZgr;>c{{VY2nB;rqO@_u~rwoZhuia80V0do=;L&a-FDyi-WJjF^7Dg zm+RtAd)_&3!{JO7Pxp{*ATx5#+aUVHZhg(ZL8+@#jnZBH)hDH!o;e43rw5!Djfjqs zquanbtVIKh*OwF7D^90X6pZixfx(A}K0UQZ@=#Kti1%(WZLU$s=TjT8Is0R!&cO@4 zcqhZ@qh}Mk{X%Py65nr0IsRZW-^)E`Z0g+5a5}iknlryv@bss)?_dbt+UL|fc0aL+ zdT>wj1g~J7i(Xc}rO?BNQ6>WBy~(#s8z2ISBgicq&9b?&%=I@6q~5kQ-X-e^p&s-Y zxzqVU+!u>(I`48mW19!!Huq_3-UZ{t&s}sr4BRiIMy1}q@U~-?HW{%qd28pzr0gX> zXaJcLj)z9ddIn1!vyW2Ss6%xC#y(}AuVFWo^D{5(NOW->|BrRmgO;~_Id(=X<=W|d zovY$3Z&mevz9XPIJF!YDJeqFb>v2(@_oq`X2o?*gZFgIDf=Q6}OvT-t8zLoi$MG`h zC3ZSaLX{z11-=DTh}@hI-gUwcTA-0Tj@k;|YeU4JZL!XYc;r`7o4UbO8#C~7-iz_# zaCRcX{l$3S=~JEenKM+>3mZqRdGZ?MWYS$271Ix?tdDe6F5LyWcZi2kjUkDzvr<5C z1MS_&ZC24|aJ3Q^N45KRHpJSRBq~*(3S&09QYJiDTA@%=b~CG3jKUjUUa~@uT+$Op@_j&$p6$Av7P1?oN(`q6mTC z1HAGBT!4pUeRh$@l{+-_EO_^=3k^fLZJ8&ZY;sl5Y*=?nU3{ZNB(~Zwi*^ADnPC)d zP*qXYoI2H{y~*aZ%r0*#A_=#9fo zsqDtT+R)-G@{-1jZc|X;fu=fRdUO))!yEltzfPYtr1~!RE7{!cjdxy$)1}uVGnkpL!Cf;y-=nZE#Od8mbf_Ju2se8ok3TozdRf>CXQw zzr86m(6x^JLurPFYO`9eX3|}ODVLZpruO1*A8}l}&5&m5vnT&H-$-B6UUjVD<{Cq# zWP_}h8S7m?GAC0X+sAHjNgLtaz0qZ%jY(xpQNs1n7np;r>+QTrs;nKwf$RzvCRh#T z*Jg?csWWi{)S`)srO3}wD4{n|TVgd_*=8rh5}$rQ%k<@4w_n)X%p9NO2)*K7D&NOp zn=7WQqT@bV(1|L&F^~!NC^*oi8(yd^hnT{y57yy{ODSs)upc z_#E`2kG~7KSr`$gDNIcl9=ty%*ccjlkg7NBLPqeflfNFp4sD54yd)?lC}enT+&xIZ zG@|SLSbzJgJ1s#U)!pr`J12MZQhoAfIw1iPnyCR$={Yu-o<(e8^|0)wv?|RbM;ufR zv~EaBmETU)YZHC9xjCVGzuQA*w_Sx1^#$o$?%bUpx%p}Rkm-RJc4iQazIc~~29p1J z(Q6~&oak>-t-=P0+v7||Lz*y?p8gjLyHlWkMw<#= zr^(`E05hFX9)C;!__6&4Qa`*tzm<|b%0R7ip}O{-^TKIVQJyMNEo%;&h&= z;afoT_iHl-Wl4wkjt*rl%stxptIMtDOP%WcyNh8zFYf17ofXYA(*9O>>Vv@7b*Axl zDWAFsYl+~A-17D>5S5Y7)4$@kV6=YFXtjSbw5?E1n0F}&=F6R7P)8VW3K?&@x$O?5 zDIh`PbSzE{elOL<@%H+hxxQai*;gv&jzpVVrtVE?_+kIbYSRq8%lCJPK9rm6zy1(V@DMcLgIJ(Lq)%c%f*|#v_d40{}{~a?ya}GaN*HCITb`rO_&OHI$e5F za=_-A4`Y|&fXCn+mr&2+ZI>sM-j$xy-d-I$^=Lte^@5voNy9ibG2T=OVpO{eqs+fpo)vE6ZB^^>SN)-xhbqL*7Gyy63#t2 z{@_Yh%zlX=FSEOJb?Bq>ok;^mas$%rw*J$vIP)I$T(00T*JjP*roHqfcI#$Yr2@Qn zMjPg8#Q3$!a>d@#5EIy7lWF-b+V)n3z87=$-LL)P$5fMydAf8@+GALIUB-0P|dP0?3)f%Zyc7n7X1m*H_Nvsy&xlPj%o(YZ~BilKUs&PClitmR)~ya%?yA?9$kBx0LV zu6vS!k*D^Q@M}J*?4ej&PUxj@l(Au2**uRi-FgXKh2nxI3X|L|4n}P$(6?!ESJC0< zW7d)$(_6~(^L?%s2eDhd=yESEp73H;(2cGC0J(b0D^Ie-;wA#B$H0w!sxOn)Cg$Tc zaXaDTMEip=t_$Y{?le>~wReXm0vP&8 zVRl0~i|wz1&~Ie+RWRI`+;I8gwS)P|-IFHQO7G{79Gh={)sFn2f#Q9}^<W-stF5Gaf{G9F@_RER>7xRzjK3(PLnz|jk zPjH)F>+G*?Jt1vjfkP*3{7|oyv+sD}0+Sl@;|-y42U>|29U(Dl2CN#GX~VeYwxqhQ z@`ugwQ922aO`rD$${ZiKhzqJrEB=OXH@n2c@VrmHizede308)o){GA(19|VFE_~%Y zol+#w-mq6Z*~Fb_*Sr564t|#yUN=1ieE%7}ykqJiJa^_Il&E;1kh%URN`B zey9w-`KhG&8w)iJbbHcOk@{pi&l}Vc3ui+`)*sT?a?e-l>qh2o%%QJv&G6oYdxyrk zf4zKO`H+JpY_LAdq378FE0AoCd!ykb#IAayXGa8xyx!vSE03wM@N3lay^9KdK638e z5wR9g$3a+=jS=5~Rf}O0Bt(|#dXBq}39`m`TX1;pt&Tf`K3=i)Q7516jeO90`=yF4 z=grHP8%GfrZzPo@)yZenZ8*CQJ;ZQ|`g~rhIg~XAF(ZdP7xT0?FOaA&GaesO>YgKjsW~a9t5=}=RNQG9}j+|rY zD|NUgmnh~?&&Xzt-R-&U0ej7>;uC3&oMD4i2|8RjbPdzwrVp`F*|e;sv$lLaQF#v6 ze>rEi$xe5OD1NXL*kdZP$Bpw>UeDaQ2$o$^dkqv{9W-6Iziz$oefC&qpVwXebryZ4 zFT<{mx7N57InDNzWHqWxkKg4ocT>(EyLlt!vnwqm37$3;e>Y+m;&Dj9r8KGjPwS<3 z)ui5WwJ@{4>+|5*hJ8hQ=C+Y>eqGf3YDvdGBS& zk;aNEZynz>-b*z+!o&YTBzpQLb9!iA#3DKB{puVt=(L4 zhr}l@OKp3!QIMU6<%7hR#5uO~QTS!GCyj$OFDx_eHd{c)>RVk^P{%Hc1@6#20i81( z$?>jeZTjj|dpX$m@^|$F#dw>&@LYKPnbhi*ca=W30#BF={n#$6wcj%A!%GHg+Ng>9 zZC&zC%7KCKWZ~Jk!|_5&R}2&k2Dyja)pmQUV~)(k`0kdIiC%ZFsHl53Uz1I%E;e$k zxDt1j=QXFNhf7^1cJ`>}2fwQOs?%ya8w%cr%Eu>kdhYx+(*F7lY)ALEXo0YCM2ziY z>+e@A9zPL`C_#Nspb?z=dUfYdoT^~>^a6i8{Z8!Mk1r>T`rW>MI!ss_)4SzdHa>MM zmJ=p&a3k~6H&>@#nGGurJ&ZZSaeesowYu6K zqp{SfH^tl8TYmh2XMN$^e5=*J z(t6gVl>Yv`i978D{Is(8{TFWri8_exzjR*=nPI^ZAAK#g@!cd-e2H~=v$IPmdaC5e zAT_hoLaw5U+M!3qTP!{NYt2ly!Tr#pUsIE(HG^#68*n^f+M&bAVMB4JXhn*@?8jNS zUe7HwZE<1HOWMf(;oHRvnDFW2Bg0q1&xHzPyF-J4)J zAt9(4Zr*?Q?d{N>hxBscJg5gYJt4g>)DHKSSr5pie%?R2mHt-K&Zq76F&>zRovqp2 zrkp}^_DDJVw9DBSvm@VL@GB~5_f7G>Rt&vz-QdJ%L1)d_q;9#~)u$yUPb07KJ*J~Z zdR(FR^}p0{P*w}$aB;rkS^Q0B{V?{{s-1W4J~Gsmb~k>m@cpr5j?j9iOX94y0!Qj= zOy4HFK|KG?P(yFh^G4MFm1k1)Fvpis!;rKgg@+%shTLBKqFq<|&5qk_L^@u#S8Bam z$kyth85x5^?>t2VVvK0B;9lJb$@in4b~NXy2Th84>lF?k8~TPc-hHHAH0{K-azm9$ z5jJh(Y_EWWhoPxjXEC{1rlVIwS?V_pX44u|M{nOGVU_p7xh-1{zPEgz#>IWq^N$}J z0+maSeD6DSrs?{Zsb+fX!E%OO!&>uG4M zKSi^>z}Y!f;*6j%wYfYCd;#MRVGAzTD`q3uP(}I@M=$dQOCLB^y50Y!@O3-LKoN~j zFm=CGpI$YZPv?e#AzQ?e6ls^B{a4?4C|fk;>2`XaFu6f%?W=I4HkP)@fK5f;wwVT= zXfKILdqItqokjn6vrWu))<=o)?l%pcqHr2msp##1lbq-w$@3CZC+e%B_~+S58@}WR zUNku66#s47`u%O4-6i2vJ=9`3bdcRwWQL?n#{6p;y!21ATpQA{50x~!W?&L1vyd}_Om8#R9ZikLo#-P7709N41$GflSp%`3wg8#U?POMR5F)eT;_oMQ3KOObffGz1mA9bEh>>8~eH3 zJ$bK7(w$pvv86>1excklFCm6sdd^=7%ALO^z=bnYx5zs`XokEL2br3jI=Q#x`qq*$ zZG>iMN$0z_TY~6;t#44yoj-TG7LBZb-IP98`b_AoN^Vl?me_B7j(J}4lb$BooV_#7$GZ0P z(0U1PWIJxIHhXh=_G6ROq{s_5wq|zTxTobzonOoMwPvSdBIm19vkiD9al)v*PuN3D zs5?A)ju$-;yP3T{xVhO>M$Y4?o>|6oh|V`GM}_Yz43%W4{)vI0mwE5{?^GW(V@Xpp zN(j55$lP9;b)5BWg$481J*bYn;@kno!S4FF7#mszvz*r2PP^GtT-4WgZL+=?pPhR# z^dl@>lV0cY2lf8YhK?-U3-vK))ECoQwubX!SHgEOZK|?1%=DdqF7SFr=ruLYu*S6f zMQJ$-$Dqev8*k2i4mMkxk4SBd8MhTsf=Xc&@6GW|UJYjxD|Oob29yDN&0$2#sa; zwJVYnDf!1uR9q|>WE$L>?DkkNi>W^zPMa76>ijQ|Pb#ANSvp8BpcdWV0{2@p9&6yTD15u+* z{KG-G3C7e46$Zmx->9pTA}QNcNGYH|KH_b*HlmnGK&YM9i zYw@Ioc{`_fo`OW4dX9g>t>_*6&N+wrzl5$o`;o3QuhXbfv^nnFw_s<%i8x24b-bz% zes(wwe5kXEt~W!xzwqObg`pjOhg+f&ceB%U+56Kb?MYO_J5XGc>rFQ&t+x~rs(#TK z3$fMO1Hamn&SkWdZZe=c+{cu6Yb*ovk^K;b;nUCBf@-8Of!e3L>ZZ{(wa#DNI_$z) zADvT@-%MRMiRH>iM6rK`w?}*oDffTZx3kNUd0;m+>#;}DJGxVAavo1R1o8u z{^+}2REga5YrYQ)C@r?x$KdeXDev;JO#ZN2QsAhlEyLiDAZ{T>S0K`7_{Nr?w?DM2 zzBoY6in6C|xzf}Wc6RzFk_lh(>zx_W-kcPymt_@4Waimyeby?D=woOVO;p=+5r z3VhVOQ5PWleuip8K9#r6L)`iI%+K!2Os>WT^e#ve5 z^Yfji>2m%3U7M&vCgh)M7>uydTbJFP4oz~T_AxerFSMO1yNY2bq?O?Q4=C$P zncZ$SU9IcQj-77C56MVGF$s7z?yd3osym~0VzhPhbxptY*OtxrBs?GP?5(yBU3op} zNmr9}B;Fke?Ufd0U4H+`6kJw%tlJ;GqU&(I)81l!CQe`8qvJ{! zyOR)g>DU=P#p~4$SIRz&90N1R+zH>Zp`fDf8n3MvV&8ZVnw(UfIIEOU!NFLeRIbC5 zzSUu?n%R#}^=ENGv#%U7u5ib1&kAVH_*vjuo?obYS5flE5nQh}_WPz0nkRd<8=~rmHg#T8{We~B zET~Cx5@Xe>SIah%#a*A*Y{NXHL(6blQAEYR&oHzviGI8_&eFx0`AS^-Gp!1kQhbOp zFSP+xnNB0UoLlz`jU8{2Io|3w*A!ewW$@7W>i_g++k7y(FD+dda;wW$le$lCx7X`2 zy3Nh6Xk)Gioz`)7Ze%>`!6`3>dP^k`ocGciN|%;j^e%o=*cWA=+Lj4imPmBcdo~?2ie)Ss_E#dbMi}Veh^%E(Bd*Bd#~#~#87Axkf!ilK11@dlll;Zfm%VeGYM1&(r)YV_ z{jSz}>E_b)B^CH2(UylXr{EXM1PWB`0!s?+75K6m`-pEfM1mc@x7nGrmwY zh(w~(vrX;lD*H#=4zyOz_6l}0K61Knza7?mBQSZMudniTnL53{FoVUWu_}Scr0a$o z^Z8z16rD)3MQ9{Xg$4zs9Dj?u@f22&*eM!Vh|t(m_;73!q%C2X?YTRXo1SKawNQ{y z+~vo2_mygjGRp6|^y*gvt%3dA%P(O&57#${tbcw|Ec1xvW?s2qIMe$Xan{z&One=6 zT~YT;%slw13ajjOq&~N)yzAc~@JqgUU$;+7XX!+H!q&qb**$bW!pohn`nGMH;halp z;|2@1r2Wv_wh`&ysxaGIZ}YLOk9qK=U0a~9cO=_F{bgWA&h;M#w^ZyxI-VUDcB}0_ zX(8p_&T;j~^FBnC_vQEk=g6iU)2DS;Qz!ORZt{9D{dhfHYT+yKr1RXn;_VxzgX}`o zlg(5ZRqIM{c-S2Dsq8Ipmr6Nflfu>;_Y2uMI8kDP4U7rj**n6+ zu}v~Ip+2zL?5!`08B}at1o*|?l-8->15c+r)UgPM$2&=HP*IN7Z-EJ#0EM zdDn8s^qD4S-HV00inwULV5Py4aV-DD+0gW=mmuZ-ZlNGpJ%6BX%l`s!K##xn{|qqo zVaj48c^-=LM*uK96JAXxz5td06#wSu=O_mzLqG{rQx1`x5;iQr-HF?tL;AJ~azQz+@_@q&{)jA2^j1Zc+#DhFFHNk^T z)-m8L)0AEUc>$6SN*-`}(L?i?v=%5{D4&J^PbB3>1PLfrVngK`mkU`No*#C^P)npK zwf&f1L|NP3O|Zf6$+R|GkQz};L*j@sjz4Az@Vju~aU8jI;Dj^_&o|-`2BX9ndBhynq4qQ`b;tJB_CRUqmj+TD}nxiip`GW%-0W%}82`vhi$b_e| z@XlYsd5KO%Bm#Gxr_;(fp8PQDI=gM-#+|NxGWMLNk->~s6-?OF{EYRET(Psm&)Vwb zoGtil=ADK6O95bOt?y<(qVgO`lRv|8a`NvG0Kr*0a&p=M#6?|c05hksuuQE{@nOZl?=@t=&BLwW~uzhPj4(h6V(yV~MNz%M$0r$bdenKJvVU~1;8T=v;18KzV z8}?Z1`X2lnn5tB21eITf4<-3JDI6e^Q?u{#IXm_ESL}sH@3R(gy_RBoJo4AfRMH*< z{=QE`?@sFw;PG={OWC@Poz~XU z#`=iOD7+I8l*D>??;(55YYtnQyof8ki}uv1^OVQ9XtT@HM#)DfJwJ5+U%KgQWulS< z>zS5_jB;VN9tp_A>+5O5{Ase5u z7hpSo499ezAsTmVc61JMkp{$~{`#gSO}p#JhK6TnChYJ{uOnRhMhDgjN|iKn4G!M8 z-wy8D&b<<{r=J_LFMatww9Qcq()~_MPV3uhEQ^ME?(9{2_=yK8s>$`39cF^961f{p ze#O0);{KAD@=fnM?L?D|Lkd1W%)LbfM@vpHaA*nPB(WsKsIf7 z|Ni|>=KkDYe*9Pd?61Cf?B07nZ`=0n;9k$;AP;FG9tRQvWl5w0#?k%(rii`j$RZd{ zp~5dR=QUa5yKbjE$YydksAGhgs;0gPQvx~#gy8`{^H>lq)pzBLJ@?rCcKXQ&t&5_1 zDk&jCnI@@F*~9`qX%}@&)a2&)0H_35p2X?-T;$Kt#8GpYwfr0pnMyRjxxh}uQ>$rd z3C*k`!Yf5caEOVPY6xq6!{H-#_~>CbcgUqnv-b4KQ+5SVl5M}P1>J*6u9=3g&Ezn@ z431f8g0SN<5;}ejC7`95_hNCPk9DdPjHW~Qs@|RX1mN%@sCwd3W!kk!sOd*(oeTYFj|tK2!b+zt^5 zKr3yq#8{zVxcX(lGwX5c^KX?&rlK-O))K71+$ytk9D{oW2jAG+%FKOU2)fga)ILUV70UC2Kwd8Q!pQ8~2fjU0N9LGG%drAk+du6E~I1!BYnh9yxa6 z#3LU#PCivd8*#VP|FS<70{LGswA{~3NawP?L>_y8{TF}kPvXh)o?rWo_ggj`D~w)z zG?L6pyKi}&H8ZhKiU+`8n6fxovGpL^8SwKUj{9lMBO& zc_QcVv8YP#vOo!d6KT}fGuH%!p?y6`IgZ(D!nP77oUU8P^DDwMmw_Gx=%z|M(~2IV z>T9ry&|*M5$Hd`_SQ-YYjWjViiv~iQRY9wweMLISajx=dL`0AIi-iCtzXX)Q82N~>^Y8ud}c011i2 zWx_1;oyNHq6ikFcs;ikE7-7Sa3g2~(GA(6No2fF;gztf9Ei&Wd_@Qb5@&-lY#ez1M zEn0uykPVJs#mX46G-Mr0p*cnIPb>$S-Eowp$z{s)lX*@XRJFIN#d-*iI%*@m)<4el z#}%WKhpSbDJTD&ed4p9uwA=u zM0inBqclZ#Eg1S>1afD7kzklHI(F#LtA3yu4E*HNk3Z}RbglUxJ%(nV%JS_QfeL|q zd&covE9LUjDro4mj^`eG=9gdds(<%^-8XI{!+SOtpBs+s+Pgjc{Fna3dT#0j7yua*l8wX5YM( z1_VSL+D{U=5&(yW`Y>-?whhcBzC@j;7#c_su+K54M&HnojZe&3H?^0ltE0{tni^+9 zC7i`exka18hth47wMb#3r%y74XwH!$xd>s*6g9O?ZamXO8x`_^6eJ_C@*=I|nD?Tx ze1gz#>X!gri$43`1;YC5ua~(?8jSOwFp9Fv%PglwT7$nhLII!{W!lA50)YEkgosGs zt#)M+6Of4@eDjzz8)+NrpR_u!?}~I%=&~Z%^qYJ*a_;+N#Egf8VyiDsOX0XWo(N6X zM?|BExaM(0Pvd9Mj?%j1{8pPmB=Xi)>X`xT&>E!7^+vjHXIkQ>Mn!D}AdsAm%#XWm zrJ>2}nXZ*kpoGdi^R!HG3>@y9i;@cIpd;gzWhTm+@27N4GunuP9~RMM5pJ&CBTVxP z=quqN4M{?+OFYLV`8qlWg3xPlId^eeAdFX*7}>kG#pYZaeHuTUyl{ri8&QSR^ zyHK+8XP&V2_*E3r83jB_NS{H#c7ByMA*AjAbE9V>*s#-fsgJPF*_;i{j3NO~+OAwD z`vlOY$V*UtDZq?LOqhHrMm|7`RdHw5)lkHb_B_*?2gm|zAMo`q|BS%i2U-Wf0GQT! z0PUHl94bm)1=K|bIw!Ry&A}r8-a$?gtmiLbK-irB4y^SSWadFF(stCg2tt~ZjwP^X zlo(eo7UCQm?9(P+yvym}WvQBC~>kdmL|hLn{Q&HdwT5 zXnesgVK$w`RHcyKbQ&#(KB|D@=;&ovtv5v#18H~ec$gI@r)Dk0y--cT#A<45Ig?vT znk^1+&O_TNdQj&v!#poDY+s8;)V_Bgnq|Qr`PfJ7%#QnP|Ir_?bz62rgqo%|VCh(` z^O+SOP8i1$+z&Z~tgl|YYPj<3&2Rj1d-1~4_ViPaK_Xk+d?fN6>DqIfs$g`K`x|Y9 zOBIcLVE=)e?}(KHKlbR;kDm85ksVx^V=qYy8tlsQEsa2hK)$76``Vo(*+3vpj2-H~ z@-t_y^#1PTna>9jiJDwZZ6 zut2sB8~P|(Q=!PzsF=TH-YteT4?8boh9f`PKygveUEj~eA z>kAu-@U&hpt=GOHUrF`SdStdz|L3Iztu-v4i6Xl^Z9>sUiiGoWaMZsz<{e4+>XSz# zUbLCOd1Zx?{1D9O&>+(bw@3|wOvnvd<@(WwDuf3GJIM8-c~1)Y1xL~~^$ph6)IfbI zh#$Ti7@EPCGVT0KtMpq$C=*-?O=MznkXl&lITL&zPRkI9d68|>@FavtE7iE`9(qYL z@qA^vhZNN%e~G3ro|&0+zOs%R4>2p^qWwR=|3TZf?|>b+^$yCzY;(^;4sAO8r@5{_LlZ31e5-hN5&p~_ip)c9f!$Y=>ioY`LQJK-5H$qaF@h1kOm_q>B z54pT}X#bJ-potKv^(jA6%TqmdF)PcrGy)X@`Id(5+D_NiusT|EWXE%VKG1*Vj+7jO z^K*qX_M6`R=iJ7-_UuCHQ@nlBdMOEU;@Hf4F=J(ywp$|=d+U&L>l+(wY$k0m9i|kV^W+0GQJAr|DsFYu z<(gnzvMbC+$ob@yQBD7bnNl@~7A5nIgLeMNC!zC;XJJvT;&JRzUqS`7Bn+yCn?N&%HY?v(Dl`^MIb@Krkh$@ zEx~xwOGqdMLDvG*(i$*dp)p?SAGR4xSeodns84k|VR3)C5uj1DVBq$8|im z#jajGZ4E6O(TpUYQbCmffB<&t+GK#aLX=p%)IIc9>O0wR3?P?3aZYxn#L0&oGH`UqCImro7?egU`M z^_#$4z@>LB`s~Po?^>sq+VTNk`}%~T?etmiA{T9^Hhuqw*7+KO-u>V8uKp-4tWzMXQjR zEXbUcnxU`-6IDGv4qe-6#(NL}M7bOU|6wvjZUQq91|w(UlhzbR zuGl@&i2X6=j|`P`j8#?{yS~g{@bmoWjz{+f+x7v+!uNBp+ejn zDeAk;5c0b;=hc3TP*$dw@ZVvAG`4T2;xs~uo{=^G6}NbZp(_?J7v52dtzJBE;PBg@ zdg_V$IJH2bS(qUpo7=edTlb zPEI{%TYI)*;0>cmOgn#ss;DOMTeuPza;5_CdWZ#da$e55T2xE!Ar~QKH0K8ozNEt> zHgb`HobhUJMlZAt0hf;LO+w^V)0K^0+KCU;k|br)TEeU_Gd*sd-8Wc$OP6zQM?-Ny zs9*~#NSITQ)<))0j|ZJ3oT#d?IVPE!qi^GwxC+H~_ge-(NCZhzVa&3p#OPa7TRU^8 z8~%`bdZ-fSWVZuC0%a`%@aqXcz~#TB#i)FSq+XqmBx7y+4=rlP2Yivp_1^`K`Yyus zch`5dsdsI!&swgv&w6P~%13ly&oznT6A;-r0%UA8jv^NKoolUYp~abv*4lHL1z@W_ zC_+oX>ms+-2uCwa&M88Rj^#Mdo^3lgXMjBCk(vBTwT*RXEZ!qNK1Hs@vLtqb6ae6M zYNll})b!%GeWTOXJK1N!962jU{V}cuvIe&^wa~@~tfqm;E(r%{GBaHF349r81dzr? z?k6fc%j~Ih(m1P_Wj^7}o~ZBR6XQ-O5s@eaTv1w~kmg=d0Y}VUXh70*#>OTPWTvc+ z>%DnTi(Po|Z|&5Be`l|{^IZ_jO>XJ|9YemIFodGWL&B}BioUhJ;F%1lU6yXdHQFrrUq` zHf!zKY4N%?Ogx$+Ap>!&N!EbM6c6r+hyLEa`h`zecV~y~*tN%%F_DHK^<0rRsgy?^ zdVmG60yIf?a&&v!sYG|eC4vSrJ(B@IQur3sU?ERZXpvgeW#Wy@d96HP=`^aRr7@=BL8lT>3`QD~^zSzVa5 zp{X%QW{XuN(U@v+_A;5(B7P8+!%!caJ34LshEB`iA5q~%j1f+2P#<)TA`5AB0$LHp z*DoRkpKJu)KKTjwrA=tjyMWv$0sVIUOXsLI{NMFmziZKFy|nnmqwhYcXglra<%3X> zSYyYS7vylz9pZ=rEk+J!h|`7Ta{cwLaaX@27-*6CP=`|6I&Yn?uAe5{QqjflW zuQIkdf-B;fEtMmrF-;J$$7&m%CK?YPlR|+7((N5+p-f+k3}AhOleRiL#hmZ+WOrb0 zLK96Wgmz(yo-SA?+29J%RVfn@vpY89ez~t7A4!}juX-AnlkvQ6B2(PX9x*4VmzJNG@BFXN>p7zjfm z3U4R{NZ|aX!-tL>$rr+RVbYrPpKZ5c<0>ptif&*ht>f5?dpWb(F5&zW=q9Afa3YrmFfT9Oamj za%A%gGzujAJ%8ds`$A>7 zi+;a;AHNN)^A~;gNkQxU&mu*Ew}9U#2K}zjdikWG?fu_1cE0b3OxCtVi8kFnCh*t{pl$3eFnNO3| z%0%~SW-ZCgNS{^qT|}dE93CFA5ObnPyVV>YzJEqDQ^r@~TtAVIHwVl(psq+UMF+}P zqOjvqOw$Ojxch0Ddszh3-+z@{k2-QlNP^}2pZ?Y_+u=97+4dcIi#0Z{bHNr8)S}I; zu2hQ3@29AA(8g~kzUtoVi$@zwEd&yK>h;S z$em~-$JfkRk_Y8oFA|P@NI*`wW1f)9 zr~n38(uzzdR72=#ajtA*gZ)lwlfzPVgjNB~oA%vg>o)GQM18xZnJToVsUAYW5sEyN zz$QI7c*!36%*XBA$w#dRbCp1JVvIULlT%LON~38=a>F?f=`bl2`znWGf@x$21_zyF zDu9tjQX@%k&Gsx%lcYY4<}f;nNHiyq!W=d;HjISn6$=!>`b402|0QinziAO+XuTGlhx+FO zwm?_kH6Hq`_1Z=+efRhAKkK`;(e_%@uD`FpPVaiDUH^A|R-1lb)SkA{@BT5>p0@D` z#qWm*LF>RbcgrJu1V#S3e=^K4*?>ukvQXSdkPH%c1_yan8m*76 zkIgPw|HzO7=4hk}a^ZTQ5h}cRYQKi@I!`9;)E zEdptU(aJX=AQxrmvria$_u7)i;AstR$F)EH_C8^_d=FNtPyQnE;AU{+tQuDeOBV2J zAC0-*wdk|9)iuyM9ozMZclAj`qVF!c%}M+U0Fa5SKm^+=fQT89c7mK!YeySef&4XS zv0Td((tTSij&2e)*@fJjX#|*g=Zi^kFV;5#?u6$O)omC1$B1qkp(R3g(J~_VKyoBRlfFRJ)whqmO=sl4G$4qm-)KdaSf`k{YtJ3ivDY*XfS@)cBhU7f2Bk#jYM6Kam zNfIQeLmG+GVDN#Aj10SWRP8`xp)v9AF$p%(%*L5CEf$+4%51&W^ZOU?`E9%M>LYgO zwjZ{3Y4Y^BjwuP^kV68}nWy}ZOtI;XCVTer`|#i3yBQm^6JtX}d>ughswXZ>38lLB z#>F9Q4MmQ*-#>Klz%BbuJoV_?dFK5xDBjJZi&j~_VFW4!@(n}s(hA=u+TGo~4o%{V zB>QbgO3I^gsE!rFohQu-lr;fQ{~$H21}GDODS-RYk;nc$H`xY?+i4omYSid@>iIC| zhkNKEJTU#2&!TnwgBt@DXP?dbv2yMRo;Ph--WzzngBU0n~lKtjJs zGSs_X0y=H0d=Qb*3?Q+Fhc?xB*|rmxA3`dO3NQhrP)J(Hv@IZ|Cdp-}=9m$pDpg<* zyBwu4#%&?D$x@ij8nD-=0h^`SQ66gMI-w8E?QJ#=xo8YTAad?27e+)NQczz6UXs{- z5c5G@fUN%Nr7_d_iyS1i>$6^3{NEJ$Bu&!WPuJDcKD3Pw@YjEqR-kRPXkQ_bC`lp5 zYD1=-9O29igzK}8r#{QXsr^JMTIc*te0I{e#*IG6>F&;z&xvxvwdZRqGARn|UBzCG zH4WLMa2Qt#e$t58NfF& zLP$1IQJ7h)lM3RXR1M+T+j}+=MvbP!byVNIB*vU8Gb6CCMU&CB(Y>Va{xwk|p-fh) z+AM)Y(SFU%OkWG>cs?G8f%{XY*Es$WeI7(ul9Sz!*ph~;>#Kkg-Fr)H(?|GwBjnd} z<9^Hb_S;{6=-u|Zcf8xS?!1}fQ==__c^4CDyen!miI8>SUrX0?Fs<-IHaBt=!6t1l zJo}V&ZzTB;lb`N~GGoX+72*;Scvi|I{Jibp!CQ6~i-9+uJo!lf-FM#|dDmJMZFjLN zf4*h}Dg^R1!*T6P;ONn#q2p*CJsW#&kHn&%#o3u6j4+3$5p|i&fPhL<=t0-aYcHNV zM*+HNSAS>)bCs~=2y-JeckLj=vWrL-Y7#Xx2xqLseq|nQ%3I&+nJT8)i6L&mTwrpocC`7>ln7(?0;8ECF_ zk((q%0i{nI{&z`=lI{vxm%@v)*woWR{nVrZBtkT2 z(VWU8B8p@)5K1UfjmaVJz)0sTq7aDcB?(d>pqKioK1&<$0pDM*bJxo!6m6@QPabMl zW9w-WAc^Ax&jjufi%%$u(vo>h+ekxTLw#chPnvZo7OycE zNG?(=Q%QRwH>VeI^CP}O~)c2$l=zKGJ?B-0kR@f!sx^URq7;U>@$ zl(P}VOgWJ)SU*0BTn-I{`fANhwbsa3haso2*+r%Y7(w9CP06HVXg3ptjF%YOD`%eO zzEh}h#Q8Num~wJ!>Ra_$n%o%on6z67F!HsjuX^bkMOVDQh1FF}HnwVK&YTDQAuo~_ z{p%ECJ8dg-s@hcEk<46Q@3+%+(irI23gD1$v8komHrC&0_x|zkTJMo(Z2#?dS#xW* zEAJxVLt1buP97B|yZvb8!)H&~*%yvu(n`4;tSQEA>*gKwm*5k~9^ytuDJx1V$JlQ# zmsVfA{r1{@1Bs?($fMBHv-5wWoWma|M3*Qa zY#%r}_*I}FNm!-JCy}sEzwnG}C6UY!Z8K*bBu8!A_Xf+ft+#6Iw@pp!c%TK0h=V-1 zqr-i6@2CEUT{wNhcJA1XGjhfHdoPpFwZg+C@b)wW&o)eA82d<*7#ti12xQU{KxEJo z2#v%{pfV_Wz$Ydq(Mm?#eAEJenIx1mpoh;VBY}`4#SuB&AsP{ZW|@<1T@Sy0*Si2q zAgG60<_Nt6TzcRH7y<#A$=vpQUY?ILVbzdD3Ds5Yqh)5WL!h%r5={xS-bM%{Lvh81 zMymHhjz!L6iD;|^h$I-SwYn5e|GFw0Kx%f9b`{1tc{%4Vb$U*D0=$y5!ubn8z!VwVqr>n_@sK6l| zY50BAwa}s_)UMicevP%`_-*RlJI-1{A;;0N{B31M6hL2pPS?N}^42)iwl(AbXmRJR z`zwr=p)sz>B)PU`qlDd#aK9;RJdVI2l1?QFZKZ$x%q>&I#2RMYXo}k#VS)9dT*tn? zD^^`k)o0GL0c|wH{igd;eRHITAhFCnqtDWYrIkw15%{Z*x)uuQ73fEavQlj=nL9QA zj7+U9^x54%+@BIcRFXxShy()#c}QT9cB6aPCwlMNd!y$lSny{rQJ} z*533J@1&9~)<#Qg*J9XyFmHR*XTOa)o@A;4K`9rQj;MlQaL0;a))dj9B6#}{b9yn@8!^iEo zi}&m4+3`F09NsI%7NEf25sbhW-Xc)o)i*dmZL15;WK$+NOXRV4-z~Oo^9}eonypqQ zE2Kls*rvoRIqyzA^N4-&k3MAUNy^?!?EVza=OKVxV4y5=5BMqX0XPe&B$3I9E_0NC zU0RHj__*nnJzhYQ8D+w$2}~LCU1)z-x&*0B53>I->%rHw1 zXaWU2z_Ucl2zVrQYd&q~yoa!4l5kE>wpafYo;fr$N>tTD79oMFj7?hYm)UOx+xx&I zrm;MxDvI{CqTy5nVmYF;mgOVKD)*!vGZy9y07_x6E}NaAei1;Zb<-A`?z>=dN`Nae zNsGYACkFLhefCLGNrmwxvE{3W9BF0l7kzxjkCV$o+G^c7a@ z2N7^9xZ`=m<=rIOR%R-{pKd(X`YA%tc>9YaaGx}^j?LV6^;3QHNk!LXl02Fa#}?2l zQ#%sFgooZDUzt4Sair}QgqCVdhC;eQOp}Xqin7A_p2oaI^i`7Fi|lII&i9X4ev$BA zj<5Sf$t%)?W+z9{P)Op$hqDO5t8zjT!9gZc-7^www7teuebPOkm+n!4zf4gg5_fNL ztzvNz31H5(%HbyrrMrbF)HlBY(zw4#nW%^Sa z+P;Ab#67ip?aTLk#D;Et!S=uQE&?{zlUu~KATU6h-5i7)fT&(e-(Gm?%Wmewh%;%O zu%4~Eh|+376Z5JuN-`HiUxA+9&pa`lg?Ql*wnrCGd!esD03C1; zb%-Xx%yPqPf7t5RZ?Re?dXmX1&dsXAbkS-eMA-I;d;f;%WdGK7Z0x3`0HKOk0NrKx z0Qm*z^w0@h1cZ`4M@I<*=D^kXKk5KpNo8`9%XB8KV2DuJ>FHS>Dr!gp?s~xFYF*7At3OV>Pt~uUf;ZIVo9CSjO3Gv zP>N)(x6k&F1Cr7#gFqZr?Kyw5DV+R^IAj~p!fI>Kae$Rit#qxvLInux{+N3|(%)b-IK64SYgV6^C*b$&8c&R{}nUcVVfY6Mo)&>dz&UAKT_2sBw!1Po zL{j3kD`%p6*K@YZ(e4qFu7Rpa%jvFazA~}uI{4R7_kynb@X(OEPdDDM*GA5tvCmw1 z-fq3?f4A=K``p-u(~ypmBMH#>@(TY`F=257_&3D5b?a)Qk@)>c zx_iUd{2k!89)2Ed*70yG;_tX%c?uFHm`_}j?R2%Svpu)mZt12T%rlMTcBte!H!L@J zfrt0%`4{Z3|N93l!~7omckjVRF@zR?tr=jb1yo%O`#GwaK#39L0?dpNnL#%BjMG6em2LaMF zVU9C|+=?h=Qc$jm%wqy0RpwQ=urvdahN5vMAr6g+`sauX33UpRSXrFKq|yPPdf*+v zO~HiGHOUt>*Lr#v?sN-fVry?^Gbb96{R;A(@98;q&F22Y{b+taq0zU zj*(WRbC&~O0OU*OIu9+%pHSqE5+VgOdg**LNFofGA~g=uWF&Q~|C07S$F@flta96G zy+}~MiAa4Q*IMmY#LweRf6JLNh5~l^G&G*tSHPxsU&GPw`mA+|q!PiDaa?OYbV>eN zuYP(7cAkbJpw&y~;Y;4?lN`}5|AS++wlf(N*I;ESM?cYGA>Z0+t}%Tcnp@;P8L|N7 zWuj;vDxO%6iA(p)z{HHL&QPZ0f0Fm!VR~Knedn1znBFlJ7!;!SLa<5{i)2w{Z8_3< zV<%ZB8?Cdu_Oo^zKaOK-DJgawTb6bsXZ^?}mgLBkMTrt6Hj70Ni&z8@1jqp}z0Y7e zrUFwi*w5!2yt4k=Kh1K<7c=v|_r3SrQ@-C{KhAAP>7jw`@-zlVA!~6Tf9#R zb5C-xzioqA{>}jf4NX>#y;@0TPW?2IIIji=hoXP3>L=m4$wv}}4xY{I`Tl_+gref8 zkvKoqVAL|bmiP2JhN`bJe^YRW!5>Kzkyss5wcsnPn_4sp+5CI|